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.