memoscan
← all memos

Memo 0xf27bcf12…d1dbe7 on Ethereum

S=Uint32Array.from([0,1,s=t=2,3].map(t=>parseInt(tokenData.hash.substr(8*t+2,8),16))),R=(e=>(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));var DEFAULT_SIZE=1e3,DIM=Math.min(window.innerWidth,window.innerHeight),M=DIM/DEFAULT_SIZE;let palettes=[[[116,2,17],[208,169,160],[143,58,96],[195,90,102],[36,0,4]],[[175,212,204],[133,186,106],[26,119,73],[11,46,47],[1,18,28]],[[0,18,68],[0,80,134],[49,143,181],[176,202,199],[247,214,191]],[[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]],[[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]],[[15,139,141],[168,32,26],[236,154,41],[218,210,216],[20,54,66]]],pId=Math.floor(R()*palettes.length),palette=palettes[pId],vrs=R(),mrr=R()>.6,goe=R()>.6,tp=Math.floor(3*R()),v0A=["1.","2.","4."],v0=v0A[Math.floor(R()*v0A.length)],v1A=["32.","64.","128.","256.","512."],v1=v1A[Math.floor(R()*v1A.length)],v2A=[".25",".5","1.","2."],v2=v2A[Math.floor(R()*v2A.length)],v3A=[".1",".25",".5",".75"],v3=v3A[Math.floor(R()*v3A.length)],v4A=[".5","1.","2."],v4=v4A[Math.floor(R()*v4A.length)],v5A=["2.","4.","5.","6.","8."],v5=v5A[Math.floor(R()*v5A.length)],v6=Math.floor(10*R())+1,v7=R()>.5,v8A=["10.","20.","30."],v8=v8A[Math.floor(R()*v8A.length)],v9=R()+.1,v10A=["1.","5.","10.","20.","40."],v10=v10A[Math.floor(R()*v10A.length)],v11=Math.floor(490*R())+10;pOR=R()>.9;let mR=R()>.5,cnX0=Math.floor(1e3*R()),cnX1=Math.floor(1e3*R()),cnY0=Math.floor(1e3*R()),cnY1=Math.floor(1e3*R()),pO=R();if(pOR)for(let t=0;t<palette.length;t++)palette[t]=hsv2rgb(360*pO,1,.9-2*t*.1);document.body.style.backgroundColor="rgb("+palette[4][0]+","+palette[4][1]+","+palette[4][2]+")";var tick=0;const canvas=document.getElementsByTagName("canvas")[0];canvas.width=DIM,canvas.height=DIM;const gl=canvas.getContext("webgl"),positionsData=new Float32Array([1,1,-1,1,1,-1,-1,-1]),textureData=new Float32Array([1,1,0,1,1,0,0,0]);var texture=gl.createTexture();const targetTexture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,targetTexture),texBind();const targetTexture2=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,targetTexture2),texBind();const bT=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,bT),texBind();const cT=gl.createTexture();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)}gl.bindTexture(gl.TEXTURE_2D,cT),texBind();const fb=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fb);var attachmentPoint=gl.COLOR_ATTACHMENT0,level=0;gl.framebufferTexture2D(gl.FRAMEBUFFER,attachmentPoint,gl.TEXTURE_2D,targetTexture,level);let cs=[10,20,25,50],bd=["0.",".25",".75",".9"],c=cs[Math.floor(R()*cs.length)],r=cs[Math.floor(R()*cs.length)],cM=cs[Math.floor(R()*cs.length)],rM=cs[Math.floor(R()*cs.length)],cMO=Math.floor(5*R())+1,rMO=Math.floor(5*R())+1,d2x=Math.floor(R()*c),d2y=Math.floor(R()*r),dAA=["idx /= jF + iF * tick;"],sB=["idx += iF * jF;","idx -= iF * jF;",`idx += iF * ((${DEFAULT_SIZE}. / pxS) - jF);`,`idx += ((${DEFAULT_SIZE}. / pyS) - iF) * jF;`],sBO=sB[Math.floor(R()*sB.length)],rmA=R()>0,rA0=R()>.5,rA1=R()>.5,rA2=R()>.5,rA3=Math.floor(100*R()),rA4=R()>.5,dA=dAA[Math.floor(R()*dAA.length)],bdA=bd[Math.floor(R()*bd.length)];function hsv2rgb(t,e,r){let n=(n,l=(n+t/60)%6)=>r-r*e*Math.max(Math.min(l,4-l,1),0);return[Math.floor(255*n(5)),Math.floor(255*n(3)),Math.floor(255*n(1))]}var gridOffset="ps.x",aDt={},bDta={},compositeData={},fDt={};function compileShader(t,e){var r=gl.createShader(e);if(gl.shaderSource(r,t),gl.compileShader(r),!gl.getShaderParameter(r,gl.COMPILE_STATUS))throw"Shader compile failed with: "+gl.getShaderInfoLog(r);return r}function drawArt(){gl.useProgram(aPg),gl.bindFramebuffer(gl.FRAMEBUFFER,fb),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,targetTexture,level),gl.bindBuffer(gl.ARRAY_BUFFER,buffer),gl.vertexAttribPointer(aDt.positionAttribute,2,gl.FLOAT,!1,8,0),gl.enableVertexAttribArray(aDt.positionAttribute),gl.uniform1f(aDt.tickSet,tick),gl.activeTexture(gl.TEXTURE0),gl.bindTexture(gl.TEXTURE_2D,texture),gl.drawArrays(gl.TRIANGLE_STRIP,0,4)}function blendArt(t,e){gl.useProgram(bldPg),gl.bindFramebuffer(gl.FRAMEBUFFER,fb),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,e,level);var r=gl.FLOAT;gl.bindBuffer(gl.ARRAY_BUFFER,buffer),gl.vertexAttribPointer(bDta.positionAttribute,2,r,!1,0,0),gl.enableVertexAttribArray(bDta.positionAttribute),gl.activeTexture(gl.TEXTURE0),gl.bindTexture(gl.TEXTURE_2D,t),gl.uniform1i(bDta.freshTexture,0),gl.activeTexture(gl.TEXTURE1),gl.bindTexture(gl.TEXTURE_2D,cT),gl.uniform1i(bDta.cT,1),gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.vertexAttribPointer(bDta.textureAttribute,2,r,!1,0,0),gl.enableVertexAttribArray(bDta.textureAttribute),gl.drawArrays(gl.TRIANGLE_STRIP,0,4)}function compositeArt(t){gl.useProgram(compositeProgram),gl.bindFramebuffer(gl.FRAMEBUFFER,fb),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,cT,level);var e=gl.FLOAT;gl.bindBuffer(gl.ARRAY_BUFFER,buffer),gl.vertexAttribPointer(bDta.positionAttribute,2,e,!1,0,0),gl.enableVertexAttribArray(bDta.positionAttribute),gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.vertexAttribPointer(bDta.textureAttribute,2,e,!1,0,0),gl.enableVertexAttribArray(bDta.textureAttribute),gl.activeTexture(gl.TEXTURE0),gl.bindTexture(gl.TEXTURE_2D,t),gl.drawArrays(gl.TRIANGLE_STRIP,0,4)}function renderFinal(t){gl.useProgram(fPg),gl.bindFramebuffer(gl.FRAMEBUFFER,null);var e=gl.FLOAT;gl.bindBuffer(gl.ARRAY_BUFFER,buffer),gl.vertexAttribPointer(bDta.positionAttribute,2,e,!1,0,0),gl.enableVertexAttribArray(bDta.positionAttribute),gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.vertexAttribPointer(bDta.textureAttribute,2,e,!1,0,0),gl.enableVertexAttribArray(bDta.textureAttribute),gl.activeTexture(gl.TEXTURE0),gl.bindTexture(gl.TEXTURE_2D,t),gl.drawArrays(gl.TRIANGLE_STRIP,0,4)}let blendFSS="\nprecision highp float;\nvarying highp vec2 vTextureCoord;\nuniform sampler2D freshTexture;\nuniform sampler2D compTexture;\nvoid main() {\n vec3 blend0 = texture2D(freshTexture, vTextureCoord).rgb;\n vec3 blend1 = texture2D(compTexture, vTextureCoord).rgb;\n vec3 compBlend = mix(blend0,blend1,.9);\n gl_FragColor = vec4(compBlend ,1.0);\n}\n",blendFragmentShader=compileShader(blendFSS,gl.FRAGMENT_SHADER),finalFSS="\nprecision highp float;\nvarying highp vec2 vTextureCoord;\nuniform sampler2D u_texture;\nvoid main() {\n gl_FragColor = texture2D(u_texture, vTextureCoord);\n}\n",finalFragmentShader=compileShader(finalFSS,gl.FRAGMENT_SHADER),baseVertexString="\nattribute vec2 position;\nattribute vec2 texcoord;\nvarying highp vec2 vTextureCoord;\nvoid main() {\n gl_Position = vec4(position, 0.0, 1.0);\n vTextureCoord = texcoord;\n}\n",baseVertShader=compileShader(baseVertexString,gl.VERTEX_SHADER),compFragmentShaderString="\nprecision highp float;\nvarying highp vec2 vTextureCoord;\nuniform sampler2D u_texture;\nvoid main() {\n gl_FragColor = texture2D(u_texture, vTextureCoord);\n}\n",compFragmentShader=compileShader(compFragmentShaderString,gl.FRAGMENT_SHADER),artFragmentString=`\nprecision highp float;\nuniform float tick;\n\nvec3 hsv2rgb(vec3 c)\n{\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\nvoid main()\n{\n vec3 c0 = vec3(${palette[0][0]}. / 255.,${palette[0][1]}. / 255.,${palette[0][2]}. / 255.);\n vec3 c1 = vec3(${palette[1][0]}. / 255.,${palette[1][1]}. / 255.,${palette[1][2]}. / 255.);\n vec3 c2 = vec3(${palette[2][0]}. / 255.,${palette[2][1]}. / 255.,${palette[2][2]}. / 255.);\n vec3 c3 = vec3(${palette[3][0]}. / 255.,${palette[3][1]}. / 255.,${palette[3][2]}. / 255.);\n vec3 c4 = vec3(${palette[4][0]}. / 255.,${palette[4][1]}. / 255.,${palette[4][2]}. / 255.);\n\n\n float w = float(${DIM});\n float M = float(${M});\n vec2 st = gl_FragCoord.xy / M;\n float idx = 0.;\n\n if (${tp} == 0 || ${tp} == 2) {\n if (st.x > 500.) {\n st.x = 1000. - st.x;\n }\n }\n\n if (${rA4}) {\n st = gl_FragCoord.yx / M;\n }\n\n if (${rA1}) {\n st.x = ${DEFAULT_SIZE}. - st.x;\n }\n if (${rA2}) {\n st.y = ${DEFAULT_SIZE}. - st.y;\n }\n\n if (st.x > 500. && ${mR}) {\n st.x = 1000. - st.x;\n }\n if (mod(floor(st.y),2.) == 0.) {\n st.y = 1000. - st.y;\n }\n\n\n if (${tp} == 0) {\n //st.x = (st.x * ${v9});\n }\n else if(${tp} == 1) {\n st.x = floor(st.x * ${v0}); \n st.y = floor(st.y * ${v1}); \n }\n else if(${tp} == 2) {\n st.x *= ${v4};\n st.y = (st.x / (st.y + .01)) * ${v5};\n }\n\n vec2 cn = vec2(st.x - ${cnX0}.,st.y - ${cnY0}.);\n vec2 cn2 = vec2(${cnX1}.,${cnY1}.);\n\n if (${tp} == 0) {\n idx = (st.x * 1.) * (st.y * 2.1);\n idx += (st.y * 10.) * (st.y * 2.);\n idx *= distance(cn,st) / st.x;\n \n idx -= st.x - st.y;\n idx -= (st.x / st.y) / .5;\n \n if (st.x > st.y) {\n idx /= floor(st.y / ${v2}) * 20.;\n idx *= 20.;\n }\n else {\n idx /= floor(st.x / ${v3}) * 10.;\n idx /= floor((st.x - ${cnX0}.) / ${vrs} / 2.) * ${v8}; \n\n idx *= (st.x / .5) * 2.; \n idx *= 20.;\n }\n \n idx /= 10.;\n idx += tick * 3.;\n idx /= 20.;\n \n idx += ${vrs} * st.y;\n }\n else if (${tp} == 1) {\n st.x = abs(cn2.x - st.x) / 100.;\n\n idx = (st.x * 1.) * (st.x * 1.);\n idx += (st.y * 10.) * (st.y * 2.);\n idx -= distance(cn,st) * st.x;\n \n idx *= (st.x / st.y) / 25.; \n idx /= floor(st.x / .5) * 10.;\n idx /= 10.;\n idx += tick * 2.;\n idx /= 10.;\n idx += ${v11}./st.x; \n }\n else if (${tp} == 2) {\n idx = (st.x * .01) * (st.x * .01);\n idx += (st.y * 10.) * (st.y * 2.);\n \n if (st.x > st.y) {\n idx += st.x - st.y;\n }\n idx += st.x - st.y;\n \n if (mod(floor(st.y / 2.),2.) == 0.) {\n idx *= ${v6}.;\n } \n \n if (mod(floor(st.x),4.) == 0.) {\n idx /= 2.;\n }\n else {\n idx /= 2.;\n }\n \n if (mod(st.y,2.) == 0.) {\n idx *= (floor(st.x / 200.) + 200.) / 2.;\n }\n else {\n idx *= (floor(st.y / 200.) + 200.) / 10.;\n }\n \n if (${v7}) {\n idx *= (st.x / st.y) / 100.;\n }\n \n if (st.x > st.y) {\n idx /= floor(st.y / 1.) * 50.; \n }\n else {\n idx /= floor(st.x / .1) * 200.;\n }\n\n idx += tick / 2.;\n idx /= 2.;\n }\n \n idx *= 1.5;\n idx = abs(mod(idx,50.));\n \n if (idx < 10.) {\n \n gl_FragColor = vec4(c0.x,c0.y,c0.z,1.);\n }\n else if (idx < 20.) {\n gl_FragColor = vec4(c1.x,c1.y,c1.z,1.);\n }\n else if (idx < 30.) {\n gl_FragColor = vec4(c2.x,c2.y,c2.z,1.);\n }\n else if (idx < 40.) {\n gl_FragColor = vec4(c3.x,c3.y,c3.z,1.);\n }\n else {\n gl_FragColor = vec4(c4.x,c4.y,c4.z,1.);\n }\n}\n`;var artFragmentShader=compileShader(artFragmentString,gl.FRAGMENT_SHADER);const aPg=gl.createProgram();gl.attachShader(aPg,baseVertShader),gl.attachShader(aPg,artFragmentShader),gl.linkProgram(aPg);const bldPg=gl.createProgram();gl.attachShader(bldPg,baseVertShader),gl.attachShader(bldPg,blendFragmentShader),gl.linkProgram(bldPg);const compositeProgram=gl.createProgram();gl.attachShader(compositeProgram,baseVertShader),gl.attachShader(compositeProgram,compFragmentShader),gl.linkProgram(compositeProgram);const fPg=gl.createProgram();if(gl.attachShader(fPg,baseVertShader),gl.attachShader(fPg,finalFragmentShader),gl.linkProgram(fPg),!gl.getProgramParameter(aPg,gl.LINK_STATUS))throw console.error(gl.getProgramInfoLog(aPg)),new Error("Failed to link art program");if(!gl.getProgramParameter(bldPg,gl.LINK_STATUS))throw console.error(gl.getProgramInfoLog(bldPg)),new Error("Failed to link blend program");if(!gl.getProgramParameter(compositeProgram,gl.LINK_STATUS))throw console.error(gl.getProgramInfoLog(compositeProgram)),new Error("Failed to link composite program");if(!gl.getProgramParameter(fPg,gl.LINK_STATUS))throw console.error(gl.getProgramInfoLog(fPg)),new Error("Failed to link final 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.colorOffset=gl.getUniformLocation(aPg,"colorOffset"),aDt.hues=gl.getUniformLocation(aPg,"hues"),aDt.sats=gl.getUniformLocation(aPg,"sats"),aDt.brights=gl.getUniformLocation(aPg,"brights"),aDt.tickSet=gl.getUniformLocation(aPg,"tick"),bDta.positionAttribute=gl.getAttribLocation(bldPg,"position"),bDta.textureAttribute=gl.getAttribLocation(bldPg,"texcoord"),bDta.cT=gl.getUniformLocation(bldPg,"compTexture"),bDta.freshTexture=gl.getUniformLocation(bldPg,"freshTexture"),fDt.positionAttribute=gl.getAttribLocation(fPg,"position"),fDt.textureAttribute=gl.getAttribLocation(fPg,"texcoord"),fDt.positionAttribute=gl.getAttribLocation(fPg,"position");let cft,cD=!0,lft=0;function draw(){cft=Date.now(),cD&&lft>0&&(drawArt(),blendArt(targetTexture,bT),compositeArt(bT),renderFinal(cT),(tick+=(cft-lft)/16)>11e6&&(tick=0)),lft=cft,requestAnimationFrame(draw)}requestAnimationFrame(draw),document.body.addEventListener("click",function(t){cD=!cD}),document.addEventListener("keydown",function(t){cD=!cD});