What is the best way to optimize Nanite assets for large open-world environments?

If I am making a very large open-world game, how can I make Nanite 3D objects work efficiently without causing performance issues?

Nanite itself scales well to open worlds, so most problems come from how the content is set up. Things worth checking:

  1. Use World Partition with streaming cells (and One File Per Actor) so only nearby Nanite meshes are loaded. Nanite streams geometry, but you still pay for memory and instance count.
  2. Prefer instancing (ISM/HISM, or PCG/foliage) for repeated meshes instead of thousands of unique actors. Fewer draw/cull entries means a cheaper cull pass.
  3. Watch overdraw: masked or World Position Offset materials are much more expensive on Nanite, so use opaque where you can and set a sensible WPO Disable Distance. Avoid heavy pixel shaders on far objects.
  4. Keep triangles reasonable: Nanite doesn’t need a crazy source mesh. Set Fallback/Percent Triangles correctly and don’t make tiny triangles that are sub-pixel everywhere.
  5. Profile before guessing: use stat GPU, stat Nanite, r.Nanite.Visualize Overdraw and the Nanite visualization modes (Triangles, Overdraw, Clusters), plus Unreal Insights, to see whether the cost is in culling, rasterization or the material/shading pass.
  6. Set cull distances / HLOD for far content, and keep Virtual Shadow Map cost in check (shadow caching, fewer dynamic lights).

If you share a stat GPU capture or which Nanite visualization looks bad, people here can narrow it down.