LOD system implementation for mobile game

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
LOD system implementation for mobile game
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing LOD System for Mobile Games

A character with 80,000 polygons 2 meters from the camera looks great. The same character 50 meters away occupies 40×60 pixels on screen—yet GPU still renders 80,000 polygons. LOD (Level of Detail) is a core tool for managing GPU budget in mobile games. Properly configured LOD is transparent to players and visible in profilers.

LOD in Unity (URP/Built-in)

Unity LOD Group—basic component. Add LOD Group to object, assign mesh renderers for each level:

Level Screen Space % Polygons Purpose
LOD 0 >30% 80,000 Close-up, cutscenes
LOD 1 15–30% 20,000 Active mid-distance NPC
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—0.5–0.7 vs 1.0 on PC. This shifts LOD transitions closer to camera:

// Set depending on device performance
QualitySettings.lodBias = SystemInfo.graphicsMemorySize > 4096 ? 0.75f : 0.5f;

Cross-fade Transitions

Hard LOD switching is visible—"popping". LOD Group → Fade Mode → Cross Fade enables smooth transitions via dither. Costs GPU time—use only for LOD 0→1 (most noticeable), for LOD 2→3 popping is imperceptible.

lodGroup.fadeMode = LODFadeMode.CrossFade;
lodGroup.animateCrossFading = true;

In URP, add #pragma multi_compile _ LOD_FADE_CROSSFADE and UNITY_APPLY_DITHER_CROSSFADE(i.pos) to shader.

LOD in Unreal Engine Mobile

StaticMeshComponent and SkeletalMeshComponent support LOD out of box. Configure in Static Mesh Editor: LOD Settings tab.

Auto LOD generation (Unreal 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: r.StaticMeshLODDistanceScale 0.5 in DefaultEngine.ini → LOD transitions happen twice closer to camera.

Skeletal Mesh LOD—separate story. Bones invisible at distance are removed from LOD 2+. LOD Reduction Settings → Remove Bones Below—cut fingers, facial details for LOD 2+.

HLOD (Hierarchical LOD)

For open worlds with many objects—HLOD merges multiple static meshes into one proxy mesh at distance. In Unity—HLOD System package (com.unity.hlod). In Unreal—built into World Settings → HLOD.

Principle: 100 separate trees at 200m distance combine into one mesh with one draw call. 100 draw calls → 1 for entire cluster.

Case: Open World on Galaxy A34

Isometric RPG: entering town (400+ objects) FPS dropped 60 to 22. Draw calls: 680 per frame. Static without LOD, no batching.

Optimization steps:

  1. LOD Group on all buildings and trees—4 levels, Culled at 2% screen space
  2. Static Batching for LOD-less objects (stones, barrels)—draw calls 680 → 220
  3. HLOD for far town quarters—proxy mesh with 15K polygons instead of 400 objects
  4. LOD Bias 0.6 for Android in Quality Settings

Result: 22 FPS → 54 FPS in same area.

Programmatic LOD for UI Elements

LOD applies beyond 3D geometry. Particles, UI, shadows also need detail levels.

Particle System LOD (Unity): Particle System → LOD Level—reduce Max Particles and emission rate for distant particles. Explosion 100m away needs 10 particles not 200.

Shadow Distance: shadows are expensive. On mobile—Shadow Distance = 30–50 meters vs standard 150:

QualitySettings.shadowDistance = 40f; // meters from camera
QualitySettings.shadowCascades = 2;   // 2 cascades not 4

LOD Verification Tools

Unity LOD Group Visualizer (Scene View → Debug Mode → LOD)—shows current active LOD colored. Green = LOD 0, yellow = LOD 1, red = LOD 2+.

// Programmatic LOD check at runtime
var lodGroup = GetComponent<LODGroup>();
var lods = lodGroup.GetLODs();
// Use Camera.CalculateLODDistanceFactor for pre-calculation

Timeline

Setting up LOD for 20–30 objects—2–3 days. Full LOD system for mobile game with HLOD—1–2 weeks.