What Arkiras states makes sense - because the branches and leaves are scattered within the trees area it’s hard for nanite to reduce and you end up loosing the edges which because they are small, disappear.
I’ve just been turning off masking on existing low poly trees and they actually look pretty smooth fading off into the distance - but that’s probably because of the large areas that would normally be masked out.
Thanks! That does look good, I had a quick look in the source code but decided not to play with it until I learn a bit more about it - will be interesting to see how it affects performance…
No, the billboards still have masking and subsurface shading so wouldn’t be nanite compatible (yet - there are versions of UE5 out there that support masking and WPO but they’re not very optimized, but shows it will be supported soon).
I was suggesting to use normal, non-nanite meshes for foliage and creating a good set of LODs that reduce the number of polys quickly as they go into the distance - then have a billboard LOD as the last LOD (I usually have them at about 0.2 ScreenSize).
I worked with a recent version of UE5_Main, and WPO and masking actually seem to be very performant. I’ve gotten over a million masked instances running in real-time at a high frame rate, and WPO seems to be coming along nicely. I understand how the original version of Nanite works, but how they support WPO and masking to me just reads as absolute sorcery.
Also, just for a bit of Trivia, Nanite actually does use imposters-but so far in the distance that it’d be impossible to notice.
2070s, i7900. I had a fair bit of performance headroom with the foliage, WPO seemed to be a little heavy, but recent code optimizations that I haven’t pulled down yet may help.
I mean to say, masked and non-WPO cost essentially nothing, WPO seemed to have a slight effect on performance. No hitches or stutters either, very smooth.
By the way, good news: as of 11 hours ago, Nanite on UE5_main received an update, and while I’m skimming the notes, it looks like programmable raster (including WPO, PDO, and masked materials), just got a pretty fair performance boost. I’m excited to see the material set Nanite works with continue to grow, and make all of our lives easier.
Tiny wish for me though: support for some sort of procedural generation, although I believe Unreal just got support for wave-function collapse. If we could generate procedural foliage or something similar, and not need to store those millions of vertices on disk, I think it would make it much easier to scale to the kind of content UE5 ostensibly supports.
Hello every one! love all your comments as I’ve been having the same issues. I work with VR and I’m stuck with UE 4 because of the vegetation (trees, folliage, grass, etc).
I have tried some of your solutions but still have a lower fps that can’t work well with VR.
Has anyone checked the new Nanite update that @jblackwell was talking about?
I think I might be able to provide some good news.
Although development on Nanite appears to have slowed somewhat in recent days, I can say for a fact that support is still improved over when I last wrote. Without getting too technical, you’d be looking at perf. improvments and bug fixes, but by and large masking appears to be working well under most circumstances I’m testing. Deformation occasionally runs into some performance issues or bugs but still seems to hold up well, and certainly better than non-nanite.
Furthermore, if you’re going to be using any distance field lighting (not lumen, but perhaps DFAO), stochastic semi-transparency was just coded into the engine. Essentially, it lets you support translucency on distance fields to simulate thin and scattering geometry like foliage, which I have yet to test but the perf numbers look good.
For us, the performance improvments are nice, but that’s not at all what’s preventing us from using this. The fact that leaf geometry dissapears at longer distances is what makes this unusable. They could increase the performance 1000x and it still wouldnt be usable without the ability to use your own imposters or something to prevent nanite from crushing leaf geometry. Im not saying we dont understand the challenge, its just one of those features that’s required for real gameplay implementation.
I have, but I wish I could explain exactly what’s happening to you and I currently cannot.
You can see the same issue in the matrix demo with some thin geo, it does get crushed. What’s strange is that it seems the way the mesh is constructed affects whether or not it does get crushed.
For example, UE4’s default bush asset. Alpha-masked geometry, I placed well over a million of them and there was no perceptible loss of detail, as well as for a few different trees, small plants, etc. But other assets, different pieces of foliage did suffer from visual crunch. It’s almost like the specific way the geometry is carded is affecting the behavior, but I’d need to do more work.
Disclaimer: The nanite pipeline was updated recently and I haven’t been able to test it yet, so there is a chance the problem was solved. But essentially, some nanite foliage will work excellently, and others will break the pipeline. Depending on the scope of your work you may be able to experiment with it, but I can also totally understand not making the switch at the moment. I’ll let you know what my results are, because there is a chance Nanite foliage may now just work.