Quick answer: Compatibility (OpenGL 3.3, OpenGL ES 3.0, WebGL 2) does not support several Forward+ features, including SDFGI, VoxelGI, SSAO, SSIL, SSR and volumetric fog, and it limits lights per object. Web exports always use it, and recent Godot versions fall back to it on PCs without Vulkan support. Detect the renderer with RenderingServer.get_current_rendering_method() and adjust the scene for it.

A scene that looks right in Forward+ can come out flat, dark or oddly lit in Compatibility. That matters more than it used to: web builds always use Compatibility, many developers choose it for low-end hardware, and players whose GPUs lack Vulkan support may be running it without you knowing.

What Compatibility does not do

Compatibility trades features for reach. Compared with Forward+, the effects most likely to change how your scene looks are:

Godot's documentation has a feature comparison table between renderers; check it for your version, since Compatibility gains features with each release.

Why some players see it without choosing it

Detect the renderer at runtime

func _ready() -> void:
    var method := RenderingServer.get_current_rendering_method()
    print("Renderer: ", method, " on ", RenderingServer.get_video_adapter_name())
    if method == "gl_compatibility":
        _apply_compatibility_look()

func _apply_compatibility_look() -> void:
    var env: Environment = $WorldEnvironment.environment
    env.ambient_light_energy = 1.4      # make up for missing GI
    env.tonemap_exposure = 1.1

Values like these are starting points; tune them by eye in Compatibility.

Test it without changing the project

Run the game with the Compatibility renderer from the command line, or from Debug > Customize Run Instances arguments in the editor:

godot --path . --rendering-method gl_compatibility

Walk through each level and compare screenshots with Forward+. Darker interiors (missing GI), objects lit by too many lights (light limit) and flat reflective surfaces (no SSR) are the usual finds.

Adapting the scene

Knowing which renderer players run

“The game is too dark” from one player and not another is often a renderer difference. Bugnet's Godot SDK is a single GDScript autoload that watches the engine log and files errors, script errors and fatal errors automatically with recent log lines, a screenshot, the platform, OS, hardware and game version, and players can report everything else through Bugnet.show_widget(). You can add the rendering method from RenderingServer to report metadata, so visual complaints arrive already split by renderer and GPU.

Frequently asked questions

What features does Godot’s Compatibility renderer lack?

Compared with Forward+, it has no SDFGI, VoxelGI, SSAO, SSIL, SSR or volumetric fog, and limits how many lights affect each object. Glow and tonemapping also differ.

How do I check which renderer my Godot game is using?

Call RenderingServer.get_current_rendering_method(). It returns forward_plus, mobile or gl_compatibility.

Why does my Godot game use Compatibility on some PCs?

Web exports always use it, per-platform settings may select it, and recent Godot versions fall back to it automatically when Vulkan is not available.

Run every level once with --rendering-method gl_compatibility before you ship a web build.