memoscan
← all memos

Memo 0x4877cb56…0305ef on Ethereum

.y,128,r*t.x,a*t.y,230.4),"#3d3c3b","#777065"),n.fillRect(0,153.6,r,230.4)}let c=[];const l=[o,o,s,s,function(e){let t={x:.5,y:.5};var s=n.createRadialGradient(r*t.x,a*t.y,0,r*t.x,a*t.y,128);i(s,"white","#858ba0"),n.fillRect(0,89.6,r,51.2),t={x:.5,y:.1},i(s=n.createRadialGradient(r*t.x,a*t.y,102.4,r*t.x,a*t.y,204.8),"white","#777065"),n.fillRect(0,153.6,r,230.4)},function(e){i(n.createRadialGradient(128,128,51.2,128,128,192),"white","blue"),n.fillRect(0,89.6,r,64)}],d=[!0,!1,"000000","3f3d3c",1,1];for(let e=0;e<6;e++)n.fillStyle="#000000",n.fillRect(0,0,r,a),l[e](d[e]),c.push(t.toDataURL());const h=new THREE.PMREMGenerator(renderer),u=(new THREE.CubeTextureLoader).load(c,(()=>{e.envMap=h.fromCubemap(u).texture,h.dispose()}))}function lowResCheck(){return window.matchMedia("only screen and (max-width: 760px)").matches}function setPixelRatio(){isMobile=lowResCheck();const e=isMobile?2:Math.min(window.devicePixelRatio+1,3);renderer.setPixelRatio(e)}function init(){let e=getDim();scene=new THREE.Scene,renderer=new THREE.WebGLRenderer({antialias:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),setPixelRatio();let t=new THREE.Color(p.colors[4]);const r=p.palette;[2,5].includes(r)?t=new THREE.Color(16777215):[18].includes(r)&&(t=new THREE.Color(0)),renderer.setSize(e.x,e.y),renderer.setClearColor(t,.5),renderer.physicallyCorrectLights=!0,renderer.shadowMap.enabled=!0,renderer.shadowMap.type=THREE.PCFSoftShadowMap;const a=new THREE.Vector2;renderer.getDrawingBufferSize(a),e={x:a.width,y:a.height,aspect:a.width/a.height};createContainer();camera=new THREE.OrthographicCamera(-1*e.aspect,1*e.aspect,1,-1,.1,10),camera.position.set(0,0,p.camZ),camera.lookAt(new THREE.Vector3),camera.zoom=.5,l1=getDirLight(p.lights[0],16777215,!0),scene.add(l1),l2=getDirLight(p.lights[1],16777215,!0),scene.add(l2);const n=new THREE.AmbientLight(16777215,.1);scene.add(n);const i=new THREE.MeshStandardMaterial;i.envMapIntensity=p.envIntensity,i.roughness=p.roughness,i.metalness=p.metalness,i.opacity=.72,i.transparent=!0,generateCubeMap(i);const s=p.colors;createInstances(p.instances,i,s);const o=new THREE.WebGLMultisampleRenderTarget(e.x,e.y,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat});let c="mirror"==p.wrapMode?THREE.MirroredRepeatWrapping:THREE.RepeatWrapping;o.texture.wrapS=o.texture.wrapT=c,composer=new EffectComposer(renderer,o);const l=new RenderPass(scene,camera);composer.addPass(l);const d=p.octaves>1?`float c=0.; for(int d=0;d<${p.octaves};d++)c+=b*na(a*e,vec3(0.),0.),a*=2.,b*=f;return c;`:"float c = b*na(a*e,vec3(0.),0.); return c;";displacementShader={uniforms:{tDiffuse:u(null),ja:u([e.x,e.y]),u:u([p.seed,p.freq]),Y:u(p.weights),ka:u(p.midPoint),R:u(s.slice(5,8)),la:u(p.invert)},vertexShader:"varying vec2 vUv; void main() { gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.); vUv = uv; }",fragmentShader:`uniform sampler2D tDiffuse;varying vec2 vUv;uniform vec3 R;uniform vec2 ja,u,Y,ka;uniform float la;float ma(vec2 b){vec3 a=fract(vec3(b.xyx)*.1031);a+=dot(a,a.yzx+33.33);return fract((a.x+a.y)*a.z);} ${simplexNoise} float Q(vec3 e,float a,float b,float f){${d}}vec2 ha(vec2 b){vec2 a=b*u.y*4.;float c=Q(vec3(a,u.x),1.,1.,.5),d=Q(vec3(a+vec2(40.123,134.921),u.x),1.,1.,.5);vec2 e=vec2(c,d);return e;}vec3 ta(const vec3 a){return a*(2.51*a+.03)/(a*(2.43*a+.59)+.14);}mat4 ua(float a){return mat4(1,0,0,0,0,1,0,0,0,0,1,0,a,a,a,1);}mat4 va(float a){float b=(1.-a)/2.;return mat4(a,0,0,0,0,a,0,0,0,0,a,0,b,b,b,1);}mat4 wa(float c){vec3 a=vec3(.3086,.6094,.082);float b=1.-c;vec3 d=vec3(a.x*b);d+=vec3(c,0,0);vec3 e=vec3(a.y*b);e+=vec3(0,c,0);vec3 f=vec3(a.z*b);f+=vec3(0,0,c);return mat4(d,0,e,0,f,0,0,0,0,1);}float ia(vec3 a){return dot(a,vec3(.299,.587,.114));}void main(){vec2 b=vUv;b.x=la>0.?1.-b.x:b.x;vec2 c=b,d=ha(b),f=d*Y,g=d*.5+.5;c-=ka,c=mix(c,c+f,smoothstep(0.,1.,g));vec4 a=texture2D(tDiffuse,c);float e=ia(a.rgb),h=smoothstep(0.,.1,e);a.rgb*=h,a.rgb=ta(a.rgb),a.rgb=pow(a.rgb,vec3(.454545)),a=ua(R.x)*va(R.y)*wa(R.z)*a,a.rgb+=ma(b*ja)*.1,gl_FragColor=clamp(a,0.,1.);}`},displacementPass=new ShaderPass(displacementShader),displacementPass.enabled=!0,composer.addPass(displacementPass),window.addEventListener("resize",onWindowResize),document.addEventListener("keydown",onDocumentKeyDown,!1),clock=new THREE.Clock}function onDocumentKeyDown(e){const t=new THREE.Vector2(1440,1920);switch(e.which){case 49:saveAsImage(t);break;case 50:saveAsImage(t.multiplyScalar(2));break;case 51:saveAsImage(t.multiplyScalar(3))}}function updateResize(){const e=new THREE.Vector2;renderer.getDrawingBufferSize(e);const t={x:e.width,y:e.height,aspect:e.width/e.height};displacementShader.uniforms.uRes={value:[t.x,t.y]},camera.aspect=t.aspect,camera.updateProjectionMatrix()}function onWindowResize(){let e=getDim();renderer.setSize(e.x,e.y),setPixelRatio(),updateResize(),render()}function upScaleExport(e,t){renderer.setPixelRatio(1),renderer.setSize(e,t),updateResize(),render()}function saveAsImage(e){let t;upScaleExport(e.x,e.y);Date.now||(Date.now=function(){return(new Date).getTime()});let r=Math.floor(Date.now()/1e3);try{const e="image/png";t=renderer.domElement.toDataURL(e),saveFile(t.replace(e,"image/octet-stream"),`Vahria#${mintNumber}_${r}.png`)}catch(e){return void console.log(e)}onWindowResize()}const saveFile=function(e,t){const r=document.createElement("a");"string"==typeof r.download?(document.body.appendChild(r),r.download=t,r.href=e,r.click(),document.body.removeChild(r)):location.replace(uri)};function update(){camera.lookAt(new THREE.Vector3),camera.updateProjectionMatrix()}function render(){composer.render()}let frame=0;function animate(){time=clock.getElapsedTime(),window.requestAnimationFrame(animate),update(),animation?(render(),frame=0):frame<10&&(render(),frame+=1)}init(),animate();