This tutorial is meant as a comprehensive overview of alpha cutting techniques, simple shaders, optimizations and tips and tricks. If there are specific foliage types you would like to see, please respond to this comment here. Next video will be converting already Masked foliage into proper Nanite foliage so stay tuned for that!
im so glad finally somebody put some light on this i was so lost as many of us thanks to your last video, i did jump back to nanite did a stress test with 2 million trees , its 16 ms to 17 ms on my 3060
Nice vid! Although, for the optimization part, here are my suggestions based on my projects: - For small foliage, I use contact shadows only, they're not accurate, but at high density it does the job real well, and it avoids having strange patches of non-shadowed grass. I also have a shader that fakes WPO at a distance by playing around with normals. - For trees, my shader fades WPO until the disable distance, that just helps preventing the popping... Because I think popping due to WPO goes against Nanite that is meant to prevent LOD popping. That's my personal workflow, also your recommended tri counts are exactly what I use!
Great tips! I also use Z gradient on my small foliage that makes them slightly darker on the bottom which helps a ton with blending them to the landscape (on translucecy side its much stronger, so it almost acts like a shadow).
I do the same, especially for trees it's way better to fade WPO from camera distance as when the wind value is high the popping also hits performance when reaching the world position offset end distance! So it's better for both performance and visual fidelity, as in the distance the WPO value will be very low and more performance friendly anyways.
Awesome content as always and thanks for the early segment of clarity .... Awesome stuff! VSM shadow cache invalidation is the largest hit from WPO btw (not to downplay the cost of vert transformations). If you can reduce the cache invalidation you can save alot.
Hey Dallas! Great video, just on creating the two-sided geo within Unreal, it's probably cleaner in the modeling mode to use: Deform - Offset - Distance of 0 (or just give it a tiny thickness to match your displace step) - Create Shell Ticked on. I'm very happy you made this! Great to see :)
On our game (Aces and Armor, shameless plug) I've been having to do a lot of research into the viability of the nanite pipeline. One trick I've found that works really well for super dense foliaged areas is to use simple shapes as blocking volumes alongside certain "cloud" type foliage like trees. Because of the way nanite calculates occlusion, any visible pixel will be evaluated for occlusion, when many objects fail to fully occlude eachother (dense forest scenario) this can lead to big performance hits due to overdraw, similar to issues with masking. An occluding volume can reduce the total "bleed". Next step in my tests is to see if i can include a volume inside the actual foliage model so the process is automated. This isn't perfect of course. It's a niche solution that only works at certain angles, but it is a valuable optimization for a few use cases.
i mean i had very similar scenes compared to this running at 120fps with lods, parallax occlusion mapping instead of nanite tesselation, virtual shadow maps disabled and RTXGI, but hey i guess 60 fps is good enough for a small map without any game logic running underneath and almost no shader complexity
@@marconapolitano2821 thats kind of the point here though, like yes, Lumen and Nanite and VSM are more expensive, other ways like RTXGI and LOD's are going to run better, but there are developers looking to use lumen, so i think its important to provide some information on potential ways of properly using it instead of just saying dont
Great and super informative video! Although could you increase the UI scale of UE for future videos? The widescreen video on a 16:9 monitor makes it pretty tough to see exactly what you're doing
Very nice video indeed, I would add two considerations: - Object pivot point: has some issues with megascans for anyone using those, it should be edited to instance and particle space in the transform node; - Memorize logic: actually it's easier to understand the math behind it, then it comes out like any other math you've done all your life; memory can be tricked, math cannot. - Shadows: I use contact shadows for most small foliage since it's way less expensive than VSM. - Nanite: most highly detailed nanite meshes can be easily reduced in tris to 50-30% total tris, with close to no difference in visual fidelity, but adds up when you are trying to spawn lots of grass with 3k tris per instance, as you only really need half or less tris anyways. Hyped for the next video!
@OverJumpRally if you use vsm then CSM should not be active anyways, or at least that's what I read, can you confirm? Also do you know why CSM should be more costly with Nanite?
You are a godsend I'm glad I found this channel. Would you consider crating a video on optimization? I personally try use the generic practices such as atlasing textures,optimizing topology,keeping an eye on drawcalls but still run into low fps issues if I'm not careful. Or more accurately I'll be hiting 120fps and I'll check up on it later and its down to 50 even if I'm using quite a traditional pipeline.
Hi, loving the series and I'm sure to stick around for the next video. If I could ask for something, I'd love an in-depth lesson on the Terrain itselfs, like the ones you can generate from Height Maps through the use of softwares like Gaea or GeoGen, Especially with large, 8k textures height maps. A lesson about world partitions or even if it's possible to straight up use a gigantic nanite mesh for such a landscape; I feel like it'd go hand in hand with this series. Keep up the good work!
That is a great idea! thats also something we did for our game, bringing in a really large height map and using world partition and how to do it in an optimized way. I'll add it to the list! Next video will be converting megascan and other foliage TO nanite, but after that one maybe ill break off from foliage and do this one!
Height maps can efficiently rendered with proper tesselation without Nanite. But that 8K heightmap is still for.. height data. You still need to have textures there because 1024px/m resolution 8k map is only 8x8 meters.
@@gruntaxeman3740 my apologies I worded it incorrectly. I didn't mean "8k textures height map", just "8k height maps". Specifically how to deal with terrains that are 64 square Km and beyond. The reason why I'm asking is because most softwares also give you the option to export a mesh instead of just the height map, but as you can imagine, with a 1 meter per pixel resolution, an 8k map is going to have over 67.1 milions quads. Is there a use case for this? can Nanite actually work on these? The texturing is but a secondary aspect.
Extra tip: You can make the alpha cutouts in maya so that they keep the original uv's, when it comes to complex atlases it might be a pain in the ass to re align them by hand. Just add the alpha texture to a plane and go to the VRay top bar menu>Tools>Opacity Cutout
Some good content, i like it. Although i will wait to watch it, because i can't implement knowledge of this guide to my project. And week-month later i will forget literally everything because of my memory. So i will save video in bookmarks and wait right moment :D
Optimization tips from my side: 1) use screen space shadows for grass. It is cheaper and with proper settings, will give good enough result. Also it will make cache invalidation "green" 2) Trees. To make optimized tress, you need to use imposters. One of the methods is buildings hLods. In hlod layer for trees, disable nanite and use highest LOD from tree model. Trust me, it will boost the performance a lot. 3) foliage tool and landscape grass tools are not the best for nanite grass. In 5.6 we will have PCG for nanite landscape grass. And for proper nanite clusterization, you have to use single blade grass. 4) disable WPO at distance For cache invalidation, you need to select light source :) Than you will see more proper information about your shadow cache for each light source.
You could also do the cut out trick in Blender by using an SVG as your alpha mask. You can import SVGs with alpha which will generate a plane mesh based around that alpha, giving you the shape. You'll need to tweak the options and reduce it though because it will likely import with a bazillion verts by default
yeah, that was actually the first method I tried for showcasing for the tutorial, and i forgot to mention it here, but yeah, the amount of verts was pretty wild and it ended up being harder to really have control with, however its a great way to get quick results, and if you're savvy with blender, im sure theres a way to better optimize the SVG process
@@DallasDrap You can import the SVG as a 3D curve and then convert it to a poly object. Once you do that hit it with a Quadriflow Remesh and tune that to your poly goal. This will of course distort the mesh outline a bit so you'll have to manually push some verts around to fix it but I feel it's much faster than a manual knife cut method and personally I think a nicer overall result than ZBrush
@@Xathian in the tests i was running it wasn't as consistent, whereas yeah i can specific the target amount of faces, it would sometimes distort the mesh too much, however if you can get a clean result from it for the given atlas id def go for it! Ultimately whatever process works best for you that gets the best end result should be the one used :]
I am a solo developer using ue5. When I tried to use nanite foliage in my projects, I was always getting worse performance. When I tested full geometry foliage after seeing your previous video, I got the same performance compared to the LOD system, but in the scenario where I used VSM + Lumen, I really got a performance increase compared to the LOD system and the render distance and scene quality of the trees increased incredibly. Also, I made all textures of 2k and above virtual textures and achieved both a quality increase in close surfaces and a performance increase. I never thought that I would get 50 FPS in the open world with my 5600 xt graphics card with full nanite + VSM + Lumen + Virtural textures. I am sure your previous video was an awakening for many people as it was for me. UE5 is not developing these systems for nothing. Thank you so much for all your hard work in creating these videos.
Thank you for being here and sharing your experience! Ue5 is such a big tool it'll take many more videos to break down more nuggets like this one~ 😊 Dallas is an eager educator on this, so stay tuned for it.
Do you have any plans to do a video on Lumen optimization as well? I've been trying this nanite method out since I first learned about it last year and it's been incredible so far, however on the other hand I can't get any decent results out of Lumen no matter what, I expect a performance cost of course but it just decimates FPS no matter what. I just can't imagine using it for anything real time with my current understanding of it.
Disabling "WPO" - can be done in the shader for grass through the familiar function “Distance Mask” that everyone loves to use in the landscape - and only then turn off WPO in the foliage - This will allow you to create a “smooth” attenuation of movement
Thanks, I've been waiting for this. I'll definitely follow along step by step later. But I am curious to hear your thoughts on how nanite affects performance on models without masked materials. My current most important project does not have any foliage.
So far, in the tests ive done, it has worked really well. Like lets say a lunar base or something just all modeled or photoscanned assets, nanite handles that no problem as far as I can tell. Granted, just like before nanite, you can very easily destroy your framerate if you start adding an excess of detail. For example, lets say you're using nanite displacement for some dirty gravel surface AND scatter a million tiny bits of geometry, that is going to start weighing it down. My philosophy with Nanite isn't so much that now we can just cast out old ways of development and put a million things in the environment, i think of it moreso as the engine simply wont explode if the assets are more detailed. So i'd still use general sort of rules and guides when it comes to environment creation that you normally would, with the exception that you're not making lightmaps or LOD's anymore, you're using higher resolution models
Lightmaps holds up extremely well today, or baking lighting to vertices, or have light probing. There is new video showing difference between Unreal Engine 5.0 and 5.4: th-cam.com/video/29ZZTlJt9K8/w-d-xo.html Both are running highest end GPU, 5.0 doesn't work on 60fps, and in 5.4 you can clearly see that lighting is unstable garbage, like it doesn't resolve real time and it doing annoying jittering. That kind of motion is very distracting because human visual system is most sensitive in motion.
hi . im new here and your videos are helping me a lot thanks for sharing your knowledge please if its possible zoom a little , its hard to read some of the text best wishes
I’d like to see how well all this runs on VR, since that’s my main goal. Eith the introduction of lumen, nanite, the new material and light features, UE is optimizing the engine to run well when things are aimed to work with such features, that’s as far as I understand based on your take. The problem lies on the devices used to run all this. Epic games gives you discounts for releasing games in all platforms at once, but not all platforms can support all this features. So here I am trying to figure out how to make my realistic vr game, while I’m hearing all this information. It just scrambles my head. Can you add any light on any of this?
Can you do a creation process for Blender as well? It's a robust and freely available tool, and not every dev out there is going to be able to afford a Maya license or Zbrush/Speedtree et. al.
I have a question not related to foliage but related to nanite. Since nanite does not like masking, how would it handle a character or a scene that has transparent or semi-transparent objects?
Nanite specifically has issues with overdraw. provided your use of masking is restrained it shouldn't be too big an issue. Foliage is a worst case scenario as its mask after mask after mask ad infinitum. Its still worse than something opaque though.
I notice a lot of aliasing artifacts in your background trees against the skyline. I also have this problem and am not sure how to solve it. I've tried each of the cvars related to aliasing, including temporal and TSR and not much changes. You can see the issue in the TSR.Rejection and TSR.History visualization modes. I can confirm that the artifacting is worse when viewport is downsampled to 50% and is much better when upsampled to 200% but neither of those are playable for obvious reasons (this was just to further confirm where the problem is - which is with TSR and how it handles aliasing particularly with small objects like foliage).
I have two questions: I'm not planing to use movement for my grass so does this mean vertex count wouldn't matter as much? And second question is that what about other moving things like vehicles? Them having high poly count, like 200k 400k and having maybe at least 100 of them at the same time moving around will effect the performance?
Moving components is different than moving vertices in a shader. Moving components will hit your game thread if not optimized while moving vertices with WPO hits your gpu. I don't think poly count matters on mesh components, I have ultra high poly roller coaster models flying around in my game and it doesn't affect performance
If you just turn on nanite, you already lose about 20% of performance. What is the benefit of nanite if it basically slows down the UE5? Trees with a million triangles are of no use to anyone. This also applies to other vegetation. Conventional LODing gives a higher result and control.
I started watching - so far I like what you say: I like it. Yes, yes In addition to the process of creating grass) Terribly not optimal from the point of view of texture scanning) It’s easier to create a template for one blade of grass - 512x64 - and then duplicate it and deform it many, many times
Nanite is useful in some cases. When you need to display large numbers of triangles, Nanite will offer improved performance - at the cost of more memory. Sorry, I am not buying the argument at all that Nanite will improve game size. You can argue that there might be some texture map savings - but these estimates are often over inflated on the side of texture memory when I see the comparisons made. Its as if they compare the least optimized textured version. You can compare Nanite to a GPU based particle system. GPU particle systems have a greater upfront cost, with savings on the back end when you start rendering millions of particles. I can say that in 20+ years of game dev I have needed a GPU based particle system a total of ZERO times. I understand the argument, but I reject the argument "GPU particle systems are superior." No, they are not. They have a limited window of use, and the base cost is more expensive. In the same way Nanite has a narrow window of use, with a higher base cost. You also reduce the number of players your project will reach, limiting yourself to players with high end gaming rigs. Forget the mobile and VR market entirely. In terms of foliage, I will need to see Nanite working with individual pivot points for realistic motion before I would even consider it. Less geometry means less processing and less memory. Nanite is a smart way of displaying dense geometry, which should have never been dense in the first place.
At least in offline rendering Nanite can be excellent when things are limited mostly VRAM and no need to care LOD levels. I agree that when creating game, Nanite does not save on VRAM because in real world scenarios, in third person view texel and geometry density required is low. First person view requires more but close up assets are those what are on player hands. Like, player hands, or item in hands or some weapon. Those don't use VRAM because there is 1-2 asset on time that need close up version and those can swapped away from VRAM, and only fraction of assets require that.
Nanite meshes take up less space than traditional ones, as stated in the documentation. And they manage better instancing and culling. Argument dismissed.
"Nanite meshes take up less space than traditional ones, as stated in the documentation." Mesh _optimized_ for real time rendering, almost certainly takes less space and need less VRAM. Documentation is talking different context and compares set of high poly meshes to Nanite. Optimized assets bake details to textures, and shares textures between LOD levels and even between other assets.
Thanks, but Nanite is better for Movie Renders instead Games - my mesh terrain get 20+ more fps on FHD without this quantum tech . Visualization shows there is like 0 overdraw on tiles.i set like a minimum to be fair scenario vs LOD (lowest bit rate and also lowered precission) - and it cant handle..Also feedback factor really change shape of big meshes so you character go through terrrain if more than 50%. Excuse me but LODs perform better even with RT,LUMEN,VSMs enabled. Maybe in 4k with rtx60xx that tech will be viable for milions poly stuff. And yes i put on LOD1 max reduced to nanite have flip to lower poly -still drawbacks instead of magic gains due to LOD.
My game disagrees with your first statement. Nanite is amazing for games, even low-end cards like a 1660S. Sure, LODs perform better but they look much worse, they take up more time to make, to set, and they won't scale for larger environments. This without even considering culling and instancing, two other huge advantages of Nanite.
LODs can scale for larger environments. The thing why LODs work and what limits then is simply to avoid too small triangle size, and not too many LOD levels on free moving _mesh_ . This means that if asset move very close to camera, then geometry resolution can be coarse on some cases. Usually this can be controlled that it doesn't happen uncontrolled way. Like using closeup LOD when asset is picked to hand in first person view. Textures can be of course high resolution and instancing works too. It is not that important is there used Nanite or not. It is more quality assurance thing that action game should have 720p@ 60fps on Steam Deck without any stuttering. But in my opinion, Nanite just wastes resources that can be used other more important stuff.
@@gruntaxeman3740 Every dev should decide what's the visual fidelity they want to achieve despite not running on lower hardware. Steam Deck is a great machine but clearly not designed for next-gen games. In fact, many recent best-selling UE5 games run poorly on it, even with frame-gen. A game visually impressive would sell more than a game that runs on more machines. Especially in the long run, when people would eventually upgrade their hardware. Feel free to use your time however you prefer, but saying that a game shouldn't be using Nanite and, instead, the devs should spend their time on the whole LODs process is not a mandatory thing. Especially if you are an indie studio or a solo dev.
This tutorial is meant as a comprehensive overview of alpha cutting techniques, simple shaders, optimizations and tips and tricks. If there are specific foliage types you would like to see, please respond to this comment here.
Next video will be converting already Masked foliage into proper Nanite foliage so stay tuned for that!
Can you do a video on cutting out pine needles? They seem like a massive pain to make
@@woberto-ve5ry oh yeah! Theres a special place for those XD yeah ill be making a tutorial on them
im so glad finally somebody put some light on this i was so lost as many of us thanks to your last video, i did jump back to nanite did a stress test with 2 million trees , its 16 ms to 17 ms on my 3060
@ same
@@DallasDrap Lumen tutorial when brooo
Im waiting😥
Nice vid!
Although, for the optimization part, here are my suggestions based on my projects:
- For small foliage, I use contact shadows only, they're not accurate, but at high density it does the job real well, and it avoids having strange patches of non-shadowed grass. I also have a shader that fakes WPO at a distance by playing around with normals.
- For trees, my shader fades WPO until the disable distance, that just helps preventing the popping... Because I think popping due to WPO goes against Nanite that is meant to prevent LOD popping.
That's my personal workflow, also your recommended tri counts are exactly what I use!
this is great! hopefully others see this comment
great Pro hack!! thank you for sharing
Great tips. Much needed good quality content is attracting good quality comments like yours too. So valuable for Unreal younglings like me.
Great tips!
I also use Z gradient on my small foliage that makes them slightly darker on the bottom which helps a ton with blending them to the landscape (on translucecy side its much stronger, so it almost acts like a shadow).
I do the same, especially for trees it's way better to fade WPO from camera distance as when the wind value is high the popping also hits performance when reaching the world position offset end distance!
So it's better for both performance and visual fidelity, as in the distance the WPO value will be very low and more performance friendly anyways.
Awesome content as always and thanks for the early segment of clarity .... Awesome stuff! VSM shadow cache invalidation is the largest hit from WPO btw (not to downplay the cost of vert transformations). If you can reduce the cache invalidation you can save alot.
Hey Dallas! Great video, just on creating the two-sided geo within Unreal, it's probably cleaner in the modeling mode to use: Deform - Offset - Distance of 0 (or just give it a tiny thickness to match your displace step) - Create Shell Ticked on.
I'm very happy you made this! Great to see :)
yeah i forgot to say that as I was doing it haha but you're right, just flipping it would be fine
Very eagerly awaiting this foliage series! Thanks so much, I'm excited to learn!
This was great, good to see more in depth and practical tuts on nanite
more to come! And I hope other creators join suite so we can all share in the information
On our game (Aces and Armor, shameless plug) I've been having to do a lot of research into the viability of the nanite pipeline. One trick I've found that works really well for super dense foliaged areas is to use simple shapes as blocking volumes alongside certain "cloud" type foliage like trees.
Because of the way nanite calculates occlusion, any visible pixel will be evaluated for occlusion, when many objects fail to fully occlude eachother (dense forest scenario) this can lead to big performance hits due to overdraw, similar to issues with masking. An occluding volume can reduce the total "bleed".
Next step in my tests is to see if i can include a volume inside the actual foliage model so the process is automated.
This isn't perfect of course. It's a niche solution that only works at certain angles, but it is a valuable optimization for a few use cases.
“That channel” is shitting themselves over seeing someone actual show they know how to use UE5
its funny you dont even need to say it for us to know who youre talking about haha
Education was always biggest threat to misinformation, right?
@@AdesGamingHere thats so true
i mean i had very similar scenes compared to this running at 120fps with lods, parallax occlusion mapping instead of nanite tesselation, virtual shadow maps disabled and RTXGI, but hey i guess 60 fps is good enough for a small map without any game logic running underneath and almost no shader complexity
@@marconapolitano2821 thats kind of the point here though, like yes, Lumen and Nanite and VSM are more expensive, other ways like RTXGI and LOD's are going to run better, but there are developers looking to use lumen, so i think its important to provide some information on potential ways of properly using it instead of just saying dont
Let's gooo, looking forward to delving into this
Great and super informative video!
Although could you increase the UI scale of UE for future videos? The widescreen video on a 16:9 monitor makes it pretty tough to see exactly what you're doing
Love the Dallas tutorials~
Teşekkürler.
you're amazing for supporting this channel!!!
Thank you! your support really helps keep me and the channel going! More content soon to come!
Very nice video indeed, I would add two considerations:
- Object pivot point: has some issues with megascans for anyone using those, it should be edited to instance and particle space in the transform node;
- Memorize logic: actually it's easier to understand the math behind it, then it comes out like any other math you've done all your life; memory can be tricked, math cannot.
- Shadows: I use contact shadows for most small foliage since it's way less expensive than VSM.
- Nanite: most highly detailed nanite meshes can be easily reduced in tris to 50-30% total tris, with close to no difference in visual fidelity, but adds up when you are trying to spawn lots of grass with 3k tris per instance, as you only really need half or less tris anyways.
Hyped for the next video!
Contact Shadows are part of CSM and they perform worse than VSM when you use a lot of Nanite geometry.
@OverJumpRally if you use vsm then CSM should not be active anyways, or at least that's what I read, can you confirm? Also do you know why CSM should be more costly with Nanite?
Amazing. Thank you.
Amazing! Threat has been real quiet since you called their channel out
👀 we have been waiting for his next upload, too...
You are a godsend I'm glad I found this channel.
Would you consider crating a video on optimization?
I personally try use the generic practices such as atlasing textures,optimizing topology,keeping an eye on drawcalls but still run into low fps issues if I'm not careful.
Or more accurately I'll be hiting 120fps and I'll check up on it later and its down to 50 even if I'm using quite a traditional pipeline.
that's a great idea~ I'm sure he's cooking something up in the future for that.
nice been waiting for this !
Hi, loving the series and I'm sure to stick around for the next video.
If I could ask for something, I'd love an in-depth lesson on the Terrain itselfs, like the ones you can generate from Height Maps through the use of softwares like Gaea or GeoGen, Especially with large, 8k textures height maps. A lesson about world partitions or even if it's possible to straight up use a gigantic nanite mesh for such a landscape; I feel like it'd go hand in hand with this series.
Keep up the good work!
That is a great idea! thats also something we did for our game, bringing in a really large height map and using world partition and how to do it in an optimized way. I'll add it to the list! Next video will be converting megascan and other foliage TO nanite, but after that one maybe ill break off from foliage and do this one!
@DallasDrap great! But please don't shift your schedule just for my personal request, go with the most popular requests first!
Height maps can efficiently rendered with proper tesselation without Nanite. But that 8K heightmap is still for.. height data. You still need to have textures there because 1024px/m resolution 8k map is only 8x8 meters.
@@gruntaxeman3740 my apologies I worded it incorrectly. I didn't mean "8k textures height map", just "8k height maps". Specifically how to deal with terrains that are 64 square Km and beyond. The reason why I'm asking is because most softwares also give you the option to export a mesh instead of just the height map, but as you can imagine, with a 1 meter per pixel resolution, an 8k map is going to have over 67.1 milions quads. Is there a use case for this? can Nanite actually work on these? The texturing is but a secondary aspect.
Oh i was waiting for something like that
thanks for the free education!
Great mustache..
😎
Extra tip: You can make the alpha cutouts in maya so that they keep the original uv's, when it comes to complex atlases it might be a pain in the ass to re align them by hand. Just add the alpha texture to a plane and go to the VRay top bar menu>Tools>Opacity Cutout
You are amazing
❤
man i love the expanation of cached shadows. I feel like there not much covering stuff like that. Execpt for thoses massive unreal videos.
Yeah its something to keep an eye out for, cache shadows is definitely one of the optimization viewmodes we all need to check from time to time
Some good content, i like it. Although i will wait to watch it, because i can't implement knowledge of this guide to my project. And week-month later i will forget literally everything because of my memory. So i will save video in bookmarks and wait right moment :D
hahaha love the honesty. I too bookmark and come back to videos later, nothing wrong with that!
Optimization tips from my side:
1) use screen space shadows for grass. It is cheaper and with proper settings, will give good enough result. Also it will make cache invalidation "green"
2) Trees. To make optimized tress, you need to use imposters. One of the methods is buildings hLods. In hlod layer for trees, disable nanite and use highest LOD from tree model. Trust me, it will boost the performance a lot.
3) foliage tool and landscape grass tools are not the best for nanite grass. In 5.6 we will have PCG for nanite landscape grass. And for proper nanite clusterization, you have to use single blade grass.
4) disable WPO at distance
For cache invalidation, you need to select light source :) Than you will see more proper information about your shadow cache for each light source.
You could also do the cut out trick in Blender by using an SVG as your alpha mask. You can import SVGs with alpha which will generate a plane mesh based around that alpha, giving you the shape. You'll need to tweak the options and reduce it though because it will likely import with a bazillion verts by default
yeah, that was actually the first method I tried for showcasing for the tutorial, and i forgot to mention it here, but yeah, the amount of verts was pretty wild and it ended up being harder to really have control with, however its a great way to get quick results, and if you're savvy with blender, im sure theres a way to better optimize the SVG process
@@DallasDrap You can import the SVG as a 3D curve and then convert it to a poly object. Once you do that hit it with a Quadriflow Remesh and tune that to your poly goal. This will of course distort the mesh outline a bit so you'll have to manually push some verts around to fix it but I feel it's much faster than a manual knife cut method and personally I think a nicer overall result than ZBrush
@@Xathian in the tests i was running it wasn't as consistent, whereas yeah i can specific the target amount of faces, it would sometimes distort the mesh too much, however if you can get a clean result from it for the given atlas id def go for it! Ultimately whatever process works best for you that gets the best end result should be the one used :]
I am a solo developer using ue5. When I tried to use nanite foliage in my projects, I was always getting worse performance. When I tested full geometry foliage after seeing your previous video, I got the same performance compared to the LOD system, but in the scenario where I used VSM + Lumen, I really got a performance increase compared to the LOD system and the render distance and scene quality of the trees increased incredibly. Also, I made all textures of 2k and above virtual textures and achieved both a quality increase in close surfaces and a performance increase. I never thought that I would get 50 FPS in the open world with my 5600 xt graphics card with full nanite + VSM + Lumen + Virtural textures. I am sure your previous video was an awakening for many people as it was for me. UE5 is not developing these systems for nothing. Thank you so much for all your hard work in creating these videos.
Thank you for being here and sharing your experience! Ue5 is such a big tool it'll take many more videos to break down more nuggets like this one~ 😊
Dallas is an eager educator on this, so stay tuned for it.
Do you have any plans to do a video on Lumen optimization as well? I've been trying this nanite method out since I first learned about it last year and it's been incredible so far, however on the other hand I can't get any decent results out of Lumen no matter what, I expect a performance cost of course but it just decimates FPS no matter what. I just can't imagine using it for anything real time with my current understanding of it.
Disabling "WPO" - can be done in the shader
for grass through the familiar function “Distance Mask” that everyone loves to use in the landscape - and only then turn off WPO in the foliage - This will allow you to create a “smooth” attenuation of movement
Thanks, I've been waiting for this. I'll definitely follow along step by step later. But I am curious to hear your thoughts on how nanite affects performance on models without masked materials. My current most important project does not have any foliage.
So far, in the tests ive done, it has worked really well. Like lets say a lunar base or something just all modeled or photoscanned assets, nanite handles that no problem as far as I can tell. Granted, just like before nanite, you can very easily destroy your framerate if you start adding an excess of detail. For example, lets say you're using nanite displacement for some dirty gravel surface AND scatter a million tiny bits of geometry, that is going to start weighing it down.
My philosophy with Nanite isn't so much that now we can just cast out old ways of development and put a million things in the environment, i think of it moreso as the engine simply wont explode if the assets are more detailed. So i'd still use general sort of rules and guides when it comes to environment creation that you normally would, with the exception that you're not making lightmaps or LOD's anymore, you're using higher resolution models
Lightmaps holds up extremely well today, or baking lighting to vertices, or have light probing.
There is new video showing difference between Unreal Engine 5.0 and 5.4: th-cam.com/video/29ZZTlJt9K8/w-d-xo.html
Both are running highest end GPU, 5.0 doesn't work on 60fps, and in 5.4 you can clearly see that lighting is unstable garbage, like it doesn't resolve real time and it doing annoying jittering. That kind of motion is very distracting because human visual system is most sensitive in motion.
Thank you!
hi . im new here and your videos are helping me a lot
thanks for sharing your knowledge
please if its possible zoom a little , its hard to read some of the text
best wishes
We will keep this in mind, that's not the first time the zoom was mentioned.
Kinda looking for a video like this for like a year already. Thanks.
Most of foliage I can find are still using alpha leaves.
that's why he's working on more tutorials like this one. not enough content on this out there.
I’d like to see how well all this runs on VR, since that’s my main goal. Eith the introduction of lumen, nanite, the new material and light features, UE is optimizing the engine to run well when things are aimed to work with such features, that’s as far as I understand based on your take.
The problem lies on the devices used to run all this. Epic games gives you discounts for releasing games in all platforms at once, but not all platforms can support all this features. So here I am trying to figure out how to make my realistic vr game, while I’m hearing all this information. It just scrambles my head.
Can you add any light on any of this?
Please share your techniques for reducing overdraw.
Can you do a creation process for Blender as well? It's a robust and freely available tool, and not every dev out there is going to be able to afford a Maya license or Zbrush/Speedtree et. al.
Let's Go!
A Nanite foliage tutorial without showing how to make a tree makes the video feel incomplete.
the next Nanite video should have trees, the video would be way too long if that was implemented on this one.
@Peepspaint I'm noticing that u reply to almost every comment that is present in this video?
Are you a mod or something
I have a question not related to foliage but related to nanite. Since nanite does not like masking, how would it handle a character or a scene that has transparent or semi-transparent objects?
Nanite specifically has issues with overdraw. provided your use of masking is restrained it shouldn't be too big an issue. Foliage is a worst case scenario as its mask after mask after mask ad infinitum.
Its still worse than something opaque though.
@robertocosta1645 I see. Is there a better solution for transparency?
Skeletal meshes are barely supported and translucency is not supported... We'll have to wait and see what the cost will be for translucency
comment for the algorithm Gods
🙏
I notice a lot of aliasing artifacts in your background trees against the skyline. I also have this problem and am not sure how to solve it. I've tried each of the cvars related to aliasing, including temporal and TSR and not much changes. You can see the issue in the TSR.Rejection and TSR.History visualization modes. I can confirm that the artifacting is worse when viewport is downsampled to 50% and is much better when upsampled to 200% but neither of those are playable for obvious reasons (this was just to further confirm where the problem is - which is with TSR and how it handles aliasing particularly with small objects like foliage).
I have two questions: I'm not planing to use movement for my grass so does this mean vertex count wouldn't matter as much? And second question is that what about other moving things like vehicles? Them having high poly count, like 200k 400k and having maybe at least 100 of them at the same time moving around will effect the performance?
Moving components is different than moving vertices in a shader. Moving components will hit your game thread if not optimized while moving vertices with WPO hits your gpu. I don't think poly count matters on mesh components, I have ultra high poly roller coaster models flying around in my game and it doesn't affect performance
1h packed full of info? Sir you are amazing🫡
😊 so are you, thank you for supporting him. 🫡
Does anyone know of some good tree packs that are modelled this way? All the ones ive found use masks.
NOICE!!
thx super cool
Its impossible to see the numbers or names for ur 4k screen, this works in VR?
If you just turn on nanite, you already lose about 20% of performance.
What is the benefit of nanite if it basically slows down the UE5?
Trees with a million triangles are of no use to anyone. This also applies to other vegetation.
Conventional LODing gives a higher result and control.
I"m sorry someone with that type of mustache can't be taken seriously or is an obvious villain whose trying to mislead us.
Rats! my evil plan has been exposed!
I started watching - so far I like what you say: I like it.
Yes, yes
In addition to the process of creating grass)
Terribly not optimal from the point of view of texture scanning)
It’s easier to create a template for one blade of grass - 512x64 - and then duplicate it and deform it many, many times
Nanite is useful in some cases. When you need to display large numbers of triangles, Nanite will offer improved performance - at the cost of more memory. Sorry, I am not buying the argument at all that Nanite will improve game size. You can argue that there might be some texture map savings - but these estimates are often over inflated on the side of texture memory when I see the comparisons made. Its as if they compare the least optimized textured version. You can compare Nanite to a GPU based particle system. GPU particle systems have a greater upfront cost, with savings on the back end when you start rendering millions of particles. I can say that in 20+ years of game dev I have needed a GPU based particle system a total of ZERO times. I understand the argument, but I reject the argument "GPU particle systems are superior." No, they are not. They have a limited window of use, and the base cost is more expensive. In the same way Nanite has a narrow window of use, with a higher base cost. You also reduce the number of players your project will reach, limiting yourself to players with high end gaming rigs. Forget the mobile and VR market entirely. In terms of foliage, I will need to see Nanite working with individual pivot points for realistic motion before I would even consider it. Less geometry means less processing and less memory. Nanite is a smart way of displaying dense geometry, which should have never been dense in the first place.
At least in offline rendering Nanite can be excellent when things are limited mostly VRAM and no need to care LOD levels.
I agree that when creating game, Nanite does not save on VRAM because in real world scenarios, in third person view texel and geometry density required is low. First person view requires more but close up assets are those what are on player hands. Like, player hands, or item in hands or some weapon.
Those don't use VRAM because there is 1-2 asset on time that need close up version and those can swapped away from VRAM, and only fraction of assets require that.
Nanite meshes take up less space than traditional ones, as stated in the documentation. And they manage better instancing and culling. Argument dismissed.
"Nanite meshes take up less space than traditional ones, as stated in the documentation."
Mesh _optimized_ for real time rendering, almost certainly takes less space and need less VRAM. Documentation is talking different context and compares set of high poly meshes to Nanite.
Optimized assets bake details to textures, and shares textures between LOD levels and even between other assets.
Dam not first this time
your thumbnail gets me every time XD
Ахахахахаха! Это че за пародия на Грипински 3д?
Thanks, but Nanite is better for Movie Renders instead Games - my mesh terrain get 20+ more fps on FHD without this quantum tech . Visualization shows there is like 0 overdraw on tiles.i set like a minimum to be fair scenario vs LOD (lowest bit rate and also lowered precission) - and it cant handle..Also feedback factor really change shape of big meshes so you character go through terrrain if more than 50%. Excuse me but LODs perform better even with RT,LUMEN,VSMs enabled. Maybe in 4k with rtx60xx that tech will be viable for milions poly stuff. And yes i put on LOD1 max reduced to nanite have flip to lower poly -still drawbacks instead of magic gains due to LOD.
My game disagrees with your first statement. Nanite is amazing for games, even low-end cards like a 1660S.
Sure, LODs perform better but they look much worse, they take up more time to make, to set, and they won't scale for larger environments. This without even considering culling and instancing, two other huge advantages of Nanite.
I can render complex scene 1080p@60fps using Geforce 1030 2Gb card with forward rendering pipeline using LODs.
LODs can scale for larger environments.
The thing why LODs work and what limits then is simply to avoid too small triangle size, and not too many LOD levels on free moving _mesh_ . This means that if asset move very close to camera, then geometry resolution can be coarse on some cases. Usually this can be controlled that it doesn't happen uncontrolled way. Like using closeup LOD when asset is picked to hand in first person view.
Textures can be of course high resolution and instancing works too.
It is not that important is there used Nanite or not. It is more quality assurance thing that action game should have 720p@ 60fps on Steam Deck without any stuttering. But in my opinion, Nanite just wastes resources that can be used other more important stuff.
@@gruntaxeman3740 Every dev should decide what's the visual fidelity they want to achieve despite not running on lower hardware. Steam Deck is a great machine but clearly not designed for next-gen games. In fact, many recent best-selling UE5 games run poorly on it, even with frame-gen. A game visually impressive would sell more than a game that runs on more machines. Especially in the long run, when people would eventually upgrade their hardware.
Feel free to use your time however you prefer, but saying that a game shouldn't be using Nanite and, instead, the devs should spend their time on the whole LODs process is not a mandatory thing. Especially if you are an indie studio or a solo dev.
Threat Interactive fanboy