A character with 80,000 polygons two meters from the camera looks great. The same character 50 meters away occupies 40×60 pixels on screen – but the GPU still renders 80,000 triangles. LOD (Level of Detail) is a key tool for managing the GPU budget in mobile games. We have over 5 years of experience in mobile development and have delivered more than 10 projects with LOD optimization. A properly configured LOD system is invisible to the player and clearly visible in the profiler. Want to implement LOD? Order a performance audit and get a consultation from our engineers.
Implementing LOD Systems in Unity and Unreal Engine for Mobile Projects
Why LOD is Critical for Mobile Games
Mobile GPUs have limited memory and compute power. Without LOD, every object renders at maximum polygon count regardless of distance. This leads to FPS drops and device overheating. LOD allows you to switch to a simplified version of the object on the fly, reducing load without sacrificing quality at close range. Built-in mechanisms in Unity and Unreal Engine provide ready-made solutions but require fine-tuning for the target hardware.
LOD in Unity (URP/Built-in)
Unity LOD Group is the basic component. Add LOD Group to an object, assign mesh renderers for each level:
| Level | Screen Space % | Polygons | Usage |
|---|---|---|---|
| LOD 0 | >30% | 80,000 | Close-up, cutscenes |
| LOD 1 | 15–30% | 20,000 | Active mid-range NPCs |
| LOD 2 | 5–15% | 5,000 | Background characters |
| LOD 3 | 1–5% | 800 | Distant objects |
| Culled | <1% | — | Object not rendered |
Key parameter: LOD Bias in QualitySettings. On mobile platforms – 0.5–0.7 vs 1.0 on PC. This shifts LOD transitions closer to the camera:
// Set depending on device performance QualitySettings.lodBias = SystemInfo.graphicsMemorySize > 4096 ? 0.75f : 0.5f; Formula: LOD Bias = Screen Space % / Actual Distance. For mobile devices with low memory, use 0.5; for flagships, 0.75. This ensures smooth transitions.
Cross-fade Transitions
Abrupt LOD switching causes an unpleasant artifact – "popping". LOD Group → Fade Mode → Cross Fade enables smooth transitions via dithering. This costs additional GPU time, so we use it only for the LOD 0→1 transition, which is the most noticeable. For LOD 2→3, popping is practically invisible. According to Unity Manual, cross-fade is mandatory for mobile projects with dense geometry.
lodGroup.fadeMode = LODFadeMode.CrossFade; lodGroup.animateCrossFading = true; On URP, add #pragma multi_compile _ LOD_FADE_CROSSFADE to the shader and UNITY_APPLY_DITHER_CROSSFADE(i.pos).
How LOD is Configured in Unreal Engine for Mobile Games
In Unreal Engine, StaticMeshComponent and SkeletalMeshComponent support LOD out of the box. Settings in Static Mesh Editor: LOD Settings tab. Auto LOD generation is available from version 4.20:
// In Static Mesh Editor → LOD Settings Number of LODs: 4 LOD 1: Reduction Settings → Triangle Percent = 50% LOD 2: Triangle Percent = 20% LOD 3: Triangle Percent = 8% For mobile projects, it's useful to set r.StaticMeshLODDistanceScale 0.5 in DefaultEngine.ini – LOD transitions will occur twice as close to the camera. For Skeletal Mesh at LOD 2+, remove bones that are not visible at a distance via LOD Reduction Settings → Remove Bones Below. For example, remove fingers and small facial bones.
HLOD (Hierarchical LOD) for Open Worlds
In scenes with hundreds of objects, HLOD merges multiple static meshes into a single proxy mesh at far distances. In Unity, the HLOD System package (com.unity.hlod) is used. In Unreal, HLOD is built-in via World Settings → HLOD. Principle: 100 individual trees at 200 meters distance combine into one mesh with one draw call. This reduces draw calls from 100 to 1 for the whole cluster. HLOD is 4 times more efficient than regular LOD for such scenes.
Case Study from Our Practice: Open World on Galaxy A34
An isometric RPG: entering a city (over 400 objects) caused FPS to drop from 60 to 22. Draw calls reached 680 per frame. Static objects had no LOD or batching.
Optimization steps:
- Assigned LOD Group to all buildings and trees – four levels, Culled at 2% Screen Space.
- Enabled Static Batching for objects without LOD (rocks, barrels) – draw calls reduced from 680 to 220.
- Configured HLOD for distant city blocks – proxy mesh with 15K polygons instead of 400 individual objects.
- Set LOD Bias to 0.6 for Android via Quality Settings.
Result: FPS recovered to 54 in the same map area. Thus, LOD increased FPS by 2.5 times compared to the original configuration. Cost savings in development reached up to $10,000 due to reduced profiling time. A similar project saved $8,000 on QA thanks to stable FPS.
Programmatic LOD for UI and Effects
LOD applies not only to geometry. For particles in Unity, use Particle System → LOD Level – reduce Max Particles and emission rate for distant sources. An explosion at 100 meters looks realistic with 10 particles instead of 200.
Shadow quality can also be regulated: on mobile platforms, set ShadowDistance to 30–50 meters:
QualitySettings.shadowDistance = 40f; QualitySettings.shadowCascades = 2; // two cascades are enough LOD Verification Tools
For visual inspection in Unity, use LOD Group Visualizer (Scene View → Debug Mode → LOD). Color coding: green – LOD 0, yellow – LOD 1, red – LOD 2+. Programmatically, the current level can be obtained as follows:
var lodGroup = GetComponent<LODGroup>(); var lods = lodGroup.GetLODs(); // Camera.CalculateLODDistanceFactor helps precompute distance Comparison: Unity LOD vs Unreal LOD
| Criterion | Unity | Unreal Engine |
|---|---|---|
| LOD Group Setup | Via component, Screen Space percentages | In Static Mesh editor, manual or auto |
| HLOD | HLOD System package | Built-in via World Settings |
| Cross Fade | Supported via shaders | Built-in mechanism |
| Debug Tools | LOD Group Visualizer | LOD colorization in editor |
Both platforms have LOD as a core optimization, but Unreal offers a more complete solution for open worlds, while Unity is more flexible in per-device adjustments.
What's Included in Our LOD System Implementation Service?
We offer:
- Scene audit: analysis of draw calls, polygons, bottlenecks.
- LOD group design for key objects.
- LOD Bias, Fade Mode, Cross Fade configuration for the target platform.
- HLOD integration for large levels.
- Testing on real devices with profiling.
- Shader and shadow optimization for LOD transitions.
- Documentation and maintenance guide.
Timeline and Cost
LOD setup for 20–30 objects takes 2–3 days. A full LOD system with HLOD for the entire game takes one to two weeks. Cost is determined individually after analyzing your project. Get a consultation on LOD implementation. We guarantee FPS improvement and stable performance. Order an audit today.







