The subject stretches toward the lens while the room falls away behind. Depth as a physical force.
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); vec2 rel = vUv - 0.5; // Per-pixel zoom driven by depth: near surfaces magnify, far ones recede, // which is the monocular cue the brain reads as approach. float z = 1.0 - (d - 0.35) * uAmount * 0.55; // Depth-proportional rotation adds the twist that keeps it from reading as // a plain vignette zoom. float ang = (d - 0.35) * uSwirl * 1.6 * (0.6 + uPulse * 0.8); float ca = cos(ang), sa = sin(ang); rel = mat2(ca, -sa, sa, ca) * rel * z; gl_FragColor = texture2D(uTex, clamp(rel + 0.5, 0.0, 1.0)); }