Details become a living network: image-colored nodes sway, discover neighbors and send pulses along growing bonds.
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/uResolution.y,1.0); vec2 cell=floor(vUv*16.0);vec3 acc=vec3(0.0);float coverage=0.0; float aa=1.5/uResolution.y; for(int y=-2;y<=2;y++)for(int x=-2;x<=2;x++){ vec2 id=cell+vec2(float(x),float(y));if(id.x<0.0||id.y<0.0||id.x>=16.0||id.y>=16.0)continue; vec4 p=motionPoint(id);vec4 source=texture2D(uTex,clamp(motionHome(id),0.0,1.0)); float lum=dot(source.rgb,vec3(.299,.587,.114)); float node=(1.0-smoothstep(.002,.004+aa,length((vUv-p.xy)*aspect)))*source.a; acc+=source.rgb*node*(1.0+uPulse);coverage=max(coverage,node); for(int n=0;n<3;n++){ vec2 other=id+(n==0?vec2(1.0,0.0):n==1?vec2(0.0,1.0):vec2(1.0,1.0));if(other.x>=16.0||other.y>=16.0)continue; vec4 q=motionPoint(other);vec4 s2=texture2D(uTex,clamp(motionHome(other),0.0,1.0)); float distance=length((q.xy-p.xy)*aspect); float compatibility=1.0-clamp(length(source.rgb-s2.rgb)*.45,0.0,1.0); float cycle=.5+.5*sin(uTime*.5+motionHash(id+float(n)*7.0)*6.283+distance*20.0); float growth=smoothstep(.65-uBonds*.6,.95-uBonds*.6,cycle)*compatibility; vec2 end=mix(p.xy,q.xy,growth); float line=(1.0-smoothstep(.0007,.0007+aa,lineDistance(vUv*aspect,p.xy*aspect,end*aspect)))*smoothstep(.01,.15,growth)*min(source.a,s2.a); float travel=fract(uTime*.3+motionHash(id));vec2 spark=mix(p.xy,q.xy,travel); float pulse=exp(-length((vUv-spark)*aspect)*450.0)*(uPulse*.8+.2)*uGlow; float visible=line*(.28+lum*.7)*(1.0+min(1.2,pulse*6.0)); acc+=mix(source.rgb,s2.rgb,.5)*visible;coverage=max(coverage,line); } } float m=clamp(uAmount,0.0,1.0); gl_FragColor=vec4(mix(base.rgb,base.rgb*.25+acc,m),mix(base.a,max(base.a*.35,coverage),m)); }