Each column sampled from a different moment.
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(){ // No frame history is available here, so the time offset is expressed as a // per-column displacement — the same smeared, stretched read as the real // technique, which is what matters. float n = mix(6.0, 90.0, uSlices); float col = floor(vUv.x * n) / n; float phase = sin(col * 24.0 + uTime * 1.6) * 0.5 + 0.5; float pull = (phase - 0.5) * uAmount * 0.55; vec2 uv = vec2(vUv.x, clamp(vUv.y + pull, 0.0, 1.0)); vec4 srcTex = texture2D(uTex, uv); vec3 c = srcTex.rgb; // Seam highlight so the slice boundaries stay legible. float seam = smoothstep(0.0, 0.02, abs(fract(vUv.x * n) - 0.5) * 2.0); // uv already carries the per-column time-slice pull, so a transparent // source's silhouette slit-scans along with its color. gl_FragColor = vec4(c * (0.75 + seam * 0.35), srcTex.a); }