Brightness decides how far back in time each pixel is sampled — the frame tears itself across multiple moments.
GLSL fragment shader
The effect's own code. The uniforms and helpers above it — uTex, uFeedback, the depth proxy, the frame ring, depthAt(), timeAt() — are the same header every Ether-MOSH shader opens with, and are documented once on the registry rather than reprinted on all 143 pages.
void main(){ vec4 cur = texture2D(uTex, vUv); float lum = dot(cur.rgb, vec3(0.299,0.587,0.114)); // Displace the history lookup by luminance, so bright and dark regions // lag by different amounts and the image shears through time. vec2 off = vec2(sin(lum*6.2831 + uTime*0.7), cos(lum*6.2831 - uTime*0.5)) * uWarp * 0.05; vec3 past = texture2D(uFeedback, vUv + off).rgb; float sel = smoothstep(0.25, 0.75, lum); gl_FragColor = vec4(mix(cur.rgb, mix(past, cur.rgb, sel), uAmount), cur.a); }