The 3D Handbook
Topic

Virtualised geometry (Nanite)

How Unreal's Nanite streams and draws only the triangle detail the screen can show, what it supports in current versions, what it costs, and when not to use it.

naniteunrealoptimisationlodperformance

Virtualised geometry is a way of rendering meshes in which the engine keeps the full-detail source, streams in only the parts the camera needs, and scales the triangle count with screen resolution (Unreal Engine Documentation: Nanite Virtualized Geometry). Unreal Engine 5's Nanite is the best-known example. 80 Level's summary of Epic's SIGGRAPH talk puts it as doing work "on only the detail that can be perceived and no more" (80 Level: A Deep Dive into Unreal Engine's 5 Nanite). Compare virtual texturing, which applies a similar streaming idea to textures.

For environment artists, Nanite changes what a triangle budget means, replaces most hand-made LODs for static meshes, and largely removes draw calls as a limit. It also brings new costs and limits, covered below.

#How it works, at artist level

You do not need the maths, but a mental model helps you make better assets.

  1. On import, the mesh is cut into clusters. Each cluster holds 128 triangles (SIGGRAPH 2021: Nanite: A Deep Dive).
  2. A hierarchy is built. Neighbouring clusters are grouped, merged, simplified to about half the triangles, and split again into 128-triangle clusters, repeating until one root remains (SIGGRAPH 2021: Nanite: A Deep Dive).
  3. At runtime, the engine picks clusters by screen error. For each part of the mesh, it draws the coarsest clusters whose simplification error, projected to screen pixels, is small enough (SIGGRAPH 2021: Nanite: A Deep Dive). Clusters "are swapped on the fly at varying levels of detail based on the camera view", and neighbours join without cracks (Unreal Engine Documentation: Nanite Virtualized Geometry).
  4. Data streams on demand. Only visible detail needs to be in memory, which is why Epic recommends SSDs (Unreal Engine Documentation: Nanite Virtualized Geometry).
  5. Tiny triangles get a special path. Clusters with triangles smaller than 32 pixels are rasterised in software, which Karis reports is about three times faster on average than their fastest hardware-rasteriser path (SIGGRAPH 2021: Nanite: A Deep Dive).
A tree diagram of four levels. The bottom row has eight boxes labelled 128-triangle clusters from the source mesh. Each level above has half as many boxes, each labelled as simplified to about half the triangles, up to a single root. A dashed line shows a cut through the hierarchy choosing fine clusters near the camera and coarse clusters far away.
Nanite's cluster hierarchy, simplified. Each level halves the triangles; at runtime the engine cuts across the hierarchy, using fine clusters where they would be visible and coarse ones elsewhere. (The real structure is a graph, not a strict tree.)Diagram by the handbook author, after Karis (2021)
A photogrammetry scan built from about 150 photos at 36 megapixels, uploaded at roughly 350,000 faces with 8K textures. This is the kind of dense, chaotic mesh Nanite is designed to take directly; switch to wireframe and imagine retopologising it by hand instead.matousekfoto, via Sketchfab

#What Nanite supports today

Support has grown with each release. The list below follows Epic's current documentation (Unreal Engine Documentation: Nanite Virtualized Geometry) unless noted.

Feature Status Notes
Static meshes Supported The original use case.
Materials Opaque and Masked Unsupported materials fall back to a default with a log warning. Masked support arrived in 5.1 as "opacity masks" (Epic Games news).
World Position Offset Supported, with limits You "must clamp the amount of displacement" to manage cluster culling. Programmable rasteriser added in 5.1 (Epic Games news).
Skeletal meshes Supported Animation LODs instead of geometry LODs; one draw call per mesh.
Spline meshes Supported Landscape and Blueprint splines; added in 5.4 (Unreal Engine blog).
Landscape Supported Terrain can use Nanite.
Static displacement Supported An offline adaptive tessellator bakes displacement maps into an optimised Nanite mesh.
Tessellation Listed in docs Runtime programmable displacement. Introduced as Experimental in 5.4 (Unreal Engine blog); check your version's release notes for current status.
Nanite Foliage Experimental in 5.7 Combines Nanite Assemblies, Nanite Skinning and Nanite Voxels for dense animated vegetation (Unreal Engine news; Digital Production).
Decals Partial Decals project onto Nanite surfaces; translucent mesh decals are not supported.

Not supported (Unreal Engine Documentation: Nanite Virtualized Geometry): morph targets, forward rendering, stereo VR rendering, MSAA, lighting channels, and per-view filtering by minimum screen radius or distance culling. Ray tracing uses a simplified fallback mesh by default.

#What it costs

