Quick answer: uniform sampler2D screen : hint_screen_texture, filter_linear_mipmap;. Add a BackBufferCopy node above the consumers.
Custom water shader samples scene texture for refraction. Output looks banded; sampling the buffer being written to.
The Fix
/* shader */
shader_type canvas_item;
uniform sampler2D screen : hint_screen_texture, filter_linear_mipmap;
void fragment() {
vec2 uv = SCREEN_UV + refract_offset();
COLOR = texture(screen, uv);
}
// Scene tree
WorldRoot
— BackgroundSprite
— BackBufferCopy // snapshot above water
— WaterMesh (uses shader above)
BackBufferCopy resolves the read-write conflict by capturing scene-so-far into a stable texture.
Verifying
Banding gone. Refraction smooth. Without BackBufferCopy: visible bands and shimmer.
“Hint + filter + BackBufferCopy. Refraction clean.”
Related Issues
For shader UV flip, see UV flip. For shader uniform array, see uniform array.
BackBufferCopy. Hint. Sample clean.