Copies of you from a moment ago stand beside you, each in its own neon colour: a crowd of past selves.
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 curTex = texture2D(uTex, vUv); vec3 acc = curTex.rgb; float sp = uSpread * 0.22; // Three clones, one side then the other then further out, each from a later // moment than the last. A clone shows wherever the subject is at its offset // (the depth proxy says where) and wherever that spot changed since then, so a // person standing still still has company and a moving one leaves a wake. vec2 uv1 = vUv + vec2(-sp, 0.0); vec3 p1 = timeAt(uv1, uReach * 0.33); float m1 = max(smoothstep(uGate - 0.15, uGate + 0.15, depthAt(uv1)), 0.8 * smoothstep(0.05, 0.28, length(p1 - texture2D(uTex, uv1).rgb))); vec3 t1 = hsv2rgb(vec3(fract(uHue), 0.85, 1.0)); vec3 g1 = mix(p1, t1 * (0.35 + dot(p1, vec3(0.299, 0.587, 0.114))), 0.7); acc = mix(acc, max(acc, g1), m1 * uAmount * 0.85); vec2 uv2 = vUv + vec2(sp, 0.0); vec3 p2 = timeAt(uv2, uReach * 0.66); float m2 = max(smoothstep(uGate - 0.15, uGate + 0.15, depthAt(uv2)), 0.8 * smoothstep(0.05, 0.28, length(p2 - texture2D(uTex, uv2).rgb))); vec3 t2 = hsv2rgb(vec3(fract(uHue + 0.18), 0.85, 1.0)); vec3 g2 = mix(p2, t2 * (0.35 + dot(p2, vec3(0.299, 0.587, 0.114))), 0.7); acc = mix(acc, max(acc, g2), m2 * uAmount * 0.65); vec2 uv3 = vUv + vec2(-sp * 2.0, 0.0); vec3 p3 = timeAt(uv3, uReach); float m3 = max(smoothstep(uGate - 0.15, uGate + 0.15, depthAt(uv3)), 0.8 * smoothstep(0.05, 0.28, length(p3 - texture2D(uTex, uv3).rgb))); vec3 t3 = hsv2rgb(vec3(fract(uHue + 0.36), 0.85, 1.0)); vec3 g3 = mix(p3, t3 * (0.35 + dot(p3, vec3(0.299, 0.587, 0.114))), 0.7); acc = mix(acc, max(acc, g3), m3 * uAmount * 0.45); gl_FragColor = vec4(acc, curTex.a); }