Only you leave ghosts. The room behind you stays perfectly still and perfectly sharp.
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 cur = curTex.rgb; float d = depthAt(vUv); // Three points along the ring rather than one, so the trail is a continuous // wake instead of a single detached copy. vec3 past = timeAt(vUv, uReach * 0.34) * 0.5 + timeAt(vUv, uReach * 0.67) * 0.3 + timeAt(vUv, uReach) * 0.2; float g = smoothstep(uGate - 0.16, uGate + 0.16, d); vec3 echo = max(cur, past * uStrength); // The history ring only carries color, so alpha rides the current // frame's own value at this position — the ghosting is additive glow // within the subject's current silhouette, not a separate shape. gl_FragColor = vec4(mix(cur, echo, g), curTex.a); }