Broken luminous arcs follow source edges and tone boundaries, with branching sparks and a soft halo. Sensitivity admits finer details; glow widens the light. A flat source produces sparse tone arcs rather than a solid rectangle.
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(){ vec4 base = texture2D(uTex, vUv); vec2 aspect = vec2(uResolution.x / max(uResolution.y, 1.0), 1.0); vec2 origin = vec2(uCenterX, uCenterY); if(uOrganicShape>0.5) origin=vec2(0.5)+(origin-0.5)*0.35/vec2(max(aspect.x,1.0),max(1.0/aspect.x,1.0)); vec2 p = (vUv - origin) * aspect / max(uSize, 0.01); float t = uTime * uSpeed; float aa = max(1.25 / max(uResolution.y * uSize, 1.0), 0.001) + uSoftness * 0.025; float coverage = 0.0; vec4 art = base; vec2 uv=clamp(origin+p*uSize/aspect,0.0,1.0); vec2 px=vec2(2.0)/max(uResolution,vec2(1.0)); vec3 weights=vec3(0.299,0.587,0.114); art=texture2D(uTex,uv); float l=dot(art.rgb,weights); float dx=dot(texture2D(uTex,clamp(uv+vec2(px.x,0.0),0.0,1.0)).rgb-texture2D(uTex,clamp(uv-vec2(px.x,0.0),0.0,1.0)).rgb,weights); float dy=dot(texture2D(uTex,clamp(uv+vec2(0.0,px.y),0.0,1.0)).rgb-texture2D(uTex,clamp(uv-vec2(0.0,px.y),0.0,1.0)).rgb,weights); float edge=smoothstep(0.08*(1.0-uSensitivity)+0.002,0.14*(1.0-uSensitivity)+0.025,length(vec2(dx,dy))); float phase=l*(5.0+uSensitivity*7.0)+length(p)*1.3+sin(p.x*23.0+p.y*17.0+t*2.0)*0.05*uMotion; float band=abs(fract(phase)-0.5); float core=1.0-smoothstep(0.018,0.04+aa,band); float halo=exp(-band*(35.0-22.0*uGlow))*uGlow*0.35; float breaks=smoothstep(0.1,0.5,sin(p.x*37.0-p.y*29.0+t*3.0*uMotion)); float spark=1.0-smoothstep(0.008,0.025+aa,abs(sin(p.x*34.0+p.y*21.0+sin(p.y*51.0)*0.6))); spark*=uBranching*smoothstep(0.25,0.6,sin(p.y*45.0-t*2.0*uMotion))*max(core,edge); float reach=1.0-smoothstep(0.18+uCoverage*0.08,0.28+uCoverage*0.16,length(p)); coverage=max(max(core*breaks,edge*breaks),max(halo*breaks,spark))*reach; vec3 tint=normalize(art.rgb+vec3(0.08,0.12,0.18)); art.rgb=mix(tint,vec3(0.92,0.98,1.0),clamp(core*0.5+edge*0.4,0.0,0.8))*(1.0+uGlow*0.35); gl_FragColor = floatingResult(base, art, coverage * smoothstep(0.0, 0.06, uCoverage)); }