Disk. Nanite meshes average 14.4 bytes per input triangle, so a one-million-triangle mesh is about 13.8 MB on disk (Unreal Engine Documentation: Nanite Technical Details). By default Nanite keeps every source triangle; Keep Triangle Percent and Trim Relative Error reduce disk size, which Epic frames as being about download size, "not specifically for improving performance" (Unreal Engine Documentation: Nanite Technical Details).

Memory for instances. Karis gives 457 MB for the transforms of 10 million instances (SIGGRAPH 2021: Nanite: A Deep Dive). Scenes are hard-limited to 16 million streamed-in instances (Unreal Engine Documentation: Nanite Virtualized Geometry).

Shading. Masked materials in Nanite "incur a significant cost during base pass shading"; on Fortnite, the team often chose more triangles with opaque materials instead (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…).

Overdraw. Foliage and other "aggregate" geometry perform worse in Nanite, partly because of overdraw (SIGGRAPH 2021: Nanite: A Deep Dive). Epic notes that "smaller objects that are closely stacked together create more overdraw than larger ones" (Unreal Engine Documentation: Nanite Technical Details).

Hardware. Nanite targets current console and desktop platforms with DirectX 12 and Shader Model 6 (Unreal Engine Documentation: Nanite Virtualized Geometry).

#When to use Nanite

Epic says Nanite "should generally be enabled wherever possible on platforms that support it" (Unreal Engine Documentation: Nanite Virtualized Geometry). Good candidates: meshes with many triangles or tiny on-screen triangles, many instances, large occluders, and meshes casting Virtual Shadow Map shadows (Unreal Engine Documentation: Nanite Virtualized Geometry). Fortnite found large non-Nanite meshes render shadows into Virtual Shadow Maps more slowly than equivalent Nanite meshes (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…).

Consider other options when:

#Similar approaches elsewhere

Nanite's cluster-hierarchy idea has also been applied outside Unreal's meshes. A 2025 SIGGRAPH paper, Virtualized 3D Gaussians, applies a cluster-based LOD system to Gaussian splat scenes and states it is "inspired by Unreal Engine 5's Nanite system" (Yang et al. 2025). It reports better speed and quality trade-offs, with storage roughly doubling (Yang et al. 2025). For other game engines, no comparable built-in system could be verified for this page; check your engine's current documentation.

#Practical tips for artists

#Common mistakes

#Further reading and watching

Epic's Brian Karis and Quixel's Galen Davis walk through Nanite using the Valley of the Ancient sample; a good artist-level companion to the documentation below. Watch on YouTube

References

  1. Epic Games · Nanite Virtualized Geometry · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
  2. Theodore McKenzie · A Deep Dive into Unreal Engine's 5 Nanite · 80 Level, 2021 · article · accessed 2026-10-20
  3. Brian Karis · Nanite: A Deep Dive · SIGGRAPH 2021, Advances in Real-Time Rendering in Games, 2021 · talk · accessed 2026-10-20
  4. Jim Thacker · Watch Epic Games' amazing new Unreal Engine 5 demo · CG Channel, 2020 · article · accessed 2026-10-20
  5. Epic Games · Unreal Engine 5.1 is now available · Epic Games news, 2022 · article · accessed 2026-10-20
  6. Epic Games · Unreal Engine 5.4 is now available · Unreal Engine blog, 2024 · article · accessed 2026-10-20
  7. Epic Games · Unreal Engine 5.7 is now available · Unreal Engine news, 2025 · article · accessed 2026-10-20
  8. Digital Production · Unreal Engine 5.7: foliage, PCG and in-Editor AI · Digital Production, 2025 · article · accessed 2026-10-20
  9. Tom Looman · Unreal Engine 5.7 Performance Highlights · tomlooman.com, 2025 · article · accessed 2026-10-20
  10. GameFromScratch · Unreal Engine 5.8 Preview Released · GameFromScratch, 2026 · article · accessed 2026-10-20
  11. Epic Games · Nanite Technical Details · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
  12. Epic Games · Bringing Nanite to Fortnite Battle Royale in Chapter 4 · Unreal Engine tech blog · article · accessed 2026-10-20
  13. Epic Games · A first look at Unreal Engine 5 · Unreal Engine blog, 2020 · article · accessed 2026-10-20
  14. Xijie Yang, Linning Xu, Lihan Jiang, Dahua Lin, Bo Dai · Virtualized 3D Gaussians: Flexible Cluster-based Level-of-Detail System for Real-Time Rendering of Composed Scenes · SIGGRAPH Conference Papers 2025 (arXiv), 2025 · paper · accessed 2026-10-20

Last updated 2026-10-22