A level of detail is a reduced version of a mesh used when an object is far enough away that the reduction is invisible.
The principle
An object covering thirty pixels does not need thirty thousand triangles. Rendering a simplified version costs less and looks identical at that size.
Generating them
- Automatic reduction in the DCC tool or engine. Fast, adequate for most props.
- Hand-authored for hero assets, where an artist decides what to keep.
- Impostors — a billboard showing a pre-rendered image — for the most distant level of very numerous objects like trees.
Switching
By screen coverage, not world distance. A large object at fifty metres covers more pixels than a small one at ten, and pixel coverage is what determines visibility of detail.
Making the transition invisible
- Preserve the silhouette. Interior detail can go; the outline is what the eye tracks.
- Switch late. Most popping complaints are thresholds set too aggressively.
- Keep UVs consistent across levels, or the texture visibly shifts at the swap.
- Dither or cross-fade the transition where the engine supports it.
When LODs do not help
- Draw-call-bound scenes. LODs reduce vertices, not calls. Sometimes they increase calls, by preventing batching between objects at different levels.
- Objects always seen close. A first-person weapon has one distance.
- Very small props. The memory cost of several versions outweighs the saving.
- Nanite-style virtualised geometry, which handles the problem differently — see Nanite.
Memory cost
Each level is stored. A four-level chain is roughly a third more memory than the base mesh alone. On memory-constrained platforms that trade is not automatically worth it.
With generated assets
Build the chain from your retopologised LOD0, not from the raw reconstruction. Reducing an already-arbitrary mesh gives you a chain of arbitrary meshes.