diff --git a/201410_-_Colonoscopy/README b/201410_-_Colonoscopy/README new file mode 100644 index 0000000..d83f65a --- /dev/null +++ b/201410_-_Colonoscopy/README @@ -0,0 +1,4 @@ +Sort-of-readable version of Colonoscopy +A JavaScript 1K intro + +On Pouet: http://www.pouet.net/prod.php?which=64234 diff --git a/201410_-_Colonoscopy/colonoscopy-unpacked.html b/201410_-_Colonoscopy/colonoscopy-unpacked.html new file mode 100644 index 0000000..62dac91 --- /dev/null +++ b/201410_-_Colonoscopy/colonoscopy-unpacked.html @@ -0,0 +1,2 @@ + + diff --git a/201410_-_Colonoscopy/colonoscopy.js b/201410_-_Colonoscopy/colonoscopy.js new file mode 100644 index 0000000..09ce1d4 --- /dev/null +++ b/201410_-_Colonoscopy/colonoscopy.js @@ -0,0 +1,24 @@ +document.body.innerHTML='', +a.width=w=innerWidth, +a.height=h=innerHeight; +for(b in c=a.getContext('webgl')) + c[b.match(/^..|[A-Z]|1f$/g).join('')]=c[b]; +with(c) + d=crP(), + a=function(b){ + e=crS(f), + shS(e,b), + coS(e), + atS(d,e) + }, + a('attribute vec4 p;void main(){gl_Position=p;}',f=35633), + a('precision highp float;uniform float y;float a(vec3 b){float c=mod(y,4.)-2.,d=b.x==0.?1.570796*sign(b.y):atan(b.y,b.x);c=1.5*exp(-c*c*4.);return 2.5+c+.25*sin(b.z*4.+d*10.)*cos(b.z*1.7)-length(b.xy+cos(b.z*.4+sin(y*.1)*10.)+.2*sin(d*d*c)/(1.+c));}void main(){vec2 c=gl_FragCoord.xy/vec2('+w+'.,'+h+'.)-.5;c.x*='+(w/h)+';vec3 d=normalize(vec3(c,4.)),e=vec3(.5*sin(y),.5*cos(y),y*5.),f=e,g;for(int i=0;i<100;i++)f+=a(f)*d;c=vec2(.01,0.),g=normalize(vec3(a(f+c.xyy)-a(f-c.xyy),2.*c.x,a(f+c.yyx)-a(f-c.yyx))),e-=f,f=normalize(e-.5),gl_FragColor=vec4((pow(clamp(-dot(reflect(f,g),d),0.,1.),3.)*vec3(.6,.35,.35)+vec3(.4,.25,.05)*dot(g,f))*min(1.,6./length(e))*clamp(15.-y*.5,0.,1.)*clamp(y*.33,0.,1.),1.);}',--f), + enVAA(veAP(biB(f-=670,crB(liP(d))),2,5126,buD(f,new Float32Array([1,4,1,-1,-4,-1]),f+82),f=0,usP(d))), + d=geUL(d,'y'), + a=requestAnimationFrame, + b=function(e){ + f=f?f:e, + drA(4,un1f(d,.001*(e-f)),3), + a(b) + }, + a(b)