LOD (Level of Detail) — What It Is and How to Set It Up
Every game with open environments and dozens of simultaneous props uses LOD. Without it, the GPU renders every asset at full fidelity regardless of how far away it is — a massive waste of processing power that the player would never notice anyway. This guide explains how LOD works and how to implement it in your own assets.
What is Level of Detail?
Level of Detail (LOD) is a technique where a 3D asset is represented by multiple versions of decreasing polygon count. The game engine automatically switches between versions based on how much of the screen the asset occupies — showing the full-detail mesh up close and progressively simpler meshes as the asset moves further away from the camera.
From the player's perspective, nothing changes visibly. A distant prop occupies only a handful of pixels on screen — those pixels can't show any of the fine geometric detail present in the full-resolution mesh anyway. LOD takes advantage of this by swapping to a cheaper mesh the moment that detail becomes invisible.
The performance gains from LOD can be dramatic. A scene with 500 props all rendering at LOD0 might struggle to hit 60fps. The same scene with proper LODs set up runs comfortably — because the 400 props that are further away are each using 75–90% fewer triangles.
Planning a LOD Chain
A LOD chain is the sequence of mesh versions for a single asset, labelled LOD0 through LOD3 or LOD4. LOD0 is full detail — the version you spend the most modelling time on. Each subsequent level reduces the triangle count significantly.
| LOD Level | Triangle Reduction | Typical Use |
|---|---|---|
| LOD0 — Full detail | None | Close range. Every edge, chamfer, and surface detail visible. |
| LOD1 | ~50% reduction | Mid-range. Major shapes preserved, fine details removed. |
| LOD2 | ~75% reduction | Far distance. Silhouette only. Surface detail replaced by texture. |
| LOD3 | ~90% reduction | Very far. Coarse block-out shape. Barely visible. |
| Billboard (HLOD) | Flat quad | Extreme distance. A flat sprite image of the asset. Used for trees, rocks, distant props. |
Not every asset needs all four LOD levels. A small prop like a tin can might only need LOD0 and LOD1. A large, complex asset like a building or vehicle warrants the full chain. Use your judgement based on how prominent the asset is and how far away the player can view it from.
Auto LOD vs Manual LOD
All three major engines can auto-generate LODs by algorithmically simplifying your LOD0 mesh. This is fast and often good enough for background props. However, auto-LOD has real limitations that matter for anything the player will look at closely.
Auto LOD
Fast to produce. Good for background clutter and distant props. Can produce visible artifacts on hard-surface assets with flat faces, assets with important silhouettes, and anything with complex topology.
Manual LOD
Takes more time but produces far better results. You control exactly which edges are preserved and which are dissolved. Essential for hero props, characters, vehicles, and any asset the player examines closely.
For manual LODs, model each level separately in Blender or Maya. Start from the LOD0 mesh, duplicate it, and progressively dissolve edge loops, merge vertices, and simplify geometry — always preserving the silhouette and any features critical to the asset's readability at that distance.
Naming Convention for LODs
Engines detect LOD meshes automatically when they follow the correct naming convention. Getting this right means you can export all LOD levels in one FBX and the engine splits them out on import — no manual assignment needed.
| Engine | Naming Format | Example |
|---|---|---|
| Unreal Engine | MeshName_LOD0, _LOD1, _LOD2 |
SM_WoodCrate_LOD0, SM_WoodCrate_LOD1 |
| Unity | MeshName_LOD0, _LOD1, _LOD2 |
WoodCrate_LOD0, WoodCrate_LOD1 |
| Godot | MeshName_lod0, _lod1, _lod2 (lowercase) |
WoodCrate_lod0, WoodCrate_lod1 |
In Blender, name each mesh object using the convention before exporting. When you export to FBX, all LOD meshes should be in the same file. The engine's importer reads the suffix and automatically builds the LOD chain without you needing to set it up manually in the editor.
Setting Up LODs in Each Engine
Import FBX with LOD suffix naming — UE5 auto-detects and builds the LOD chain. Or open the Static Mesh Editor → LOD Settings → Generate LODs to auto-create from LOD0. Set screen-size thresholds per level in the LOD picker.
Add a LOD Group component to the parent GameObject. Drag each LOD mesh (as child objects) into the corresponding level slot in the LOD Group inspector. Set transition percentages by dragging the markers on the LOD bar.
Import a GLTF or OBJ with meshes named using _lod0, _lod1 suffixes for auto-detection. Or use a GeometryInstance3D node and configure LOD settings in the Visibility Range properties directly on the node.
Setting transition thresholds
Each engine exposes a way to control at what screen size (or distance) each LOD transition happens. The goal is to set the threshold just below the point where the quality difference between LOD levels becomes noticeable. In practice, this usually means:
Transition when the asset stops being examined closely
This is the most important transition. Set it conservatively — LOD1 should only kick in once fine edge details genuinely can't be seen at that distance.
Transition when only the silhouette matters
At this distance, only the rough shape of the asset is visible. LOD2 should preserve the overall silhouette while using far fewer triangles for everything inside it.
Cull when the asset is too small to see
At extreme distances, small props can be culled (not rendered at all) without the player noticing. Unreal and Unity both have a cull distance setting per LOD group.
LODs and Textures
LOD meshes share the same texture set as LOD0. You don't need to create new textures for each LOD level — the engine applies the same material to all of them. What does change is texture resolution: distant LODs are so small on screen that a 2048×2048 texture is pure waste at that range.
This is handled automatically through mipmaps — pre-calculated smaller versions of your textures that the engine uses at distance. When you import a texture and enable mipmap generation, the engine automatically uses the 512×512 mip version on a distant LOD2 mesh instead of the full 2048×2048. Always enable mipmaps on all your textures at import time.
Your LOD0 texture set from Trumble applies to all LOD levels. No re-painting required — the same material works across the whole LOD chain.
Enable mipmap generation at import time in your engine. The GPU automatically selects the correct mip level for each LOD based on screen size.
Export from Trumble at the resolution that matches your LOD0 poly budget. A 500-tri background prop rarely needs a 2048 texture — 1024 is usually more than enough.