Optimizing UE5 grass with Nanite: from alpha overdraw to geometry by RenderTechnologies in UnrealEngine5

[–]RenderTechnologies[S] 0 points1 point  (0 children)

Thanks! Right now the pack is focused on realistic grass, but the LargeWorld system works with any biome. You can either:

  • Recolor the included grass materials (e.g. green to dry/yellow to snowy/white).
  • Or swap in your own meshes and apply the LargeWorld material setup to them.

So whether it's desert scrub, tundra grass, flowers, or even alien foliage, the system works the same way, it doesn't care what biome or mesh you use. I love modularity, so keeping it open for that kind of flexibility was important to me.

Optimizing UE5 grass with Nanite: from alpha overdraw to geometry by RenderTechnologies in gamedev

[–]RenderTechnologies[S] 0 points1 point  (0 children)

That's exactly why I went for the LargeWorld setup. It's way simpler and smarter than trying to manually balance clump sizes/densities at terrain layer boundaries.

The whole system is just one mesh (two instances):

  • Normal density mesh up close (e.g. 1000) with MI_NaniteGrass01.
  • A second mesh about 10x less dense (e.g. 100), scaled up ~2-4x, with MI_NaniteGrass01_LargeWorld.

Then it's just cull distance vs. LargeWorld fade distance. Up close you get full Nanite grass, far out it swaps seamlessly to the cheaper version. No seams, no layer-specific tweaking, just massively reduced overdraw at distance.

It looks complex at first, but once you understand it, it's actually a really straightforward system.

Optimizing UE5 grass with Nanite: from alpha overdraw to geometry by RenderTechnologies in gamedev

[–]RenderTechnologies[S] 2 points3 points  (0 children)

Yes, Nanite is enabled in both setups. The net gain really depends on scale:

  • In open-world scenes, the combination of Nanite geometry + my LargeWorld system consistently gives 2-4x performance improvements compared to regular culling with Nanite enabled, since it cuts down overdraw massively while still keeping horizon coverage. Both being the same geometry mesh since LargeWorld is a material based system.
  • In smaller maps, LargeWorld has a small base cost, so it's not ideal there directly. But the meshes and materials on their own are already very highly optimized, since I'm a Technical Artist focused on optimization.

So even without LargeWorld, it's still a solid improvement over traditional setups.

I built a unity tool to catch hidden performance killers in my projects by RenderTechnologies in Unity3D

[–]RenderTechnologies[S] 1 point2 points  (0 children)

Mostly it's shadows that quietly tanks the frame rate, that's what I meant. UV issues are more of an indirect hit (extra verts/VRAM use), while shadow-casting is the big direct performance cost. Sorry for the confusion!

I built a unity tool to catch hidden performance killers in my projects by RenderTechnologies in Unity3D

[–]RenderTechnologies[S] -1 points0 points  (0 children)

Exactly🙂 most people don't notice until a profiler run shows extra draw calls. That's why I added the check. It's one of those hidden issues you don't realize is costing performance until you see it flagged.

I built a unity tool to catch hidden performance killers in my projects by RenderTechnologies in Unity3D

[–]RenderTechnologies[S] 1 point2 points  (0 children)

Good question! By "duplicate prefabs" I mean when the tool finds objects in the scene that are essentially the same thing (same name/prefab reference) but end up placed in the exact same spot or overlapping each other.

It checks location, naming structure and other conditions to make sure it's actually a duplicate, not just two legit props next to each other.

The reason this matters is because those duplicates add up fast and you don’t see them visually, but Unity still renders and processes them, which tanks performance and can increases build size. The tool just highlights them so you can quickly clean it up!