Quick answer: Godot 4 multi-pass shader producing different render-target compatibility on Compatibility vs Forward+ renderers? Each backend has different MRT support - declare explicitly.

Stylized post-process; works on Forward+; on Compatibility, second pass fails to bind.

Declare per-renderer

#ifdef RENDER_FORWARD_PLUS
layout(location = 1) out vec4 b;
#endif

Backend-aware declaration. Compatibility skips the second target.

Or use Forward+ only

If your effect needs MRT, restrict to Forward+. Document compatibility limitation.

Test on both backends

Renderer switch in Project Settings. Each shader tested both ways.

“Backends differ. Multi-render-target support is one of the differences.”

If you ship cross-renderer, the per-backend shader audit is mandatory. Document; reuse.

Related reading