Mobile Game Lighting System Development: From Concept to Optimization

Realtime lighting on mobile is a constant trade-off One dynamic Point Light with shadows in URP on an Adreno 640 costs about 1.5–2.5 ms per frame. At a target of 60 FPS, the entire frame budget is 16.6 ms, and two such sources already consume a third of it on light alone. After testing dozens of

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 1All 1734 services
Mobile Game Lighting System Development: From Concept to Optimization
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    600

Realtime lighting on mobile is a constant trade-off

One dynamic Point Light with shadows in URP on an Adreno 640 costs about 1.5–2.5 ms per frame. At a target of 60 FPS, the entire frame budget is 16.6 ms, and two such sources already consume a third of it on light alone. After testing dozens of configurations, we found the sweet spot: bake everything that doesn't move and keep 1–2 realtime sources for gameplay events.

Lighting strategy for mobile GPUs

The fundamental choice is the ratio between baked and realtime light. For most mobile games, the rule is simple: bake all static lighting, minimize dynamic.

In Unity URP this means using Mixed Lighting with Subtractive or Shadowmask mode. Subtractive is faster – static shadows are baked into the lightmap, and dynamic objects cast shadows on statics via mixed light. Shadowmask is more accurate but requires an extra texture on the GPU.

Lightmap resolution is a common mistake. Texels per unit = 20 for detailed geometry and 4–8 for background environment. One giant 2048×2048 lightmap atlas per location is good. Twenty small 256×256 lightmaps are bad – that's twenty texture binds. To avoid this, we group statics into one atlas and reuse materials.

When are dynamic sources justified?

Dynamic light is needed for gameplay events: explosions, gunshots, interactive torches. Implement them with short-lived Light objects and interpolation of Range:

IEnumerator FlashLight(Light light, float intensity, float duration) { float elapsed = 0f; while (elapsed < duration) { light.intensity = Mathf.Lerp(intensity, 0f, elapsed / duration); elapsed += Time.deltaTime; yield return null; } light.enabled = false; } 

Such flash lights can be used without shadow casting – visually the difference is minimal, and performance is significantly better.

Limit per-object lights. In URP set Additional Lights > Per Object Limit to 1–2 for mobile presets. The default is 8 – that's a desktop value. From our experience: on Adreno 618, two realtime sources without shadows add 0.8 ms of extra GPU time.

How Light Probes work?

Characters and enemies move through baked zones and need correct ambient lighting. We place Light Probe Groups at lighting transition points: shadow entrances, torch zones, dark corridors. For large dynamic objects, LightProbeProxyVolume replaces per-probe interpolation with volumetric sampling.

Without Light Probes, a character in a dark corner looks as if standing in sunlight – the ambient from Skybox is applied without positional awareness.

Ambient Occlusion: mobile alternatives

Screen Space AO (SSAO) on mobile is a no. It's expensive and unnecessary with proper lightmaps. Alternatives:

  • Baked AO in lightmaps – free at runtime, configured in Generate Lighting settings.
  • Vertex AO – baked into vertex colors, sampled in shader, completely free.
  • GTAO in URP 15+ – experimental, on high-end mobile GPUs acceptable with a low radius.

Godot 4: lighting in 2D

In 2D games with Godot: CanvasItemMaterial with Light Mode = Normal Map Only enables normal maps on sprites for pseudo-3D lighting without actual 3D. PointLight2D with Shadow Enabled = false is cheap. DirectionalLight2D simulates sunlight in top-down games.

Normal mapping in 2D is a powerful tool: the game looks three-dimensional but renders as flat sprites. On mobile, this is significantly cheaper than switching to 3D for visual depth.

How to profile lighting?

Unity Frame Debugger shows all draw calls related to lighting. Xcode GPU Frame Capture on iOS gives a precise breakdown of shader invocations. Targets: Shadow Map passes ≤2 per frame, Additional Lights ≤2 realtime sources simultaneously.

Parameter Target value Critical value
Shadow Map passes ≤2 >4
Realtime lights per object 1-2 >4
Lightmap atlas size 2048×2048 Multiple small atlases
Additional Lights total ≤4 >8

What is included in the lighting system development?

  1. Scene and target device analysis – strategy selection (baked/realtime mix).
  2. Lightmap resolution adjustment and atlas creation – eliminate resource waste.
  3. Light Probes placement and Proxy Volume configuration.
  4. Dynamic source optimization: Per-Object Limit, coroutine caching.
  5. Profiling and finalization – Frame Debugger, GPU Capture, Instruments.
  6. Documentation for the team (configs, diagrams, metrics).

Our track record: 10+ years in mobile development, 50+ projects optimized for iOS/Android. We guarantee the lighting system will fit within 16.6 ms frame budget for 60 FPS on target devices. Contact us for a consultation or estimate for your project.

Unity URP documentation: https://docs.unity3d.com/Manual/universal-render-pipeline.html

Common lighting setup mistakes
  • Using 4+ realtime sources on mobile.
  • Too high lightmap resolution for background environments.
  • Forgetting to place Light Probes – dynamic objects look flat.
  • Enabling SSAO without performance testing.