0x4f597b39…60c8sent to0xa86cd4ec…55c4·#18,068,578·view on Etherscan
"use strict";class Random{constructor(){this.useA=!1;let e=function(e){let t=parseInt(e.substr(0,8),16),r=parseInt(e.substr(8,8),16),a=parseInt(e.substr(16,8),16),i=parseInt(e.substr(24,8),16);return function(){let e=((t|=0)+(r|=0)|0)+(i|=0)|0;return i=i+1|0,t=r^r>>>9,r=(a|=0)+(a<<3)|0,a=(a=a<<21|a>>>11)+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}r(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}rr(e,t){return e+(t-e)*this.r()}ri(e,t){return Math.floor(this.rr(e,t+1))}rb(e){return this.r()<e}rc(e){return e[this.ri(0,e.length-1)]}}let projectNumber=Math.floor(parseInt(tokenData.tokenId)/1e6),mintNumber=parseInt(tokenData.tokenId)%1e6,mintParams=getMint(mintNumber,null),palettes={0:[7693161,16777215,12510188,14063714,16132628],4:[16777215,12510188,14063714,16132628,7693161],135:[8729183,15166307,7591828,10868960,4038310],162:[14146010,16777215,2965326,15937100,7782105],175:[4164769,3648955,16295204,16208664,16193555],179:[3648955,16295204,16208664,16193555,4164769],200:[5917265,9486258,15854272,15643238,15291745],264:[3054034,10874106,10066329,16136494,1330043],270:[5863782,15387781,13730120,10823211,6497604],259:[5467272,9486813,16777215,16295460,4213607],306:[16184298,3420720,4148561,8097393,10138301],360:[16365676,13855870,10971777,6708088,4676985],362:[6708088,4676985,16365676,13855870,10971777],384:[2524806,6011551,15510591,15026239,1323071],385:[3500688,7643582,15986141,13909793,15438702],389:[7643582,15986141,13909793,15438702,3500688],421:[3853501,16207127,10382956,7570324,5151658],424:[10382956,7570324,5151658,3853501,16207127],448:[8952518,2435136,16285726,16710124,13950206],449:[13950206,8952518,2435136,16285726,16710124],532:[7455903,16776436,5283251,1064539,14959703],591:[16287775,2898241,4217189,12571613,15790303],592:[15790303,16287775,2898241,4217189,12571613],593:[12571613,15790303,16287775,2898241,4217189],1e3:[6869478,10934999,14672843,15893807,16345088],1040:[40879,6900027,13316670,15361856,15517776],1050:[4110254,8308398,14276518,16686492,16661630],1095:[42949,4177866,16314854,11395384,9354496],1185:[11717462,15462272,16694591,15627118,11156826],1200:[11121322,12831414,15396552,15589302,15190446],1250:[16462923,2629918,1209212,638651,16512708],1330:[16119285,15198183,3289650,9961472,12059651],1399:[3117457,3061675,9610025,15449362,224394],1412:[16686125,9474150,10274987,16711110,16015639],1435:[5065801,3420977,9681252,2527151,2772337],1498:[16301685,9286084,6312564,13643836,14967131],1499:[14967131,16301685,9286084,6312564,13643836]};var F2=.5*(Math.sqrt(3)-1),G2=(3-Math.sqrt(3))/6,fastFloor=function(e){return 0|Math.floor(e)},grad2=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]);function createNoise2D(e){var t=buildPermutationTable(e),r=new Float64Array(t).map((function(e){return grad2[e%12*2]})),a=new Float64Array(t).map((function(e){return grad2[e%12*2+1]}));return function(e,i){var s,n,o=0,l=0,u=0,h=(e+i)*F2,c=fastFloor(e+h),d=fastFloor(i+h),m=(c+d)*G2,p=e-(c-m),f=i-(d-m);p>f?(s=1,n=0):(s=0,n=1);var v=p-s+G2,g=f-n+G2,x=p-1+2*G2,R=f-1+2*G2,E=255&c,M=255&d,T=.5-p*p-f*f;if(T>=0){var S=E+t[M];o=(T*=T)*T*(r[S]*p+a[S]*f)}var C=.5-v*v-g*g;if(C>=0){var y=E+s+t[M+n];l=(C*=C)*C*(r[y]*v+a[y]*g)}var b=.5-x*x-R*R;if(b>=0){var D=E+1+t[M+1];u=(b*=b)*b*(r[D]*x+a[D]*R)}return 70*(o+l+u)}}function buildPermutationTable(e){for(var t=new Uint8Array(512),r=0;r<256;r++)t[r]=r;for(r=0;r<255;r++){var a=r+~~(e.r()*(256-r)),i=t[r];t[r]=t[a],t[a]=i}for(r=256;r<512;r++)t[r]=t[r-256];return t}const CopyShader={uniforms:{tDiffuse:{type:"t",value:null},opacity:{type:"f",value:1}},vertexShader:["varying vec2 vUv;","void main() {","vUv = uv;","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float opacity;","uniform sampler2D tDiffuse;","varying vec2 vUv;","void main() {","vec4 texel = texture2D( tDiffuse, vUv );","gl_FragColor = opacity * texel;","}"].join("\n")};class EffectComposer{constructor(e,t){if(this.renderer=e,void 0===t){const r=e.getSize(new THREE.Vector2);this._pixelRatio=e.getPixelRatio(),this._width=r.width,this._height=r.height,(t=new THREE.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio)).texture.name="EffectComposer.rt1"}else this._pixelRatio=1,this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new ShaderPass(CopyShader),this.clock=new THREE.Clock}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);-1!==t&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){void 0===e&&(e=this.clock.getDelta());const t=this.renderer.getRenderTarget();let r=!1;for(let t=0,a=this.passes.length;t<a;t++){const a=this.passes[t];if(!1!==a.enabled){if(a.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(t),a.render(this.renderer,this.writeBuffer,this.readBuffer,e,r),a.needsSwap){if(r){const t=this.renderer.getContext(),r=this.renderer.state.buffers.stencil;r.setFunc(t.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),r.setFunc(t.EQUAL,1,4294967295)}this.swapBuffers()}void 0!==THREE.MaskPass&&(a instanceof THREE.MaskPass?r=!0:a instanceof THREE.ClearMaskPass&&(r=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(void 0===e){const t=this.renderer.getSize(new THREE.Vector2);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,(e=this.renderTarget1.clone()).setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;const r=this._width*this._pixelRatio,a=this._height*this._pixelRatio;this.renderTarget1.setSize(r,a),this.renderTarget2.setSize(r,a);for(let e=0;e<this.passes.length;e++)this.passes[e].setSize(r,a)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}}class Pass{constructor(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}}class FullScreenQuad{constructor(e){const t=new THREE.BufferGeometry;t.setAttribute("position",new THREE.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),t.setAttribute("uv",new THREE.Float32BufferAttribute([0,2,0,0,2,0],2)),this._mesh=new THREE.Mesh(t,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,new THREE.OrthographicCamera(-1,1,1,-1,0,1))}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class ShaderPass extends Pass{constructor(e,t){super(),this.textureID=void 0!==t?t:"tDiffuse",e instanceof THREE.ShaderMaterial?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=THREE.UniformsUtils.clone(e.uniforms),this.material=new THREE.ShaderMaterial({defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this.fsQuad=new FullScreenQuad(this.material)}render(e,t,r){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=r.texture),this.fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this.fsQuad.render(e))}}class RenderPass extends Pass{constructor(e,t,r,a,i){super(),this.scene=e,this.camera=t,this.overrideMaterial=r,this.clearColor=a,this.clearAlpha=void 0!==i?i:0,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new THREE.Color}render(e,t,r){const a=e.autoClear;let i,s;e.autoClear=!1,void 0!==this.overrideMaterial&&(s=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor&&(e.getClearColor(this._oldClearColor),i=e.getClearAlpha(),e.setClearColor(this.clearColor,this.clearAlpha)),this.clearDepth&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:r),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor&&e.setClearColor(this._oldClearColor,i),void 0!==this.overrideMaterial&&(this.scene.overrideMaterial=s),e.autoClear=a}}const SAOShader={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:new THREE.Vector2(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:new THREE.Matrix4},cameraInverseProjectionMatrix:{value:new THREE.Matrix4},scale:{value:1},intensity:{value:.1},bias:{value:.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:"\n\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n#include <common>\n#define I int\n#define FL float\n#define V2 vec2\n#define V3 vec3\n#define V4 vec4\nvarying V2 vUv;\n#if DIFFUSE_TEXTURE==1\nuniform sampler2D tDiffuse;\n#endif\nuniform sampler2D tDepth;\n#if NORMAL_TEXTURE==1\nuniform sampler2D tNormal;\n#endif\nuniform FL cameraNear,cameraFar;uniform mat4 cameraProjectionMatrix,cameraInverseProjectionMatrix;uniform FL scale,intensity,bias,kernelRadius,minResolution;uniform V2 size;uniform FL randomSeed;\n#include <packing>\nV4 getDefaultColor(const V2 v){\n#if DIFFUSE_TEXTURE==1\nreturn texture2D(tDiffuse,vUv);\n#else\nreturn V4(1);\n#endif\n}FL getDepth(const V2 v){\n#if DEPTH_PACKING==1\nreturn unpackRGBAToDepth(texture2D(tDepth,v));\n#else\nreturn texture2D(tDepth,v).x;\n#endif\n}FL getViewZ(const FL v){\n#if PERSPECTIVE_CAMERA==1\nreturn perspectiveDepthToViewZ(v,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(v,cameraNear,cameraFar);\n#endif\n}V3 getViewPosition(const V2 v,const FL c,const FL f){FL g=cameraProjectionMatrix[2][3]*f+cameraProjectionMatrix[3][3];V4 r=V4((V3(v,c)-.5)*2.,1);r*=g;return(cameraInverseProjectionMatrix*r).xyz;}V3 getViewNormal(const V3 v,const V2 c){\n#if NORMAL_TEXTURE==1\nreturn unpackRGBToNormal(texture2D(tNormal,c).xyz);\n#else\nreturn normalize(cross(dFdx(v),dFdy(v)));\n#endif\n}FL scaleDividedByCameraFar,minResolutionMultipliedByCameraFar;FL getOcclusion(const V3 v,const V3 c,const V3 g){V3 t=g-v;FL r=length(t),N=scaleDividedByCameraFar*r;return max(0.,(dot(c,t)-minResolutionMultipliedByCameraFar)/N-bias)/(1.+pow2(N));}const FL ANGLE_STEP=PI2*FL(NUM_RINGS)/FL(NUM_SAMPLES),INV_NUM_SAMPLES=1./FL(NUM_SAMPLES);FL getAmbientOcclusion(const V3 v){scaleDividedByCameraFar=scale/cameraFar;minResolutionMultipliedByCameraFar=minResolution*cameraFar;V3 c=getViewNormal(v,vUv);FL f=rand(vUv+randomSeed)*PI2;V2 g=V2(kernelRadius*INV_NUM_SAMPLES)/size,r=g;FL s=0.,t=0.;for(I u=0;u<NUM_SAMPLES;u++){V2 N=vUv+V2(cos(f),sin(f))*g;g+=r;f+=ANGLE_STEP;FL S=getDepth(N);if(S>=1.-EPSILON)continue;FL m=getViewZ(S);V3 E=getViewPosition(N,S,m);s+=getOcclusion(v,c,E);t+=1.;}if(t==0.)discard;return s*(intensity/t);}void main(){FL v=getDepth(vUv);if(v>=1.-EPSILON)discard;FL c=getViewZ(v);V3 t=getViewPosition(vUv,v,c);FL g=getAmbientOcclusion(t);gl_FragColor=getDefaultColor(vUv);gl_FragColor.xyz*=1.-g;}\n"},DepthLimitedBlurShader={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:new THREE.Vector2(512,512)},sampleUvOffsets:{value:[new THREE.Vector2(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:"\n#include <common>\nuniform vec2 size;varying vec2 vUv,vInvSize;void main(){vUv=uv;vInvSize=1./size;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1);}\n",fragmentShader:"#include <common>\n#include <packing>\nuniform sampler2D tDiffuse,tDepth;uniform float cameraNear,cameraFar,depthCutoff;uniform vec2 sampleUvOffsets[KERNEL_RADIUS+1];uniform float sampleWeights[KERNEL_RADIUS+1];varying vec2 vUv,vInvSize;float getDepth(const vec2 v){\n#if DEPTH_PACKING==1\nreturn unpackRGBAToDepth(texture2D(tDepth,v));\n#else\nreturn texture2D(tDepth,v).x;\n#endif\n}float getViewZ(const float v){\n#if PERSPECTIVE_CAMERA==1\nreturn perspectiveDepthToViewZ(v,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(v,cameraNear,cameraFar);\n#endif\n}void main(){float v=getDepth(vUv);if(v>=1.-EPSILON)discard;float f=-getViewZ(v);bool r=false,c=false;float e=sampleWeights[0];vec4 t=texture2D(tDiffuse,vUv)*e;for(int i=1;i<=KERNEL_RADIUS;i++){float s=sampleWeights[i];vec2 g=sampleUvOffsets[i]*vInvSize,u=vUv+g;float a=-getViewZ(getDepth(u));if(abs(a-f)>depthCutoff)r=true;if(!r)t+=texture2D(tDiffuse,u)*s,e+=s;u=vUv-g;a=-getViewZ(getDepth(u));if(abs(a-f)>depthCutoff)c=true;if(!c)t+=texture2D(tDiffuse,u)*s,e+=s;}gl_FragColor=t/e;}\n"},BlurShaderUtils={createSampleWeights:function(e,t){const r=[];for(let a=0;a<=e;a++)r.push(gaussian(a,t));return r},createSampleOffsets:function(e,t){const r=[];for(let a=0;a<=e;a++)r.push(t.clone().multiplyScalar(a));return r},configure:function(e,t,r,a){e.defines.KERNEL_RADIUS=t,e.uniforms.sampleUvOffsets.value=BlurShaderUtils.createSampleOffsets(t,a),e.uniforms.sampleWeights.value=BlurShaderUtils.createSampleWeights(t,r),e.needsUpdate=!0}};function gaussian(e,t){return Math.exp(-e*e/(t*t*2))/(Math.sqrt(2*Math.PI)*t)}const UnpackDepthRGBAShader={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:"varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1);}",fragmentShader:"uniform float opacity;uniform sampler2D tDiffuse;varying vec2 vUv;\n#include <packing>\nvoid main(){float v=1.-unpackRGBAToDepth(texture2D(tDiffuse,vUv));gl_FragColor=vec4(vec3(v),opacity);}"};class SAOPass extends Pass{constructor(e,t,r=!1,a=!1,i=new THREE.Vector2(256,256)){let s;super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.supportsDepthTextureExtension=r,this.supportsNormalTexture=a,this.originalClearColor=new THREE.Color,this._oldClearColor=new THREE.Color,this.oldClearAlpha=1,this.params={output:0,saoBias:.5,saoIntensity:.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:!0,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:.01},this.resolution=new THREE.Vector2(i.x,i.y),this.saoRenderTarget=new THREE.WebGLRenderTarget(this.resolution.x,this.resolution.y),this.blurIntermediateRenderTarget=this.saoRenderTarget.clone(),this.beautyRenderTarget=this.saoRenderTarget.clone(),this.normalRenderTarget=new THREE.WebGLRenderTarget(this.resolution.x,this.resolution.y,{minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter}),this.depthRenderTarget=this.normalRenderTarget.clone(),this.supportsDepthTextureExtension&&(s=new THREE.DepthTexture,s.type=THREE.UnsignedShortType,this.beautyRenderTarget.depthTexture=s,this.beautyRenderTarget.depthBuffer=!0),this.depthMaterial=new THREE.MeshDepthMaterial,this.depthMaterial.depthPacking=THREE.RGBADepthPacking,this.depthMaterial.blending=THREE.NoBlending,this.normalMaterial=new THREE.MeshNormalMaterial,this.normalMaterial.blending=THREE.NoBlending,void 0===SAOShader&&console.error("THREE.SAOPass relies on THREE.SAOShader"),this.saoMaterial=new THREE.ShaderMaterial({defines:Object.assign({},SAOShader.defines),fragmentShader:SAOShader.fragmentShader,vertexShader:SAOShader.vertexShader,uniforms:THREE.UniformsUtils.clone(SAOShader.uniforms)}),this.saoMaterial.extensions.derivatives=!0,this.saoMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.saoMaterial.defines.NORMAL_TEXTURE=this.supportsNormalTexture?1:0,this.saoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.saoMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.saoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.saoMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.blending=THREE.NoBlending,void 0===DepthLimitedBlurShader&&console.error("THREE.SAOPass relies on THREE.DepthLimitedBlurShader"),this.vBlurMaterial=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(DepthLimitedBlurShader.uniforms),defines:Object.assign({},DepthLimitedBlurShader.defines),vertexShader:DepthLimitedBlurShader.vertexShader,fragmentShader:DepthLimitedBlurShader.fragmentShader}),this.vBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.vBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.vBlurMaterial.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.vBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.vBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.vBlurMaterial.blending=THREE.NoBlending,this.hBlurMaterial=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(DepthLimitedBlurShader.uniforms),defines:Object.assign({},DepthLimitedBlurShader.defines),vertexShader:DepthLimitedBlurShader.vertexShader,fragmentShader:DepthLimitedBlurShader.fragmentShader}),this.hBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.hBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.hBlurMaterial.uniforms.tDiffuse.value=this.blurIntermediateRenderTarget.texture,this.hBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.hBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.hBlurMaterial.blending=THREE.NoBlending,void 0===CopyShader&&console.error("THREE.SAOPass relies on CopyShader"),this.materialCopy=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(CopyShader.uniforms),vertexShader:CopyShader.vertexShader,fragmentShader:CopyShader.fragmentShader,blending:THREE.NoBlending}),this.materialCopy.transparent=!0,this.materialCopy.depthTest=!1,this.materialCopy.depthWrite=!1,this.materialCopy.blending=THREE.CustomBlending,this.materialCopy.blendSrc=THREE.DstColorFactor,this.materialCopy.blendDst=THREE.ZeroFactor,this.materialCopy.blendEquation=THREE.AddEquation,this.materialCopy.blendSrcAlpha=THREE.DstAlphaFactor,this.materialCopy.blendDstAlpha=THREE.ZeroFactor,this.materialCopy.blendEquationAlpha=THREE.AddEquation,void 0===UnpackDepthRGBAShader&&console.error("THREE.SAOPass relies on THREE.UnpackDepthRGBAShader"),this.depthCopy=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(UnpackDepthRGBAShader.uniforms),vertexShader:UnpackDepthRGBAShader.vertexShader,fragmentShader:UnpackDepthRGBAShader.fragmentShader,blending:THREE.NoBlending}),this.fsQuad=new FullScreenQuad(null)}render(e,t,r){if(this.renderToScreen&&(this.materialCopy.blending=THREE.NoBlending,this.materialCopy.uniforms.tDiffuse.value=r.texture,this.materialCopy.needsUpdate=!0,this.renderPass(e,this.materialCopy,null)),1===this.params.output)return;e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();const a=e.autoClear;e.autoClear=!1,e.setRenderTarget(this.depthRenderTarget),e.clear(),this.saoMaterial.uniforms.bias.value=this.params.saoBias,this.saoMaterial.uniforms.intensity.value=this.params.saoIntensity,this.saoMaterial.uniforms.scale.value=this.params.saoScale,this.saoMaterial.uniforms.kernelRadius.value=this.params.saoKernelRadius,this.saoMaterial.uniforms.minResolution.value=this.params.saoMinResolution,this.saoMaterial.uniforms.cameraNear.value=this.camera.near,this.saoMaterial.uniforms.cameraFar.value=this.camera.far;const i=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms.depthCutoff.value=i,this.hBlurMaterial.uniforms.depthCutoff.value=i,this.vBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.vBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.hBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.hBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius),this.prevStdDev===this.params.saoBlurStdDev&&this.prevNumSamples===this.params.saoBlurRadius||(BlurShaderUtils.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new THREE.Vector2(0,1)),BlurShaderUtils.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new THREE.Vector2(1,0)),this.prevStdDev=this.params.saoBlurStdDev,this.prevNumSamples=this.params.saoBlurRadius),e.setClearColor(0),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.supportsDepthTextureExtension||this.renderOverride(e,this.depthMaterial,this.depthRenderTarget,0,1),this.supportsNormalTexture&&this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.renderPass(e,this.saoMaterial,this.saoRenderTarget,16777215,1),this.params.saoBlur&&(this.renderPass(e,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1),this.renderPass(e,this.hBlurMaterial,this.saoRenderTarget,16777215,1));let s=this.materialCopy;3===this.params.output?this.supportsDepthTextureExtension?(this.materialCopy.uniforms.tDiffuse.value=this.beautyRenderTarget.depthTexture,this.materialCopy.needsUpdate=!0):(this.depthCopy.uniforms.tDiffuse.value=this.depthRenderTarget.texture,this.depthCopy.needsUpdate=!0,s=this.depthCopy):4===this.params.output?(this.materialCopy.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.materialCopy.needsUpdate=!0):(this.materialCopy.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.materialCopy.needsUpdate=!0),0===this.params.output?s.blending=THREE.CustomBlending:s.blending=THREE.NoBlending,this.renderPass(e,s,this.renderToScreen?null:r),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=a}renderPas