Mobile rendering limitations

See also

The general 3D rendering limitations also apply to mobile platforms.

To improve out-of-the-box performance on mobile devices, Godot automatically uses low-end-friendly settings by default on both Android and iOS. These are configured by project settings with a .mobile feature tag suffix.

One of the most notable changes on mobile that will affect 3D projects is that lighting is done per-vertex instead of per-pixel. This improves performance a lot, but can break rendering in some scenes, especially if your meshes aren’t sufficiently subdivided for per-vertex lighting to look good. This can be disabled in the Project Settings at a performance cost (see below).

When using GLES2, some custom shaders may break when exporting to Android. This is caused by a lower shader precision being used by default to improve performance. You can force high precision on all shader computations by enabling rendering/gles2/compatibility/enable_high_float.Android project setting, but this has a significant performance cost and won’t work on all devices.

The following project settings have mobile-specific overrides:

Setting

Desktop default

Mobile default

rendering/quality/directional_shadow/size

4096

2048

rendering/quality/intended_usage/framebuffer_allocation

3D

3D Without Effects

rendering/quality/lightmapping/use_bicubic_sampling

true

false

rendering/quality/reflections/high_quality_ggx

true

false

rendering/quality/shading/force_blinn_over_ggx

false

true

rendering/quality/shading/force_lambert_over_burley

false

true

rendering/quality/shading/force_vertex_shading

false

true

rendering/quality/shadow_atlas/size

4096

2048

rendering/quality/shadows/filter_mode

PCF5

Disabled

GLES3 only: rendering/gles3/shaders/max_simultaneous_compiles

2

1

GLES3 only: rendering/gles3/shaders/shader_cache_size_mb

512

128

GLES3 only: rendering/quality/depth/hdr

true

false

GLES3 only: rendering/quality/reflections/texture_array_reflections

true

false

See the ProjectSettings class documentation for more information on those setting overrides.

If you’re only targeting mobile platforms in your project, consider changing the project settings’ values to match the mobile overrides. This way, you’ll get a preview that is closer to the mobile appearance when running the project on a desktop platform (as well as within the editor).

Warning

Due to driver bugs, GLES3 support on Android and iOS can be poor, especially on old or low-end devices. Therefore, it is recommended to use the GLES2 renderer when targeting mobile platforms (especially Android).

You can change the rendering backend in the Project Settings (Rendering > Quality > Driver > Driver Name).