_=' c,h=k=l=[],mK,ns,p:ndom,C3#D2Jp= ?!s|Source compileatachc,a@;pv=R?d=~aVW(dvW(d,4,5126X,32X@;c=JGC,"`ute Z v,n;u a{Z v=v;Y=Y*K$)-z*s$z=Y*s$)+z*K$m=n.xyz;NPosit=Z(Yyz.0NSize=w;}"JGD,"precis lowp { l = sqrt(.6 + .4* dot(n%malize(m#3(-O,O,-O))NF:gCol%=Z(l,l,l}"lkcusec(2929viewp%t(^768,768TCol%(.9,.9,.9 ER/,u,v,f,w,x?f%( y=0;y<u&&w;y++? e=GHGH3.14-1.57,z=6.28*G#A=m,B=-n(eHf,e=n;E$+AX+B,d+eQq+AQr+BQt+e,u2*v6*f,w-1,x-1@0>=x&&(l.pushR,v/#k++@E(-.8,^^3,30.430bdBB()bDanew Flo32(l#35044Jv("v",0Jv("n"6setIntval((?!T(16640d:ws(^ku1f(~U"a"#h+=.001@6!;yg 3 m;j ma(j)!creefunctS|(Prog:m();at $X0,vecAt`nif%m(zHm(eHfLoc(c,iner,.7Ar:y=Mh. flov.,1ionvaruff(34962,enable=3563!g.#),$(a%or/,q,r,t:ra?){@)}Gp(H)*JpKcosNgl_O0.6Q5*R ,dTclearWtexX,bYxZ4^`tribjvoid|had~!getPot';for(Y in $='~|j`^ZYXWTRQONKJHG@?:/%$#! ')with(_.split($[Y]))_=join(pop());eval(_)
var p,e=0,nn = 0, vertices = [],mc=Math.cos,ms=Math.sin,r=Math.random,
vs = g.createShader(0x8B31),
fs = g.createShader(0x8B30);
pp = function(q,w){g.shaderSource(q,w);g.compileShader(q);g.attachShader(p, q);};
pv = function(w,e,q){q=g.getAttribLocation(p, w);g.enableVertexAttribArray(q);g.vertexAttribPointer(q, 4, 0x1406, e, 32, e);}
p = g.createProgram();
pp(vs, "attribute vec4 v,n;uniform float a;varying vec3 m;void main(void){vec4 v=v;v.x=v.x*cos(a)-v.z*sin(a);v.z=v.x*sin(a)+v.z*cos(a);m=n.xyz;gl_Position=vec4(v.xyz,1.0);gl_PointSize=v.w;}");
pp(fs, "precision lowp float;varying vec3 m;void main(void) { float l = sqrt(.6 + .4* dot(normalize(m),vec3(-0.6,0.6,-0.6)));gl_FragColor=vec4(l,l,l,1);}");
g.linkProgram(p);
g.useProgram(p);
g.enable( 0x0B71 );
g.viewport(0,0, 768,768);
g.clearColor(.9,.9,.9,1);
function build_cloud(sx,sy,sz, nx,ny,nz,
branches,size,length, depth,skip)
{
for (var c=0; c < branches && depth; c++)
{
var phi = r()*r() * 3.14 - 1.57,
theta = r() * 6.28,
dx = mc(theta) * mc(phi) * length,
dy = -ms(phi) * length,
dz = ms(theta) * mc(phi) * length;
build_cloud(sx+dx, sy+dy, sz+dz,
nx*.75+dx, ny*.75+dy, nz*.75+dz,
branches, size * .72, length * .76, depth-1, skip-1);
}
if (skip<=0)
{vertices.push(sx, sy, sz, size,nx, ny, nz, 1);nn++;}
}
build_cloud(0,-.8,0, 0,0,0, 3,300.0,.4, 13,10);
g.bindBuffer(0x8892, g.createBuffer());
g.bufferData(0x8892, new Float32Array(vertices), 0x88E4);
pv("v",0);
pv("n",16);
setInterval(function() {
g.clear(0x4100);
g.drawArrays(0, 0, nn);g.uniform1f(g.getUniformLocation(p,"a"),e+=.001);
},16);