Quick answer: Godot 4 3D post-process shader showing flipped scene? Compatibility renderer uses bottom-up UVs; Forward+ uses top-down - branch on the renderer at compile time.

Pixelation post effect works in Forward+. Switched to Compatibility for mobile, image is upside-down.

Branch on renderer

vec2 uv = SCREEN_UV;
#ifdef RENDER_GLES
uv.y = 1.0 - uv.y;
#endif

Preprocessor branch ensures the right UV orientation per renderer.

Or use VIEWPORT_TEXTURE

Viewport-based capture has consistent orientation across renderers. Heavier setup; simpler shader.

Test on both renderers

Project Settings > Rendering > Renderer. Switch and verify post-process orientation in both.

“UV orientation is a backend choice. Cross-renderer shaders carry the conditional.”

If your project ships on mobile, write all shaders against the renderer with the flipped UV first. Adapting downward is easier than upward.