Source for demo by Todi.
document.body.style.background="#000";ce=document.getElementById("c");cs=ce.style;cs.position="absolute";ce.height=ce.width=cl=256;cl2=cl/2;w=window;l=64;l2=l/2;ld=cl/l;c=ce.getContext("2d");m=Math;mf=m.floor;ms=m.sin;pi=m.PI;t=0;d=function(o,e,u,s){return m.sqrt(((o-u)*(o-u)+(e-s)*(e-s)))};setInterval(function(){i=c.createImageData(l,l);h=0;for(y=0;y<l;y++){for(x=0;x<l;x++){f=y/l*pi*2;g=(x/l)*l2;q=m.cos(f)*g+l2;r=ms(f)*g+l2;v=ms(d(q+t/2.1/ld,r,8/ld,64/ld)/32*ld)+ms(d(q,r+t/3.2/ld,16/ld,32/ld)/32*ld)+ms(d(q+t/4.3/ld,r,32/ld,16/ld)/32*ld)+ms(d(q,r+t/5.4/ld,64/ld,8/ld)/32*ld);p=m.ceil((-v)*128);for(k=0;k<4;k++){i.data[((x+y*l)*4)+k]=((k%4)==3?255:m.ceil(p+(m.random()*16)))}}}j=c.createImageData(cl,cl);for(y=0;y<cl;y++){for(x=0;x<cl;x++){n=m.random()*16;for(k=0;k<4;k++){r=(x-cl2)+0.5;v=(y-cl2)+0.5;q=m.sqrt(r*r+v*v);r=((m.atan2(r,v)+pi)/pi*2)*l;j.data[((x+y*cl)*4)+k]=i.data[((mf(q/ld)+mf(r/ld)*l)*4)+k]+n}}}c.putImageData(j,0,0);t+=8;cs.top=((w.innerHeight/2)-cl2)+"px";cs.left=((w.innerWidth/2)-cl2)+"px"},5);