Reducing material complexity based on distance

Hi,

We’re running into a limitation with the Nanite workflow and wanted to ask how this is intended to be handled.

Nanite does a great job reducing geometric complexity over distance, but it doesn’t seem to address material complexity in the same way. In our case, we’re using fairly complex materials (especially on vegetation), and at far distances it feels inefficient to keep evaluating those full materials—even if the geometry is already simplified into clusters or voxel-like representations.

In a traditional LOD workflow, we would solve this by assigning simplified materials per LOD level. However, this approach doesn’t translate directly to Nanite, since the standard LOD system isn’t really used.

So our questions are:

  • How is material simplification over distance intended to be handled with Nanite?
  • Is there a recommended way to reduce material complexity (e.g., switching to simpler materials for distant Nanite clusters or voxel representations)?
  • Would a coarse, multi-stage approach (e.g., near vs. far material variants rather than per-cluster materials) make sense within Nanite’s design?
  • What are the performance implications of introducing alternative materials at a distance, considering the cost per material in a rendered section? Could this actually reduce overall cost (e.g., for vegetation with many material variations)?

Any guidance on best practices or intended workflows would be really helpful.

Kind Regards,

Adam

[Attachment Removed]

Steps to Reproduce[Attachment Removed]

Hey there! Most distance-based LODing is a bit antithetical to the way we wanted Nanite to work. Your three key options are:

  • Displacement Fade - which disables displacement on clusters smaller than a given size
  • Nanite Pixel Programmable Disable Distance - for explicitly disabling things like tessellation, masking, and pixel depth offset on a per-instance basis
  • World Position Offset Disable Distance - does what it says on the box, it completely disables WPO beyond a certain distance

Combining all three of these features means you can take what used to be masked, vertex-animated foliage up close and get it all the way back to Fixed Function Rasterization at a distance. We’ve had a few customers use this approach and it solves most of the issues they’re seeing with foliage performance.

In my experience and from talking to our customers, the biggest issue for Nanite performance is the number of shading and raster bins, and it’s less likely to be related to the pixel fill cost of an individual shading bin. So in a way, if you wanted to make a cheaper material at a distance you’d be increasing the number of shading bins.

Are you currently seeing performance issues in Nanite VisBuffer, Nanite Base Pass, or in your Nanite shadow depths?

[Attachment Removed]