0x35ed1634…9501sent to0xa7d8d9ef…d270·#14,633,967·view on Etherscan
rotate(vec2 uv, float rotation, float mid){return vec2(cos(rotation) * (uv.x - mid) + sin(rotation) * (uv.y - mid) + mid,cos(rotation) * (uv.y - mid) - sin(rotation) * (uv.x - mid) + mid);}vec2 scale(vec2 uv, float scale, vec2 origin) {return (uv - origin) * scale + origin;}vec2 scale(vec2 uv, vec2 scale, vec2 origin) {return (uv - origin) * scale + origin;}void main() {float uvx = vUv.x;float uvy = vUv.y;if (uflp.x == 1.) {uvx = 1.-vUv.x;}if (uflp.y == 1.) {uvy = 1.-vUv.y;}vec2 uv = vec2(uvx, uvy);vec3 c = texture2D(tInput, uv).rgb;gl_FragColor = vec4(c, 1.);}`;const Mt="vec2 wrapuv = vec2(vUv.x, vUv.y) * -10.;float fllcll = 1.;if (uStep == 0. ) {wrapuv.x *= .5;}float nbStripes = 1.;if (uStep > 3.) {nbStripes = unblns.x;}float cellIdOffset = urnd * 10.;if (unblns.x == 10.) {cellIdOffset *= step(.35, urnd);}vec2 cellId = floor( (mod(vUv, 1.))*nbStripes)/nbStripes;cellId += vec2(random(vec2(cellId.x*cellIdOffset+cellId.y+ucllff.x*10.)));cellId = mod(cellId, 1.);vec2 cellUv = mod(vUv, vec2(1./nbStripes)) * nbStripes;float v = rnduv(floor(vUv * 1.));float stripes = floor(( fract( vUv.y + v ) *nbStripes))/nbStripes;stripes *= floor(vUv.y *nbStripes)/nbStripes*1000.;float offset = 0.;offset += pertub * .5;float xstripes = floor(( fract( vUv.x + v ) *nbStripes))/nbStripes;stripes *= xstripes;if (uStep > 0.) {wrapuv.x *= offset * .2;wrapuv.x += offset * 30.;wrapuv.x += stripes * 10.5;wrapuv.x += stripes - noise(vec3(stripes*100.)) - 1.;}float rot = 0.;float direction = curl.r < -1. ? 1. : -1.;if (uStep > 2.) {rot = #rtfmla;rot += #rtaddfmla;}float ffctrd = 1.;float ffcagl = 2. * PI;vec2 swlCenter = uswl.xy;vec2 swlUv = vUv * 1. - swlCenter;float dstctr = distance(vUv, swlCenter) - .1;dstctr = clamp(dstctr, 0., 1.);float len = uswl.z + length(swlUv * vec2(ratio, 1.));float angle = atan(swlUv.y, swlUv.x) + ffcagl * smoothstep(ffctrd, 0., len);#rtswlfmla; rot += uglrt;vec2 centeredUV = rotate(vUv, rot, vec2(0.));if (uStep > 1.) {wrapuv.x += #wrapx;}if(usqss.y == 0. && ufllcll.x == 1. && cellId.y > ufllcll.y && uStep > 4.) {fllcll = 0.;} wrapuv = scale(wrapuv, vec2(.2, 1.), vec2(0.));",I=e.form;let g=Fe;g=g.replace("#crlchnk1",I.crlchnk1);g=g.replace("#crlchnks",I.crlchnks);g=g.replace("#crlchnks1",I.crlchnks1);g=g.replace("#crlchnks2",I.crlchnks2);g=g.replace("#crlchnk2",I.crlchnk2);g=g.replace("#crlbse",I.crlbse);g=g.replace("#curlExp0",I.crlxps[0]);g=g.replace("#curlExp1",I.crlxps[1]);g=g.replace("#curlExp2",I.crlxps[2]);let d=qt;d=d.replace("${curl}",g);d=d.replace("${noisecommon}",Se);d=d.replace("${pnoise}",We);d=d.replace("${snoise}",we);d=d.replace("${grain}",Ae);d=d.replace("${noise}",Le);d=d.replace("${fm}",Ne);d=d.replace("${adjust}",Xe);d=d.replace("${blend}",ke);d=d.replace("${edge}",Oe);d=d.replace("${wrapuv}",Mt);d=d.replace("#rtfmla",I.rtfmla);d=d.replace("#rtaddfmla",I.rtaddfmla);d=d.replace("#rtswlfmla",I.rtswlfmla);d=d.replace("#wrapx",I.wrapx);new THREE.Vector2;new THREE.Vector3;const Ge=new THREE.Vector4,Bt=c=>{let l=null,s=null,o,n,t,i,u,p=null,b=ye(4096);const k=()=>{l=Dt(),s=$t(l.getColorTexture())},R=()=>{o=new THREE.Scene,n=new THREE.PerspectiveCamera(45,e.width/e.height,.01,100);let v=re(e.bgColor);v=te(v.h,v.s,v.l);let S=[],T=[];t=new THREE.ShaderMaterial({defines:{nbdrts:e.dirts.length},uniforms:{ures:{value:new THREE.Vector2(e.width,e.height)},uDebug:{value:e.debugView},tInput:{value:l.getColorTexture()},tWrap:{value:l.getWrapTexture()},tDirtInput:{value:l.gtdtColorTexture()},tDarkInput:{value:l.getColorSelectionTexture()},tContourInput:{value:l.getContourTexture()},tRotationInput:{value:l.getRotationTexture()},tStrokesInput:{value:s.getColorTexture()},ubg:{value:new THREE.Vector4(v.r/255,v.g/255,v.b/255,e.bgColorScale)},upprCBSE:{value:new THREE.Vector4(e.pprcntrst,e.pprbrhtnss,e.pprstrtn,e.pprxpsr)},uartcbse:{value:new THREE.Vector4(e.artcntrst,e.artbrhtnss,e.artstrtn,e.artxpsr)},uarthsft:{value:e.arthsft},ucbse:{value:new THREE.Vector4(e.cntrst,e.brhtnss,e.strtn,e.xpsr)},uptscl:{value:e.pertubScale},uptuvscl:{value:e.pertubUVScale},uptuvtrlt:{value:new THREE.Vector2(e.pertubUVTranslateX,e.pertubUVTranslateY)},uclddgrtrlt:{value:new THREE.Vector2(e.clddegtrslt.x,e.clddegtrslt.y)},uclattscl:{value:e.clattScale},ugrnscl:{value:e.grainResScale},ucntr:{value:new THREE.Vector3(1,e.contourWidth,1)},unblns:{value:new THREE.Vector2(e.nbLinesX,e.nbLinesY)},ucllbrdsz:{value:e.cellBorderSize},ucrl:{value:new THREE.Vector4(e.curl.pos.x,e.curl.pos.y,e.curl.scl.x,e.curl.scl.y)},ucrlwrp:{value:new THREE.Vector2(e.curl.wrap.x,e.curl.wrap.y)},ucrlscl:{value:e.form.crlsck2},upclskint:{value:e.pclstkIntensity},unseclint:{value:e.nsyclIntensity},uogclint:{value:e.isDark?0:e.originColorIntensity},uhstkint:{value:e.hstkIntensity},ufzzstkint:{value:e.fzzstkint},udkint:{value:e.darkIntensity},uswl:{value:new THREE.Vector3(e.swl[0],e.swl[1],e.swl[2])},ucllff:{value:new THREE.Vector2(e.ucllff.x,e.ucllff.y)},udkn:{value:e.isDark?1:0},udkncl:{value:new THREE.Vector4(v.r/255,v.g/255,v.b/255,e.bgColorScale)},upprtp:{value:new THREE.Vector2(e.pprType.x,e.pprType.y)},uscrch:{value:new THREE.Vector2(e.scrch.x,e.scrch.y)},uwrsz:{value:new THREE.Vector4(e.wearSize.x,e.wearSize.y,e.wearSize.y,e.wearSize.w)},uglrt:{value:e.globalRot},ufllcll:{value:new THREE.Vector2(e.fllclls.x?1:0,e.fllclls.y)},ufrmprm:{value:new THREE.Vector4(e.frameParams.x,e.frameParams.y,e.frameParams.z,e.frameParams.w)},ungt:{value:new THREE.Vector2(e.night[0],e.night[1])},uDirts:{value:S},udtintfq:{value:T},udtbld:{value:e.dirtBlend},usqss:{value:new THREE.Vector2(e.issqusse[0],e.issqusse[1])},urnd:{value:e.rnd},upidx:{value:e.paletteIdx},uWRes:{value:e.scl},urt:{value:e.rotate},urtfq:{value:e.rotateFreq},uedgwdh:{value:e.edgeWidth},uStep:{value:1}},vertexShader:W,fragmentShader:d}),t.extensions.derivatives=!0,i=new THREE.ShaderMaterial({uniforms:{tInput:{value:b.texture},uflp:{value:new THREE.Vector2(e.flip.x,e.flip.y)},ungt:{value:new THREE.Vector2(e.night[0],e.night[1])},uSunColor:{value:new THREE.Vector4(e.sunColor[0],e.sunColor[1],e.sunColor[2],e.sunColor[3])},uStep:{value:1}},vertexShader:W,fragmentShader:Ht}),u=new THREE.PlaneBufferGeometry(2,2),p=new THREE.Mesh(u,t),o.add(p)},C=v=>{console.log("render step",e.step),l.render(v),s.render(v),e.step>5&&e.night[0]==1?(t.uniforms.ungt.value.x=1,e.artcntrst=3.75,e.artbrhtnss=2,e.artstrtn=1.2,e.scrch.x=.01):e.night[0]==1&&(t.uniforms.ungt.value.x=0,e.artcntrst=3,e.artbrhtnss=1.15,e.artxpsr=-.65,e.artstrtn=-1);let S=re(e.bgColor);S=te(S.h,S.s,S.l);let T=re(e.darkenColor);T=te(T.h,T.s,T.l),Ge.set(S.r/255,S.g/255,S.b/255,e.bgColorScale),t.uniforms.ubg.value=Ge,t.uniforms.udkncl.value.x=T.r/255,t.uniforms.udkncl.value.y=T.g/255,t.uniforms.udkncl.value.z=T.b/255,t.uniforms.uDebug.value=e.debugView,t.uniforms.uarthsft.value=e.arthsft,t.uniforms.uartcbse.value.x=e.artcntrst,t.uniforms.uartcbse.value.y=e.artbrhtnss,t.uniforms.uartcbse.value.z=e.artstrtn,t.uniforms.uartcbse.value.w=e.artxpsr,t.uniforms.ucbse.value.x=e.cntrst,t.uniforms.ucbse.value.y=e.brhtnss,t.uniforms.ucbse.value.z=e.strtn,t.uniforms.ucbse.value.w=e.xpsr,t.uniforms.uptscl.value=e.pertubScale,t.uniforms.uptuvscl.value=e.pertubUVScale,t.uniforms.uptuvtrlt.value.x=e.pertubUVTranslateX,t.uniforms.uptuvtrlt.value.y=e.pertubUVTranslateY,t.uniforms.uclddgrtrlt.value.x=e.clddegtrslt.x,t.uniforms.uclddgrtrlt.value.y=e.clddegtrslt.y,t.uniforms.uclattscl.value=e.clattScale,t.uniforms.ugrnscl.value=e.grainResScale,t.uniforms.ucntr.value.x=1,t.uniforms.ucntr.value.y=e.contourWidth,t.uniforms.ucntr.value.z=1,t.uniforms.unblns.value.x=e.nbLinesX,t.uniforms.unblns.value.y=e.nbLinesY,t.uniforms.ucrl.value.x=e.curl.pos.x,t.uniforms.ucrl.value.y=e.curl.pos.y,t.uniforms.ucrl.value.z=e.curl.scl.x,t.uniforms.ucrl.value.w=e.curl.scl.y,t.uniforms.uscrch.value.x=e.scrch.x,t.uniforms.uwrsz.value.x=e.wearSize.x,t.uniforms.uwrsz.value.y=e.wearSize.y,t.uniforms.uwrsz.value.z=e.wearSize.z,t.uniforms.uwrsz.value.w=e.wearSize.w,t.uniforms.upclskint.value=e.pclstkIntensity,t.uniforms.unseclint.value=e.nsyclIntensity,t.uniforms.uhstkint.value=e.hstkIntensity,t.uniforms.uogclint.value=e.isDark?0:e.originColorIntensity,t.uniforms.udkn.value=e.isDark?1:0,t.uniforms.uglrt.value=e.globalRot,t.uniforms.ufllcll.value.x=e.fllclls.x?1:0,t.uniforms.ufllcll.value.y=e.fllclls.y;let A=[],P=[];for(let Y=0;Y<e.dirts.length;Y++){const $=e.dirts[Y];A.push($.scale.x,$.scale.y,$.levels.x,$.levels.y),P.push($.intensity,$.freq)}t.uniforms.uDirts.value=A,t.uniforms.udtintfq.value=P,t.uniforms.udtbld.value=e.dirtBlend,t.uniforms.uStep.value=e.step,i.uniforms.uStep.value=e.step,p.material=t,v.setRenderTarget(b),v.render(o,n),p.material=i,v.setRenderTarget(null),v.render(o,n)};return k(),R(),{render:C}};let V=null,Ye=null;const Ft=()=>{V.gl,Ye=Bt()},je=()=>{Ye.render(V.r)};window.render=je;const Wt=()=>{const l=V.canvas.toDataURL();let s=document.createElement("img");s.src=l,document.body.appendChild(s)};window.saveRender=Wt;const At=()=>{V=new Tt({width:e.width,height:e.height}),e.nbShapes=V.maxUniforms<1024?100:400,V.render=je,new THREE.Scene,new THREE.PerspectiveCamera(45,e.width/e.height,.01,100),Ft(),V.play(),V.pause(),document.body.appendChild(V.canvas)};At();