Per-pixel chromatic shake.
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 t = uTime * mix(6.0, 70.0, uRate) + uPulse*3.0; vec2 j = vec2(noise(vec2(vUv.y*40.0,t)), noise(vec2(vUv.x*40.0,t+11.0))) - 0.5; // Per-channel shake, which is what "chromatic" in the blurb promised and // what keeps this distinct from a plain positional wobble. vec2 o = j * uAmount * 0.13; vec3 col; col.r = texture2D(uTex, vUv + o * 1.35).r; col.g = texture2D(uTex, vUv + o * 0.15).g; col.b = texture2D(uTex, vUv - o * 1.05).b; // Alpha has no channels to chromatically split, so it rides the // unshifted position — that's still the shake's own displacement of // vUv upstream, so a transparent source's silhouette still shakes with // the effect, just without the per-channel fringing that only makes // sense for color. gl_FragColor = vec4(col, texture2D(uTex, vUv).a); }