memoscan
← all memos

Memo 0x837a628f…bcc714 on Ethereum

S=Uint32Array.from([0,1,s=t=2,3].map(i=>parseInt(tokenData.hash.substr(i*8+2,8),16)));R=_=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=(t^t>>>8)^(s>>>19),S[0]/2**32);'tx piter, you rock :)' var DEFAULT_SIZE=1024;var DIM=Math.min(window.innerWidth,window.innerHeight) var M=DIM/DEFAULT_SIZE let we=Math.floor(R(255)+1);let mW=Math.floor(R(8)+1)*20;let palettes=[[[249,222,89],[232,166,40],[249,131,101],[195,49,36],[161,223,251]],[[30,5,33],[1,11,139],[254,204,80],[11,231,251],[255,109,105]],[[17,16,16],[208,204,209],[233,255,136],[254,10,183],[229,1,133]],[[179,231,220],[166,180,1],[239,246,123],[213,1,2],[108,1,2]],[[36,224,184],[255,204,81],[255,139,118],[255,48,49],[0,123,0]],[[169,67,0],[255,176,0],[91,155,55],[21,61,2],[255,223,0]],[[161,5,50],[255,111,169],[0,183,204],[0,95,129],[255,208,204]],[[246,213,31],[95,165,90],[1,180,188],[250,137,37],[250,84,87]],[[99,26,17],[187,96,47],[203,130,20],[68,64,101],[239,216,131]],[[48,4,61],[142,31,81],[229,64,89],[222,131,127],[253,179,106]],[[10,0,48],[255,251,196],[182,190,246],[53,30,191],[16,1,93]],[[140,7,20],[252,64,124],[27,78,136],[5,8,30],[250,240,228]],[[0,0,63],[1,0,142],[144,1,245],[254,0,234],[255,1,120]],[[8,44,68],[114,234,245],[254,230,226],[255,169,76],[254,44,137]],[[1,99,141],[171,206,204],[255,242,205],[255,0,76],[97,13,75]],[[34,125,172],[68,57,136],[159,0,82],[255,63,32],[255,190,0]],[[129,237,247],[2,116,143],[247,1,16],[110,5,22],[0,164,192]],[[255,254,1],[255,134,6],[232,59,54],[96,5,56],[70,10,64]],[[51,51,51],[204,204,204],[48,48,48],[221,221,221],[0,0,0]],[[215,0,95],[215,215,0],[38,38,38],[175,0,95],[0,255,255]],[[0,0,170],[255,85,255],[255,255,85],[170,0,0],[85,255,255]],[[255,85,85],[85,255,85],[255,255,85],[85,255,255],[85,85,85]],[[0,0,0],[255,85,255],[85,255,255],[255,0,255],[255,255,255]],[[0,0,0],[0,85,0],[0,170,0],[170,0,0],[170,85,0]],[[15,139,141],[168,32,26],[236,154,41],[218,210,216],[20,54,66]]] let radiations=["vec3(1.,1.,0.)","vec3(1.,0.,0.)","vec3(0.,1.,1.)","vec3(0.,0.,1.)","vec3(1.,0.,1.)","vec3(0.,1.,0.)","vec3(1.,1.,1.)","vec3(0.,0.,0.)","vec3(1.,2.,3.)",] let rad=gV(radiations) let cls=rad==="vec3(0.,0.,0.)"?!0:!1;let rbw=rad==="vec3(1.,2.,3.)"?!0:!1;if(rbw){cls=!1} let pId=Math.floor(R()*palettes.length);let pT=Math.floor(R()*16);let pq=palettes[pId];let rbwS=[`(iF + jF)`,`(iF - jF)`,`(jF - iF)`,`abs(jF - iF)`] let mwSM=[`mX /= .25;`,`mX /= .5;`,`mX /= 2.;`,`mX /= 4.;`,`mX /= 8.;`,] let mwS=[`mX = bcSize;`,`mX = bcSize * float(${mW});${gV(mwSM)}`,`mX = bcSize * (abs(jF - (float(bc) / 2.)) + bcSize);`,`mX = bcSize * (abs(iF - (float(vCount) / 2.)) + bcSize);`] let mwO=[``,`mX = segmentHeight / .25;`,`mX = segmentHeight / .5;`] let hS=[`0.`,`(segmentHeight / 8.)`,`(segmentHeight / 4.)`] let hSv=gV(hS);let n=['2.','4.','8.','16.','32.',] let n2=['.25','.5','2.','4.',] let wB=[`wd = dis / ${gV(n)};`,`wd = dis * ${gV(n)};`,`wd = (jF + 1.);`,`wd = mX * (jF + 1.);`,`wd = mX * (iF + 1.);`,`wd = (iF + 1.);`,`wd = (iF + 1.) * (jF + 1.);`,`wd = sqrt((iF + 1.) * (jF + 1.));`,`wd = iF - jF;`,`wd = jF - iF;`,`wd = jF + iF;`,] let wM=[``,`wd *= we * (jF + 1.);`,`wd *= we * (iF + 1.);`,`wd *= sin((jF + 1.) / float(bc));`,`wd *= cos((iF + 1.) / float(vCount));`,`wd *= sin(2. / ${gV(n)}) * dis;`,`wd *= dis;`,`wd += (iF + 1.) * (jF + 1.);`,`wd *= dis2;`] let wM2=[``,`wd /= we;`,`wd -= dis2;`,`wd -= dis;`,`wd -= xM * yM;`,`wd -= xM;`,`wd -= yM;`,`wd -= sqrt(xM * yM);`,] let wM3=[``,`wd *= 2.;`,`wd *= 4.;`,`wd *= 8.;`,] let wMo=[`wd = floor(mod(wd,(mX + 1.)));`,`wd = floor(mod(wd,(mX + 1.) * 2.));`,`wd = floor(mod(wd,(mX + 1.) * 4.));`,`wd = floor(mod(wd,(mX + 1.) * 8.));`] let fn=[0,128,256,512,768,1024] let fn1=[4,8,16,32,64] let f0=[`vec2 focus = vec2(${gV(fn)}., ${gV(fn)}.);`] let f1=[`vec2 focus2 = vec2(${gV(fn)}., ${gV(fn)}.);`] let dz=[``,`if (dis < ${gV(fn)}.) {wd = mX;}`,`if (dis > ${gV(fn)}.) {wd = mX;}`,`float aW0 = ${gV(fn)}.;if (dis < aW0 && dis > aW0 - ${gV(fn1)}.) {wd *= 2.;}`,`float aW1 = ${gV(fn)}.;if (dis < aW1 && dis > aW1 - ${gV(fn1)}.) {wd /= 2.; }`] let dz2=[``,`if (jF < iF) {wd *= ${gV(n2)};}`,`if (jF > iF) {wd *= ${gV(n2)};}`,`if (jF > ${gV(n)}) {wd /= ${gV(n2)};}`,`if (iF > ${gV(n2)}) {wd /= ${gV(n2)};}`,`if (jF < ${gV(n)}) {wd /= ${gV(n2)};}`,`if (iF < ${gV(n)}) {wd /= ${gV(n2)}; }`] let aa=[`wd *= 1. - (lineDistance / 512.);`,`wd *= 2. - ((lineDistance / 512.) * 2.);`,`wd *= 4. - ((lineDistance / 512.) * 4.);`,`wd *= 1. - (n < 0.5 ? 4. * n * n * n : 1. - pow(-2. * n + 2., 3.) / 2.);`,`wd *= 1. - (n < 0.5 ? (1. - sqrt(1. - pow(2. * n, 2.))) / 2. : (sqrt(1. - pow(-2. * n + 2., 2.)) + 1.) / 2.);`] var tz=0;var canDraw=!0;const canvas = document.getElementsByTagName("canvas")[0];canvas.width=DIM;canvas.height=DIM;const gl=canvas.getContext('webgl');let barCounts=[1,4,16,32,64,128] let barCount=barCounts[Math.floor(R()*barCounts.length)] let vCounts=[8,16,32,64,128];let vCount=vCounts[Math.floor(R()*vCounts.length)];let oR=(R()*10)>5;if(barCount<16){oR=!1} let barInit=` const int bc = ${barCount}; vec3 a[bc]; `;function gV(a){let temp=Math.floor(R()*a.length);return a[temp]} const positionsData=new Float32Array([1.0,1.0,-1.0,1.0,1.0,-1.0,-1.0,-1.0]);const textureData=new Float32Array([1.0,1.0,0.0,1.0,1.0,0.0,0.0,0.0]) var texture=gl.createTexture();const targetTexture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,targetTexture);{texBind()} function texBind(){gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,DIM,DIM,0,gl.RGBA,gl.UNSIGNED_BYTE,null);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)} var attachmentPoint=gl.COLOR_ATTACHMENT0;var level=0;function HSVtoRGB(h,s,v){var r,g,b,i,f,p,q,t;if(arguments.length===1){s=h.s,v=h.v,h=h.h} i=Math.floor(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);switch(i%6){case 0:r=v,g=t,b=p;break;case 1:r=q,g=v,b=p;break;case 2:r=p,g=v,b=t;break;case 3:r=p,g=q,b=v;break;case 4:r=t,g=p,b=v;break;case 5:r=v,g=p,b=q;break} return{r:Math.round(r*255),g:Math.round(g*255),b:Math.round(b*255)}} var aDt={} function compileShader(shaderSource,shaderType){var shader=gl.createShader(shaderType);gl.shaderSource(shader,shaderSource);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){throw "Shader compile failed with: "+gl.getShaderInfoLog(shader)} return shader} function drawArt(){gl.useProgram(aPg);gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.vertexAttribPointer(aDt.positionAttribute,2,gl.FLOAT,!1,2*4,0);gl.enableVertexAttribArray(aDt.positionAttribute);gl.uniform1f(aDt.tickSet,tz);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,texture);gl.drawArrays(gl.TRIANGLE_STRIP,0,4)} let baseVertexString=` attribute vec2 position; attribute vec2 texcoord; varying highp vec2 vTextureCoord; void main() { gl_Position = vec4(position, 0.0, 1.0); vTextureCoord = texcoord; } ` let baseVertShader=compileShader(baseVertexString,gl.VERTEX_SHADER);let artFragmentString=` precision highp float; uniform float tz; vec3 hsv2rgb(vec3 c) { vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); } void main() { float tV = 255.; ${barInit} vec3 c0 = vec3(${pq[0][0]}./tV,${pq[0][1]}./tV,${pq[0][2]}./tV); vec3 c1 = vec3(${pq[1][0]}./tV,${pq[1][1]}./tV,${pq[1][2]}./tV); vec3 c2 = vec3(${pq[2][0]}./tV,${pq[2][1]}./tV,${pq[2][2]}./tV); vec3 c3 = vec3(${pq[3][0]}./tV,${pq[3][1]}./tV,${pq[3][2]}./tV); vec3 c4 = vec3(${pq[4][0]}./tV,${pq[4][1]}./tV,${pq[4][2]}./tV); float w = float(${DIM}); float M = float(${M}); float we = float(${we}); vec2 st = gl_FragCoord.xy / M; ${gV(f0)} ${gV(f1)} float mX; float wd; float bcSize = 1024. / float(bc); int vCount = ${vCount}; float segmentHeight = 1024. / float(vCount); int i = int(st.y / segmentHeight); int j = int(st.x / bcSize); float iF = float(i); float jF = float(j); float wStart; float hx = (iF * segmentHeight) + ${hSv}; segmentHeight -= ${hSv} * 2.; float xM = (jF * bcSize) + (bcSize / 2.); float yM = hx + (segmentHeight / 2.); vec2 pos = vec2(xM,yM); gl_FragColor = vec4(.3,.3,.3,1.); bool bar = false; float linePos = ((256. - tz) * 8.) - 512.; float lineDistance; if(${oR}) { lineDistance = abs(1024. - st.x - linePos); } else { lineDistance = abs(st.y - linePos); } float dis = distance(focus,pos); float dis2 = distance(focus2,pos);${gV(mwS)}${gV(mwO)}${gV(wB)}${gV(wM)}${gV(wM3)}${gV(wM2)}${gV(dz)}${gV(dz2)} mX = mod(mX,480.);mX += 32.;wd = abs(floor(wd - mX));wd += mX;float n = (lineDistance / 512.);${gV(wMo)}${gV(aa)} if (wd < 2.) { wd = 2.; } if ( lineDistance > 512.) { wd = 2.; } wStart = xM - (wd / 2.); if(st.x >= wStart && st.x <= wStart + wd && st.y >= hx && st.y <= hx + segmentHeight) { bar = true; } if (${pT} > 14) { if (bar) { vec3 colorBase = vec3(.2,.2,.2) / (mX - wd) * 256.; gl_FragColor = vec4(colorBase * ${rad},1.); if (${cls}) { gl_FragColor = vec4(.2,.2,.2,1.); } if (${rbw}) { gl_FragColor = vec4(colorBase * hsv2rgb(vec3(${gV(rbwS)} / float(vCount + bc),1.,1.)),1.0); } } else { gl_FragColor = vec4(0.,0.,0.,1.); if (${cls}) { gl_FragColor = vec4(.6,.6,.6,1.); } } } else { if (bar) { if (wd / mX < .3) { gl_FragColor = vec4(c4.x,c4.y,c4.z,1.);}else if (wd / mX < .6) {gl_FragColor = vec4(c3.x,c3.y,c3.z,1.);}else if (wd / mX < .85) { gl_FragColor = vec4(c2.x,c2.y,c2.z,1.); } else { gl_FragColor = vec4(c1.x,c1.y,c1.z,1.); } } else { gl_FragColor = vec4(c0.x,c0.y,c0.z,1.); } } } ` var artFragmentShader=compileShader(artFragmentString,gl.FRAGMENT_SHADER);const aPg=gl.createProgram();gl.attachShader(aPg,baseVertShader);gl.attachShader(aPg,artFragmentShader);gl.linkProgram(aPg);if(!gl.getProgramParameter(aPg,gl.LINK_STATUS)){console.error(gl.getProgramInfoLog(aPg));throw new Error('Failed to link art program')} const buffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,positionsData,gl.STATIC_DRAW);var texcoordBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer);gl.bufferData(gl.ARRAY_BUFFER,textureData,gl.STATIC_DRAW);aDt.positionAttribute=gl.getAttribLocation(aPg,'position');aDt.tickSet=gl.getUniformLocation(aPg,'tz');let cD=!0;function draw(){if(cD){drawArt();tz++;tz=tz%256} requestAnimationFrame(draw)} canvas.addEventListener('pointerdown',(e)=>{cD=!cD}) requestAnimationFrame(draw)