You and the room behind you slide in opposite directions. The frame stops being flat.
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(){ float d = depthAt(vUv); // Signed around the pivot: everything nearer than the pivot travels one // way, everything further travels the other. A single-sided push would // only smear the subject; the opposition is what reads as separation. float signedD = (d - uPivot) * 2.0; float a = uAngle * 6.2831853; vec2 dir = vec2(cos(a), sin(a)); vec2 off = dir * signedD * uAmount * (0.16 + uPulse * 0.10); gl_FragColor = texture2D(uTex, clamp(vUv - off, 0.0, 1.0)); }