0x7f5a0a68…e37csent to0x99a9b7c1…b069·#16,693,165·view on Etherscan
`;var artFragmentShader=compileShader(artFragmentString,gl.FRAGMENT_SHADER);function cpr(a){let b=gl.createProgram();return gl.attachShader(b,baseVertShader),gl.attachShader(b,a),gl.linkProgram(b),b}function gPP(a,b){if(!gl.getProgramParameter(a,gl.LINK_STATUS))throw console.error(gl.getProgramInfoLog(aPg)),new Error("Failed to link "+b+" program")}const aPg=cpr(artFragmentShader),blPg=cpr(blurFragmentShader),bldPg=cpr(blendFragmentShader),compositeProgram=cpr(compFragmentShader),fPg=cpr(finalFragmentShader);gPP(aPg,"art"),gPP(blPg,"blur"),gPP(bldPg,"blend"),gPP(compositeProgram,"composite"),gPP(fPg,"final");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.mxy=gl.getUniformLocation(aPg,"mxy"),aDt.mxy2=gl.getUniformLocation(aPg,"mxy2"),aDt.ad0=gl.getUniformLocation(aPg,"ad0"),aDt.tickSet=gl.getUniformLocation(aPg,"tick"),bDt.positionAttribute=gl.getAttribLocation(blPg,"position"),bDt.textureAttribute=gl.getAttribLocation(blPg,"texcoord"),bDt.d=gl.getUniformLocation(blPg,"d"),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"),fDt.sst=gl.getUniformLocation(fPg,"sst"),fDt.afv=gl.getUniformLocation(fPg,"afv"),fDt.sqfv=gl.getUniformLocation(fPg,"sqfv"),fDt.clkC=gl.getUniformLocation(fPg,"clkC"),fDt.iM=gl.getUniformLocation(fPg,"iM");const keys={KeyM:"m",Space:"sp",ArrowLeft:"l",ArrowRight:"r",ArrowUp:"u",ArrowDown:"d",KeyA:"l",KeyD:"r",KeyW:"u",KeyS:"d"};function tCD(){iM?imclk():(cD?tTick=tick:tick=tTick,cD=!cD,iM=!cD,iM&&(clkC=0,clkCC=audE?3-clkC:clkC,sqfv=1))}function frR(){fR=!1,tS=0,pT=Date.now()}function draw(){if(cft=Date.now(),cD||gp)if(hl)drawArt(),blendArt(targetTexture,bT),compositeArt(bT),renderFinal(cT),tick++;else if(100>cft-lft){if(cD||gpC(),cD){if(tCa=(cft-lft)/16,audE){const c=analyser.getValue(),d=atk;for(let e=0;e<amplitudes.length;e++){const f=amplitudes[e],a=-100,g=-50,h=Math.max(a,Math.min(g,c[e])),i=inverseLerp(a,g,h),b=1e-4+(1.99-1e-4)*(-sstT+1)/2;amplitudes[e]=(amplitudes[e]+spring(f,i,250,d))/2*b}for(let a=0;a<amplitudes.length-1;a++)amplitudes[a]=(amplitudes[a]+amplitudes[a+1])/2,amplitudes[a]=flr(1e3*amplitudes[a])/1e3}audE||fO||fR||!(cft-pT>=fT)||(fR=!0),fR&&(lm.x=2*Math.sin(tS*tra),lm.y=-.25*Math.sin(tS*tra),mxyD.x=lm.x,mxyD.y=lm.y,360<=tS?frR():tS+=tCa/2),cD&&(handleInput(),drawArt(),0!=mxyD.x||0!=mxyD.y?(blurArt(targetTexture,targetTexture2),blendArt(targetTexture2,bT)):blendArt(targetTexture,bT),compositeArt(bT)),renderFinal(cT),aud=0,audE&&(aud=3*(amplitudes[1]+amplitudes[3]+amplitudes[7]+amplitudes[10]),0!=amplitudes[2]&&(mxyD.x=2*(amplitudes[1]+amplitudes[2]+amplitudes[5]+amplitudes[9])),0==audD[0]?audD.fill(0):(audD[audDP]=amplitudes[1],audDP++,audDP%=audD.length),0!=amplitudes[0]&&(mxy2.y=mxy2O-average(audD,0,50))),sq1FT&&(sq1FT=!1)}sdTA&&(2<=tS/60?(sdTA=!1,fd=!0,aFT=Date.now(),tS=0):tS+=tCa),fd&&(0>=afv?(tS=0,fd=!1):(afv=lerp(1,0,tS/60),tS+=tCa)),(!sfo||cD)&&(atk+=tCa,tick+=(0>mxyD.x?-1:1)*abs(mxyD.x)**2+aud+tCa,atk=atk>loopCap?0:atk,tick=tick>loopCap?0:tick)}(iM||3==clkCC)&&(renderFinal(cT),1<=arsdc/60?(sfo=!0,arsdc=0,tS2=0):arsdc+=tCa,sfo&&(0>=sqfv?(sfo=!1,iM=!1,clkC=0,clkCC=clkC):(sqfv=lerp(1,0,tS2/30),tS2+=tCa))),lft=cft,requestAnimationFrame(draw)}function d(a){a.preventDefault(),mdt=Date.now(),mxyD={x:0,y:0},deltaX=0,deltaY=0,sd=!0,dh=!1,fd=!1,null!=a.touches&&(a=a.touches[0]),audE&&(sdTA=!1),msx=a.clientX,msy=a.clientY,msx=(msx-canvas.offsetLeft)/DIM*D_S+500,msy=(msy-canvas.offsetTop)/DIM*D_S+500,pte.x=msx,pte.y=msy,mxyS={x:msx,y:msy,ip:"m"}}function u(a){a.preventDefault(),null==a.touches?(msy=a.clientY,msy=(msy-canvas.offsetTop)/DIM*D_S+500):(msy=te.y,msy=(msy-canvas.offsetTop)/DIM*D_S+500),dv=0,sd=!1,audE&&(sdTA=!0,tS=0,aFT=Date.now()),dh?cD=!0:200>Date.now()-mdt&&tCD()}function m(a){a.preventDefault(),null!=a.touches&&(a=a.touches[0]),msx=a.clientX,msy=a.clientY,msx=(msx-canvas.offsetLeft)/DIM*D_S+500,msy=(msy-canvas.offsetTop)/DIM*D_S+500,te.x=msx,te.y=msy,audE||!sd||cD||(cD=!0),sd&&0!=msx-mxyS.x&&0!=msy-mxyS.Y&&(dh=!0),!audE&&sd?mxyD={x:(msx-mxyS.x)/100,y:(msy-mxyS.y)/100}:audE&&sd&&cD&&(afv=1,clp=(nAmp+te.y-pte.y)/1e3,-1<clp&&1>clp&&(sstD+=te.y-pte.y,aDlt((te.y-pte.y)/1e3),sstT=clamp(sstD/1e3,-1,1))),pte.x=msx,pte.y=msy}cae("touchstart",d),cae("mousedown",d),cae("touchend",u),cae("mouseup",u),cae("touchmove",m),cae("mousemove",m),document.addEventListener("keyup",a=>{k[keys[a.code]]=!1,!audE||k.d&&k.u||(sdTA=!0,sT=0,aFT=Date.now())}),document.addEventListener("keydown",a=>{"Space"!==a.code||k.sp||(tCD(),k.sp=!0);let b=!1;a.code in keys&&!k[keys[a.code]]&&(b=!0,k[keys[a.code]]=!0)}),window.addEventListener("gamepadconnected",a=>{gp=a.gamepad,gp.buttonStates=[],gp.an=!1;for(let b=0;b<gp.buttons.length;b++)gp.buttonStates.push(!1)}),window.addEventListener("gamepaddisconnected",a=>{gp==a.gamepad&&(gp=null)});function clamp(a,b,c){return a>c?c:a<b?b:a}function shuffle(a){for(let b,c=a.length;0!=c;)b=flr(R()*c),c--,[a[c],a[b]]=[a[b],a[c]];return a}function imclk(){reactive||(frR(),clkC++,clkCC=audE?3-clkC:clkC,sfo=!1,arsdc=0,sqfv=1,3==clkC&&(clkC=0,audE=!audE,cD=!0,audE?(Tone.context.resume(),mxy2O=mxy2.y):(afv=0,sdTA=!1,fd=!1,amplitudes.fill(0),pT=Date.now())))}function gpC(){if(gp)for(let a=0;a<gp.buttons.length;a++)gp.buttons[a].pressed&&!gp.buttonStates[a]?(gp.buttonStates[a]=!0,tCD()):gp.buttons[a].pressed||(gp.buttonStates[a]=!1)}let nAmp=0;function aDlt(a){nAmp=Math.min(Math.max(nAmp+a,-1),1)}function handleInput(){gp&&(!audE&&(.1>Math.max(abs(gp.axes[0]),abs(gp.axes[2]))&&.1>Math.max(abs(gp.axes[1]),abs(gp.axes[3]))?(ipt=!1,gp.an=!1):(ipt=!0,gp.an=!0,mxyD.x+=(abs(gp.axes[0])>abs(gp.axes[2])?gp.axes[0]:gp.axes[2])/100,mxyD.y+=(abs(gp.axes[1])>abs(gp.axes[3])?gp.axes[1]:gp.axes[3])/100)),gpC()),audE?(cD&&(k.u||k.d)&&(sdTA=!1,fd=!1,afv=1,clp=(nAmp+(k.u?-2:k.d?2:0))/500,-1<clp&&1>clp&&(aDlt((k.u?-2:k.d?2:0)/500),sstD+=k.u?-2:k.d?2:0,sstT=clamp(sstD/500,-1,1))),gp&&(gpA=flr(100*(abs(gp.axes[1])>abs(gp.axes[3])?gp.axes[1]:gp.axes[3]))/100,.2<abs(gpA)?(sdTA=!1,fd=!1,afv=1,clp=(nAmp+gpA)/250,-1<clp&&1>clp&&(sstD+=gpA,aDlt(gpA/250),sstT=clamp(sstD/250,-1,1))):!(sd||k.l||k.r||k.u||k.d)&&!sdTA&&(sdTA=!0,tS=0,aFT=Date.now()))):(k.l&&(mxyD.x+=-.01),k.r&&(mxyD.x+=.01),k.u&&(mxyD.y+=-.01),k.d&&(mxyD.y+=.01));audE||(ipt=sd||k.l||k.r||k.u||k.d,drgO.x=!k.l&&!k.r,drgO.y=!k.u&&!k.d,(gp&&gp.an||ipt)&&fR&&frR(),(gp&&gp.an||ipt||fR)&&(mxy2.x+=mxyD.x/1e3,mxy2.y+=mxyD.y/1e3),(gp&&!gp.an||!gp)&&!sd&&(drgO.x||drgO.y)&&(mxyD.x*=drgO.x?drg:1,mxyD.y*=drgO.y?drg:1,drgO.x&&.05>abs(mxyD.x)&&(mxyD.x=0),drgO.y&&.05>abs(mxyD.y)&&(mxyD.y=0)),mxyD.x=clamp(mxyD.x,-5,5),mxyD.y=clamp(mxyD.y,-5,5))}let analyser=new Tone.Analyser("fft",16);amplitudes=Array(analyser.size).fill(0);const fft=new Tone.FFT,mic=new Tone.UserMedia().connect(fft);mic.open().then(()=>{fft.connect(analyser)}).catch(()=>{});function lerp(a,b,c){return a*(1-c)+b*c}function inverseLerp(a,b,c){return 1e-10>abs(a-b)?0:(c-a)/(b-a)}function spring(c,a,b,d){return lerp(c,a,1-Math.exp(-b*d))}function average(a,b,c){if(c<=b)return 0;let d=0;for(let e=b;e<c;e++)d+=a[e];return d/(c-b)}requestAnimationFrame(draw);