Localized touch/cursor-point distortion — driven live, not by sliders.
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 uv = vUv; vec4 src = texture2D(uTex, uv); float aspect = uResolution.x / max(1.0, uResolution.y); vec2 asp = vec2(aspect, 1.0); vec2 center = vec2(uX, uY); vec2 d = (uv - center) * asp; float dist = length(d); float rad = max(0.015, uRadius); float falloff = 1.0 - smoothstep(0.0, rad, dist); falloff = pow(clamp(falloff, 0.0, 1.0), 1.5); float strength = uAmount * falloff; if (strength <= 0.001) { gl_FragColor = src; return; } vec2 dirOut = dist > 0.0001 ? normalize(d) / asp : vec2(0.0); // Flowing curl-ish noise for the ambient/drag character. float n1 = noise(uv * 10.0 + uTime * 0.7); float n2 = noise(uv * 10.0 + 47.0 - uTime * 0.7); vec2 flowDisp = (vec2(n1, n2) - 0.5) * 2.0; // Blend toward a straight radial push as uChaos rises -- flowing warp // at 0, a sharper outward shove once a hold-branch burst sets it high. vec2 mixedDisp = mix(flowDisp, dirOut, 0.25 + uChaos * 0.5); vec2 offUv = clamp(uv + mixedDisp * strength * mix(0.05, 0.11, uChaos), 0.0, 1.0); vec3 moshed = texture2D(uTex, offUv).rgb; // Chromatic split, radiating outward from the point -- reads as a // shockwave once uChaos pushes the offset wider. vec2 chromaOff = dirOut * strength * mix(0.012, 0.03, uChaos); float rCh = texture2D(uTex, clamp(offUv + chromaOff, 0.0, 1.0)).r; float bCh = texture2D(uTex, clamp(offUv - chromaOff, 0.0, 1.0)).b; vec3 split = vec3(rCh, moshed.g, bCh); // Block glitch only bites as uChaos rises, so a plain drag stays a // smooth warp and a hold-branch burst reads as circuitry breaking. vec2 blockUv = floor(uv * 40.0) / 40.0; float blockRoll = rand(blockUv + floor(uTime * 14.0)); float blockHit = step(1.0 - uChaos * 0.55, blockRoll) * falloff; vec3 blocked = mix(split, split.brg, blockHit); vec3 outc = mix(src.rgb, blocked, strength); gl_FragColor = vec4(outc, src.a); }