Geometry and distant objects
Unity LOD Tutorial: Set Up LODGroups and Optimize Distant Objects
Build a useful LOD chain, preview its transitions, and catch the quality settings that can keep expensive meshes visible for too long.
Screenshots: Unity 6000.0.62f1 · URP 17.0.4 · macOS Metal. A small demonstration scene illustrates the controls and rendering mechanisms. Editor timings are not device benchmarks. Click any screenshot to enlarge it.
When level of detail helps
A Unity LODGroup switches between configured renderers as an object changes apparent size. It is useful when distant objects spend geometry or material work on detail the player cannot see. It is less likely to move frame time when the limiting work is scripts, loading or a full-screen effect. Start with the rendering diagnosis workflow if the bottleneck is still unclear.
LOD selection is based on screen-relative height, not a fixed metre distance. A large object, a different field of view or a different camera projection changes where the same threshold is reached. Unity introduces the concept in level of detail.
This tutorial uses a small rock with three manually prepared meshes. The counts are deliberately simple so that the selected level is easy to recognize. They are not a recommended polygon budget for production assets.
Step 1: prepare a useful LOD chain
Create or import a detailed mesh and suitable reduced versions. Keep their pivot, scale and placement aligned, and preserve the silhouette that matters from the gameplay camera. Name the child objects clearly, for example LOD0, LOD1 and LOD2, under one root.
Compare more than triangle counts. A reduced mesh with several material slots can still generate several draws. A distant representation with an unnecessarily costly transparent material can preserve much of the pixel workload. Check the complete renderer and material setup at each level.
Adding a LODGroup does not generate reduced meshes. If you use an external simplification workflow, review its output for UV damage, silhouette changes, normals and material assignments before configuring the group.
Step 2: assign the right renderers to each level
Add a LOD Group component to the root. Select a level in its transition bar and assign the intended child Renderer components to that level. A level can contain more than one renderer when the representation needs several parts.
Check every level individually. Accidentally assigning the detailed renderer to two levels defeats the intended reduction. Leaving a decorative renderer outside the group can keep it active while the main mesh changes level. A missing renderer can make the object disappear at a transition.
After changing child geometry or placement, use Recalculate Bounds where needed and inspect the group's size. Bounds that no longer describe the object can make its screen-size selection surprising. Refer to the LOD Group component reference for the controls.
Step 3: tune thresholds with the real camera in mind
The demonstration uses transitions at 55%, 25% and 8% screen-relative height. LOD0 covers the largest apparent sizes, LOD1 the next range, LOD2 the smallest visible range, and the final range is culled. Use these values to understand the bar, then choose thresholds for your own silhouette and camera.
Drag the camera marker in the LODGroup preview and inspect each transition in Scene View. Then run the gameplay camera through the same distances and viewing angles. Test slow approaches as well as fast movement: a transition that is unobtrusive during a sprint may be obvious when the player stops.
Judge the rendered object at the intended display resolution. Losing tiny details is often acceptable; changing a recognizable outline, creating holes or abruptly removing an important prop may not be. For thin shapes, check multiple angles instead of relying on a single front view.
Step 4: check LOD Bias, Maximum LOD Level and fading
Open Edit > Project Settings > Quality and inspect the Quality Level the target platform actually uses. LOD Bias changes selection: a larger value retains higher detail for longer. Maximum LOD Level can exclude the most detailed levels. Review all quality tiers you ship; testing only the Editor's selected tier can miss a device-specific result. Unity documents both in Quality Settings.
For cross-fading, check the LODGroup's fade configuration and the pipeline and shader support. URP also exposes LOD Cross Fade in its asset's Quality section. Enabling a pipeline option alone does not configure every group or make every custom shader handle the fade correctly.
Fading can hide a sudden transition, but the transition may render both representations for a period. Check its workload while the camera moves through a dense field of objects. Prefer a visual solution with a measured cost that fits the scene, rather than enabling fading everywhere by default.
Step 5: validate submitted work and frame time
Record the same camera route before and after changing one LOD chain. Use the target device and fixed quality settings. Inspect submitted triangles, relevant rendering events, CPU/GPU timing where supported and visual quality. Keep the Frame Debugger disabled during timing collection.
A lower asset triangle count is an expected mechanism, not proof of a faster frame. If the distant object was already a small part of the workload, the change may be below ordinary timing variation. If it casts shadows or participates in additional passes, inspect those paths too.
Keep the result only after checking the target camera, quality tiers and representative motion. For obstructed views, occlusion culling addresses whether an object needs drawing at all. For submission-heavy scenes, use the draw calls and batching guide.
Common Unity LOD problems
| Symptom | Check | Focused correction |
|---|---|---|
| Detailed mesh stays active far away | LOD Bias, thresholds, bounds and camera field of view. | Fix the cause on one candidate and repeat the camera route. |
| Object disappears at a transition | Renderer assignments, final cull threshold and child alignment. | Restore the missing representation and inspect every range. |
| A child never changes detail | Whether its Renderer belongs to the group. | Assign it to the intended levels or deliberately keep it separate. |
| Editor and device differ | Active Quality Level, Maximum LOD Level and camera settings. | Reproduce the device configuration before tuning the chain. |
| Fewer triangles, similar frame time | The actual limiting CPU/GPU work and additional passes. | Keep useful geometry savings, but investigate the remaining bottleneck. |
Frequently asked questions
What does LOD mean in Unity?
Level of detail uses different representations of an object as its apparent size changes. A LODGroup selects the configured renderers; you must supply suitable meshes or other representations.
Are Unity LOD thresholds measured in metres?
LODGroup thresholds use the object's height relative to the screen height. Camera projection, field of view, object size and quality settings affect where the transition occurs in world space.
Does adding a LODGroup generate lower-poly meshes?
No. Adding the component configures selection between renderers. Create or import the reduced meshes separately, then assign them to the appropriate levels.
Why does Unity select a different LOD than I expect?
Check the active Quality Level's LOD Bias and Maximum LOD Level, group bounds, camera field of view and renderer assignments. Also remove temporary forced-LOD overrides used during debugging.
Does LOD reduce draw calls?
It can, if a lower level uses fewer renderers, submeshes or passes. A lower triangle count alone does not guarantee fewer draw calls or a faster frame.
Sources and version notes
Official Unity 6.0 documentation, checked October 4, 2026. Match the documentation version to your project.
Continue the investigation · A 7 Wolves tool
Find LOD candidates across the scene
GPUSight's Scene View maps and LOD investigation help you locate geometry-heavy contributors and inspect their LOD setup. Use those signals to choose candidates, then verify the active levels and timing in Unity.