Concentric blast rings that refract light — fires on every pulse.
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(){ vec2 c = vUv - 0.5; c.x *= uResolution.x / max(uResolution.y, 1.0); float r = length(c); float freq = mix(6.0, 48.0, uRings); // uPulse drives the wavefront outward, so taps and beats visibly detonate. float wave = sin(r * freq - uTime * 3.0 - uPulse * 7.0); float ring = wave * exp(-r * 2.2); float amt = uAmount * (0.35 + uPulse * 0.9); vec2 dir = c / max(r, 1e-4); vec2 off = dir * ring * amt * 0.16; // Split the channels across the wavefront — refraction, not just offset. vec3 col = vec3( texture2D(uTex, vUv + off * 1.3).r, texture2D(uTex, vUv + off).g, texture2D(uTex, vUv + off * 0.7).b ); col += vec3(0.55, 0.75, 1.0) * max(0.0, ring) * amt * 1.15; // Alpha rides the green channel's own refracted offset. gl_FragColor = vec4(col, texture2D(uTex, vUv + off).a); }