shader_type canvas_item; uniform bool animate_noise = false; uniform float noise_intensity = 1.0; uniform float fps = 60.0; float random (vec2 uv) { return fract(sin(dot(uv.xy, vec2(12.9898,78.233))) * 43758.5453123); } void fragment() { float time = floor(fract(TIME) * fps); vec2 noise_uv = SCREEN_UV + time * float(animate_noise); float noise = random(noise_uv); noise = mix(1.0 - noise_intensity, 1.0, noise); COLOR = vec4(COLOR.rgb * noise, COLOR.a); }