Classic chromatic aberration.
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(){ // Radial prismatic divergence rather than a flat linear offset: channels // separate outward from a moving focus, so this reads as a lens breaking // apart rather than as the horizontal tape smear VHS Bleed already owns. // It was the single most redundant effect in the library before this, // appearing in ten near-duplicate pairs. vec2 focus = vec2(0.5) + 0.22 * vec2(cos(uAngle * 2.0), sin(uAngle * 2.0)); vec2 d = vUv - focus; float rr = length(d); vec2 dir = d / max(rr, 1e-4); // Divergence grows with radius, the way real chromatic aberration does. float k = uAmount * 0.19 * (0.25 + rr * 1.8); vec3 col; col.r = texture2D(uTex, vUv + dir * k * 1.00).r; col.g = texture2D(uTex, vUv + dir * k * 0.25).g; col.b = texture2D(uTex, vUv - dir * k * 0.85).b; // Prismatic rim where the split is widest. float rim = smoothstep(0.25, 0.75, rr) * uAmount; col += vec3(0.40, 0.14, 0.62) * rim * 0.45; // Alpha rides the green channel's sample — the smallest divergence of // the three, closest to the undisplaced position. gl_FragColor = vec4(col, texture2D(uTex, vUv + dir * k * 0.25).a); }