1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6695],{4385:(e,t,r)=>{r.d(t,{AH:()=>ea,K1:()=>eU,Mj:()=>U,SP:()=>eS,Tg:()=>et,To:()=>eE,Vu:()=>eC,Xe:()=>eF,bv:()=>L,cf:()=>y,hH:()=>ep,i:()=>ef,kt:()=>ee,nn:()=>en,oF:()=>a,qM:()=>$,s0:()=>p,t$:()=>H});var s=r(81038),i=class{constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}get autoReset(){return this._autoReset}set autoReset(e){"undefined"!=typeof document&&void 0!==document.hidden&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return .001*this._delta}get fixedDelta(){return .001*this._fixedDelta}set fixedDelta(e){this._fixedDelta=1e3*e}get elapsed(){return .001*this._elapsed}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(void 0!==e?e:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}},n=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),r=new s.LoY;return r.setAttribute("position",new s.THS(e,3)),r.setAttribute("uv",new s.THS(t,2)),r})(),a=class e{static get fullscreenGeometry(){return n}constructor(e="Pass",t=new s.Z58,r=new s.qUd){this.name=e,this.renderer=null,this.scene=t,this.camera=r,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;null!==t&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return null!==this.screen?this.screen.material:null}set fullscreenMaterial(t){let r=this.screen;null!==r?r.material=t:((r=new s.eaF(e.fullscreenGeometry,t)).frustumCulled=!1,null===this.scene&&(this.scene=new s.Z58),this.scene.add(r),this.screen=r)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=s.Rkk){}render(e,t,r,s,i){throw Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,r){}dispose(){for(let t of Object.keys(this)){let r=this[t];(r instanceof s.nWS||r instanceof s.imn||r instanceof s.gPd||r instanceof e)&&this[t].dispose()}null!==this.fullscreenMaterial&&this.fullscreenMaterial.dispose()}},o=class extends a{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(e,t,r,s,i){let n=e.state.buffers.stencil;n.setLocked(!1),n.setTest(!1)}},l=`#ifdef COLOR_WRITE 2#include <common> 3#include <dithering_pars_fragment> 4#ifdef FRAMEBUFFER_PRECISION_HIGH 5uniform mediump sampler2D inputBuffer; 6#else 7uniform lowp sampler2D inputBuffer; 8#endif 9#endif 10#ifdef DEPTH_WRITE 11#include <packing> 12#ifdef GL_FRAGMENT_PRECISION_HIGH 13uniform highp sampler2D depthBuffer; 14#else 15uniform mediump sampler2D depthBuffer; 16#endif 17float readDepth(const in vec2 uv){ 18#if DEPTH_PACKING == 3201 19return unpackRGBAToDepth(texture2D(depthBuffer,uv)); 20#else 21return texture2D(depthBuffer,uv).r; 22#endif 23} 24#endif 25#ifdef USE_WEIGHTS 26uniform vec4 channelWeights; 27#endif 28uniform float opacity;varying vec2 vUv;void main(){ 29#ifdef COLOR_WRITE 30vec4 texel=texture2D(inputBuffer,vUv); 31#ifdef USE_WEIGHTS 32texel*=channelWeights; 33#endif 34gl_FragColor=opacity*texel; 35#ifdef COLOR_SPACE_CONVERSION 36#include <colorspace_fragment> 37#endif 38#include <dithering_fragment> 39#else 40gl_FragColor=vec4(0.0); 41#endif 42#ifdef DEPTH_WRITE 43gl_FragDepth=readDepth(vUv); 44#endif 45}`,u="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",c=class extends s.BKk{constructor(){super({name:"CopyMaterial",defines:{COLOR_SPACE_CONVERSION:"1",DEPTH_PACKING:"0",COLOR_WRITE:"1"},uniforms:{inputBuffer:new s.nc$(null),depthBuffer:new s.nc$(null),channelWeights:new s.nc$(null),opacity:new s.nc$(1)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:l,vertexShader:u}),this.depthFunc=s.lGu}get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=null!==e;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=null!==e;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get colorSpaceConversion(){return void 0!==this.defines.COLOR_SPACE_CONVERSION}set colorSpaceConversion(e){this.colorSpaceConversion!==e&&(e?this.defines.COLOR_SPACE_CONVERSION=!0:delete this.defines.COLOR_SPACE_CONVERSION,this.needsUpdate=!0)}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){null!==e?(this.defines.USE_WEIGHTS="1",this.uniforms.channelWeights.value=e):delete this.defines.USE_WEIGHTS,this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}},h=class extends a{constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new c,this.needsSwap=!1,this.renderTarget=e,void 0===e&&(this.renderTarget=new s.nWS(1,1,{minFilter:s.k6q,magFilter:s.k6q,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=t}get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,r,s,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTarget.texture.type=r,r!==s.OUM?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":null!==e&&e.outputColorSpace
45===s.er$&&(this.renderTarget.texture.colorSpace=s.er$))}},d=new s.Q1f,f=class extends a{constructor(e=!0,t=!0,r=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=r,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,r){this.color=e,this.depth=t,this.stencil=r}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,r,s,i){let n=this.overrideClearColor,a=this.overrideClearAlpha,o=e.getClearAlpha(),l=null!==n,u=a>=0;l?(e.getClearColor(d),e.setClearColor(n,u?a:o)):u&&e.setClearAlpha(a),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),l?e.setClearColor(d,o):u&&e.setClearAlpha(o)}},v=class extends a{constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new f(!1,!1,!0),this.inverse=!1}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,r,s,i){let n=e.getContext(),a=e.state.buffers,o=this.scene,l=this.camera,u=this.clearPass,c=+!this.inverted;a.color.setMask(!1),a.depth.setMask(!1),a.color.setLocked(!0),a.depth.setLocked(!0),a.stencil.setTest(!0),a.stencil.setOp(n.REPLACE,n.REPLACE,n.REPLACE),a.stencil.setFunc(n.ALWAYS,c,0xffffffff),a.stencil.setClear(1-c),a.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?u.render(e,null):(u.render(e,t),u.render(e,r))),this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),e.render(o,l),e.setRenderTarget(r)),e.render(o,l),a.color.setLocked(!1),a.depth.setLocked(!1),a.stencil.setLocked(!1),a.stencil.setFunc(n.EQUAL,1,0xffffffff),a.stencil.setOp(n.KEEP,n.KEEP,n.KEEP),a.stencil.setLocked(!0)}},p=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:r=!1,multisampling:s=0,frameBufferType:n}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,r,n,s),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new h,this.depthTexture=null,this.passes=[],this.timer=new i,this.autoRenderToScreen=!0,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){let t=this.inputBuffer,r=this.multisampling;r>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):r!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,null!==e){let t=e.getSize(new s.I9Y),r=e.getContext().getContextAttributes().alpha,i=this.inputBuffer.texture.type;for(let n of(i===s.OUM&&e.outputColorSpace===s.er$&&(this.inputBuffer.texture.colorSpace=s.er$,this.outputBuffer.texture.colorSpace=s.er$,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height),this.passes))n.initialize(e,r,i)}}replaceRenderer(e,t=!0){let r=this.renderer,s=r.domElement.parentNode;return this.setRenderer(e),t&&null!==s&&(s.removeChild(r.domElement),s.appendChild(e.domElement)),r}createDepthTexture(){let e=this.depthTexture=new s.VCu;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=s.dcC,e.type=s.V3x):e.type=s.bkx,e}deleteDepthTexture(){if(null!==this.depthTexture)for(let e of(this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose(),this.passes))e.setDepthTexture(null)}createBuffer(e,t,r,i){let n=this.renderer,a=null===n?new s.I9Y:n.getDrawingBufferSize(new s.I9Y),o={minFilter:s.k6q,magFilter:s.k6q,stencilBuffer:t,depthBuffer:e,type:r},l=new s.nWS(a.width,a.height,o);return i>
450&&(l.samples=i),r===s.OUM&&null!==n&&n.outputColorSpace===s.er$&&(l.texture.colorSpace=s.er$),l.texture.name="EffectComposer.Buffer",l.texture.generateMipmaps=!1,l}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let r=this.passes,i=this.renderer,n=i.getDrawingBufferSize(new s.I9Y),a=i.getContext().getContextAttributes().alpha,o=this.inputBuffer.texture.type;if(e.setRenderer(i),e.setSize(n.width,n.height),e.initialize(i,a,o),this.autoRenderToScreen&&(r.length>0&&(r[r.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),void 0!==t?r.splice(t,0,e):r.push(e),this.autoRenderToScreen&&(r[r.length-1].renderToScreen=!0),e.needsDepthTexture||null!==this.depthTexture)if(null===this.depthTexture){let t=this.createDepthTexture();for(e of r)e.setDepthTexture(t)}else e.setDepthTexture(this.depthTexture)}removePass(e){let t=this.passes,r=t.indexOf(e);-1!==r&&t.splice(r,1).length>0&&(null!==this.depthTexture&&(t.reduce((e,t)=>e||t.needsDepthTexture,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())),this.autoRenderToScreen&&r===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0)))}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t,r,s,i=this.renderer,n=this.copyPass,a=this.inputBuffer,l=this.outputBuffer,u=!1;
45for(let c of(void 0===e&&(this.timer.update(),e=this.timer.getDelta()),this.passes))c.enabled&&(c.render(i,a,l,e,u),c.needsSwap&&(u&&(n.renderToScreen=c.renderToScreen,t=i.getContext(),(r=i.state.buffers.stencil).setFunc(t.NOTEQUAL,1,0xffffffff),n.render(i,a,l,e,u),r.setFunc(t.EQUAL,1,0xffffffff)),s=a,a=l,l=s),c instanceof v?u=!0:c instanceof o&&(u=!1))}setSize(e,t,r){let i=this.renderer,n=i.getSize(new s.I9Y);(void 0===e||void 0===t)&&(e=n.width,t=n.height),(n.width!==e||n.height!==t)&&i.setSize(e,t,r);let a=i.getDrawingBufferSize(new s.I9Y);for(let e of(this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.passes))e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],null!==this.inputBuffer&&this.inputBuffer.dispose(),null!==this.outputBuffer&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),a.fullscreenGeometry.dispose()}},m={NONE:0,DEPTH:1,CONVOLUTION:2},g={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},S=class{constructor(){this.shaderParts=new Map([[g.FRAGMENT_HEAD,null],[g.FRAGMENT_MAIN_UV,null],[g.FRAGMENT_MAIN_IMAGE,null],[g.VERTEX_HEAD,null],[g.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=m.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=s.Zr2}},x=!1,T=class{constructor(e=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(e),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case s.$EB:t=this.materialsFlatShadedDoubleSide;break;case s.hsX:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded}else switch(e.material.side){case s.$EB:t=this.materialsDoubleSide;break;case s.hsX:t=this.materialsBackSide;break;default:t=this.materials}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof s.BKk))return e.clone();let t=e.uniforms,r=new Map;for(let e in t){let s=t[e].value;s.isRenderTargetTexture&&(t[e].value=null,r.set(e,s))}let i=e.clone();for(let e of r)t[e[0]].value=e[1],i.uniforms[e[0]].value=e[1];return i}setMaterial(e){if(this.disposeMaterials(),this.material=e,null!==e){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let r of t)r.uniforms=Object.assign({},e.uniforms),r.side=s.hB5;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=s.hsX,r}),this.materialsDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=s.$EB,r}),this.materialsFlatShaded=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r}),this.materialsFlatShadedBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=s.hsX,r}),this.materialsFlatShadedDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=s.$EB,r})}}render(e,t,r){let s=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,x){let s=this.originalMaterials;for(let i of(this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,r),s))i[0].material=i[1];this.meshCount!==s.size&&s.clear()}else{let s=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,r),t.overrideMaterial=s}e.shadowMap.enabled=s}disposeMaterials(){if(null!==this.material)for(let e of this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide))e.dispose()}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return x}static set workaroundEnabled(e){x=e}},w=class extends s.Qev{constructor(e,t=-1,r=-1,i=1){super(),this.resizable=e,this.baseSize=new s.I9Y(1,1),this.preferredSize=new s.I9Y(t,r),this.target=this.preferredSize,this.s=i,this.effectiveSize=new s.I9Y,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,r=this.effectiveSize,s=this.scale;-1!==t.width?r.width=t.width:-1!==t.height?r.width=Math.round(t.height*(e.width/Math.max(e.height,1))):r.width=Math.round(e.width*s),-1!==t.height?r.height=t.height:-1!==t.width?r.height=Math.round(t.width/
45Math.max(e.width/Math.max(e.height,1),1)):r.height=Math.round(e.height*s)}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(-1),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return -1}};var y={SKIP:9,SET:30,ADD:0,ALPHA:1,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},E=new Map([[y.ADD,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.ALPHA,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,src.a*opacity);}"],[y.AVERAGE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=(dst.rgb+src.rgb)*0.5;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.COLOR,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.xy,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.COLOR_BURN,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/max(b,1e-9))),vec3(1.0),step(1.0,a));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.COLOR_DODGE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=dst.rgb,b=src.rgb;vec3 c=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.DARKEN,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.DIFFERENCE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=abs(dst.rgb-src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.DIVIDE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb/max(src.rgb,1e-9);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.DST,null],[y.EXCLUSION,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-2.0*dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.HARD_LIGHT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb,1.0);vec3 b=min(src.rgb,1.0);vec3 c=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.HARD_MIX,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=step(1.0,dst.rgb+src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.HUE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(b.x,a.yz));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.INVERT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.INVERT_RGB,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=src.rgb*max(1.0-dst.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.LIGHTEN,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb,src.rgb);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.LINEAR_BURN,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.LINEAR_DODGE,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=min(dst.rgb+src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.LINEAR_LIGHT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=clamp(2.0*src.rgb+dst.rgb-1.0,0.0,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.LUMINOSITY,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.xy,b.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.MULTIPLY,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb*src.rgb;return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.NEGATION,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(1.0-abs(1.0-dst.rgb-src.rgb),0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.NORMAL,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,opacity);}"],[y.OVERLAY,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=2.0*src.rgb*dst.rgb;vec3 b=1.0-2.0*(1.0-src.rgb)*(1.0-dst.rgb);vec3 c=mix(a,b,step(0.5,dst.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.PIN_LIGHT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 c=mix(mix(src2,dst.rgb,step(0.5*dst.rgb,src.rgb)),max(src2-1.0,vec3(0.0)),step(dst.rgb,src2-1.0));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.REFLECT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=min(dst.rgb*dst.rgb/max(1.0-src.rgb,1e-9),1.0);vec3 c=mix(a,src.rgb,step(1.0,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.SATURATION,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 a=RGBToHSL(dst.rgb);vec3 b=RGBToHSL(src.rgb);vec3 c=HSLToRGB(vec3(a.x,b.y,a.z));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.SCREEN,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=dst.rgb+src.rgb-min(dst.rgb*src.rgb,1.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.SOFT_LIGHT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 src2=2.0*src.rgb;vec3 d=dst.rgb+(src2-1.0);vec3 w=step(0.5,src.rgb);vec3 a=dst.rgb-(1.0-src2)*dst.rgb*(1.0-dst.rgb);vec3 b=mix(d*(sqrt(dst.rgb)-dst.rgb),d*dst.rgb*((16.0*dst.rgb-12.0)*dst.rgb+3.0),w*(1.0-step(0.25,dst.rgb)));vec3 c=mix(a,b,w);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.SRC,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return src;}"],[y.SUBTRACT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=max(dst.rgb-src.rgb,0.0);return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"],[y.VIVID_LIGHT,"vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){vec3 c=mix(max(1.0-min((1.0-dst.rgb)/(2.0*src.rgb),1.0),0.0),min(dst.rgb/(2.0*(1.0-src.rgb)),1.0),step(0.5,src.rgb));return mix(dst,vec4(c,max(dst.a,src.a)),opacity);}"]]),M=class extends s.Qev{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new s.nc$(t)}getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return E.get(this.blendFunction)}};s.GOR;var U=class extends s.Qev{constructor(e,t,{attributes:r=m.NONE,blendFunction:i=y.NORMAL,defines:n=new Map,uniforms:a=new Map,extensions:o=null,vertexShader:l=null}={}){super(),this.name=e,this.renderer=null,this.attributes=r,this.fragmentShader=t,this.vertexShader=l,this.defines=n,this.uniforms=a,this.extensions=o,this.blendMode=new M(i),this.blendMode.addEventListener("change",e=>
45this.setChanged()),this._inputColorSpace=s.Zr2,this._outputColorSpace=s.jf0}get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(e,t=s.Rkk){}update(e,t,r){}setSize(e,t){}initialize(e,t,r){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof s.nWS||t instanceof s.imn||t instanceof s.gPd||t instanceof a)&&this[e].dispose()}}},A={MEDIUM:2,LARGE:3},b=`#ifdef FRAMEBUFFER_PRECISION_HIGH 46uniform mediump sampler2D inputBuffer; 47#else 48uniform lowp sampler2D inputBuffer; 49#endif 50varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25; 51#include <colorspace_fragment> 52}`,B=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],R=class extends s.BKk{constructor(e=new s.IUQ){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new s.nc$(null),texelSize:new s.nc$(new s.IUQ),scale:new s.nc$(1),
52kernel:new s.nc$(0)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:b,vertexShader:"uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.setTexelSize(e.x,e.y),this.kernelSize=A.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return B[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,.5*e,.5*t)}setSize(e,t){let r=1/e,s=1/t;this.uniforms.texelSize.value.set(r,s,.5*r,.5*s)}},C=class extends a{constructor({kernelSize:e=A.MEDIUM,resolutionScale:t=.5,width:r=w.AUTO_SIZE,height:i=w.AUTO_SIZE,resolutionX:n=r,resolutionY:a=i}={}){super("KawaseBlurPass"),this.renderTargetA=new s.nWS(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let o=this.resolution=new w(this,n,a,t);o.addEventListener("change",e=>this.setSize(o.baseWidth,o.baseHeight)),this._blurMaterial=new R,this._blurMaterial.kernelSize=e,this.copyMaterial=new c}getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,s,i){let n=this.scene,a=this.camera,o=this.renderTargetA,l=this.renderTargetB,u=this.blurMaterial,c=u.kernelSequence,h=t;this.fullscreenMaterial=u;for(let t=0,r=c.length;t<r;++t){let r=(1&t)==0?o:l;u.kernel=c[t],u.inputBuffer=h.texture,e.setRenderTarget(r),e.render(n,a),h=r}this.fullscreenMaterial=this.copyMaterial,this.copyMaterial.inputBuffer=h.texture,e.setRenderTarget(this.renderToScreen?null:r),e.render(n,a)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let s=r.width,i=r.height;this.renderTargetA.setSize(s,i),this.renderTargetB.setSize(s,i),this.blurMaterial.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTargetA.texture.type=r,this.renderTargetB.texture.type=r,r!==s.OUM?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):null!==e&&e.outputColorSpace===s.er$&&(this.renderTargetA.texture.colorSpace=s.er$,this.renderTargetB.texture.colorSpace=s.er$))}static get AUTO_SIZE(){return w.AUTO_SIZE}},F=`#include <common> 53#ifdef FRAMEBUFFER_PRECISION_HIGH 54uniform mediump sampler2D inputBuffer; 55#else 56uniform lowp sampler2D inputBuffer; 57#endif 58#ifdef RANGE 59uniform vec2 range; 60#elif defined(THRESHOLD) 61uniform float threshold;uniform float smoothing; 62#endif 63varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0; 64#ifdef RANGE 65float low=step(range.x,l);float high=step(l,range.y);mask=low*high; 66#elif defined(THRESHOLD) 67mask=smoothstep(threshold,threshold+smoothing,l); 68#endif 69#ifdef COLOR 70gl_FragColor=texel*mask; 71#else 72gl_FragColor=vec4(l*mask); 73#endif 74}`,D=class extends s.BKk{constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:s.sPf.replace(/\D+/g,"")},uniforms:{inputBuffer:new s.nc$(null),threshold:new s.nc$(0),smoothing:new s.nc$(1),range:new s.nc$(null)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:F,vertexShader:u}),this.colorOutput=e,this.luminanceRange=t}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return void 0!==this.defines.COLOR}set colorOutput(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return null!==this.luminanceRange}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){null!==e?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}},I=class extends a{constructor({renderTarget:e,luminanceRange:t,colorOutput:r,resolutionScale:i=1,width:n=w.AUTO_SIZE,height:a=w.AUTO_SIZE,resolutionX:o=n,resolutionY:l=
74a}={}){super("LuminancePass"),this.fullscreenMaterial=new D(r,t),this.needsSwap=!1,this.renderTarget=e,void 0===this.renderTarget&&(this.renderTarget=new s.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="LuminancePass.Target");let u=this.resolution=new w(this,o,l,i);u.addEventListener("change",e=>this.setSize(u.baseWidth,u.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,r,s,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}initialize(e,t,r){void 0!==r&&r!==s.OUM&&(this.renderTarget.texture.type=r,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},P=`#ifdef FRAMEBUFFER_PRECISION_HIGH 75uniform mediump sampler2D inputBuffer; 76#else 77uniform lowp sampler2D inputBuffer; 78#endif 79#define WEIGHT_INNER 0.125 80#define WEIGHT_OUTER 0.0555555 81varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c; 82#include <colorspace_fragment> 83}`,_=class extends s.BKk{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new s.nc$(null),texelSize:new s.nc$(new s.I9Y)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:P,vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},N=`#ifdef FRAMEBUFFER_PRECISION_HIGH 84uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer; 85#else 86uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; 87#endif 88uniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius); 89#include <colorspace_fragment> 90}`,O=class extends s.BKk{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new s.nc$(null),supportBuffer:new s.nc$(null),texelSize:new s.nc$(new s.I9Y),radius:new s.nc$(.85)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:N,vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;
90vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},k=class extends a{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new s.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new _,this.upsamplingMaterial=new O,this.resolution=new s.I9Y}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(e){if(this.levels!==e){let t=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let r=0;r<e;++r){let e=t.clone();e.texture.name="Downsampling.Mipmap"+r,this.downsamplingMipmaps.push(e)}this.upsamplingMipmaps.push(t);for(let r=1,s=e-1;r<s;++r){let e=t.clone();e.texture.name="Upsampling.Mipmap"+r,this.upsamplingMipmaps.push(e)}this.setSize(this.resolution.x,this.resolution.y)}}get radius(){return this.upsamplingMaterial.radius}set radius(e){this.upsamplingMaterial.radius=e}render(e,t,r,s,i){let{scene:n,camera:a}=this,{downsamplingMaterial:o,upsamplingMaterial:l}=this,{downsamplingMipmaps:u,upsamplingMipmaps:c}=this,h=t;this.fullscreenMaterial=o;for(let t=0,r=u.length;t<r;++t){let r=u[t];o.setSize(h.width,h.height),o.inputBuffer=h.texture,e.setRenderTarget(r),e.render(n,a),h=r}this.fullscreenMaterial=l;for(let t=c.length-1;t>=0;--t){let r=c[t];l.setSize(h.width,h.height),l.inputBuffer=h.texture,l.supportBuffer=u[t].texture,e.setRenderTarget(r),e.render(n,a),h=r}}setSize(e,t){let r=this.resolution;r.set(e,t);let s=r.width,i=r.height;for(let e=0,t=this.downsamplingMipmaps.length;e<t;++e)s=Math.round(.5*s),i=Math.round(.5*i),this.downsamplingMipmaps[e].setSize(s,i),e<this.upsamplingMipmaps.length&&this.upsamplingMipmaps[e].setSize(s,i)}initialize(e,t,r){if(void 0!==r){let t=this.downsamplingMipmaps.concat(this.upsamplingMipmaps);for(let e of t)e.texture.type=r;if(r!==s.OUM)this.downsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.upsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1";else if(null!==e&&e.outputColorSpace===s.er$)for(let e of t)e.texture.colorSpace=s.er$}}dispose(){for(let e of(super.dispose(),this.downsamplingMipmaps.concat(this.upsamplingMipmaps)))e.dispose()}},z=`#ifdef FRAMEBUFFER_PRECISION_HIGH 91uniform mediump sampler2D map; 92#else 93uniform lowp sampler2D map; 94#endif 95uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv)*intensity;}`,L=class extends U{constructor({blendFunction:e=y.SCREEN,luminanceThreshold:t=1,luminanceSmoothing:r=.03,mipmapBlur:i=!0,intensity:n=1,radius:a=.85,levels:o=8,kernelSize:l=A.LARGE,resolutionScale:u=.5,width:c=w.AUTO_SIZE,height:h=w.AUTO_SIZE,resolutionX:d=c,resolutionY:f=h}={}){super("BloomEffect",z,{blendFunction:e,uniforms:new Map([["map",new s.nc$(null)],["intensity",new s.nc$(n)]])}),this.renderTarget=new s.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Bloom.Target",this.blurPass=new C({kernelSize:l}),this.luminancePass=new I({colorOutput:!0}),this.luminanceMaterial.threshold=t,this.luminanceMaterial.smoothing=r,this.mipmapBlurPass=new k,this.mipmapBlurPass.enabled=i,this.mipmapBlurPass.radius=a,this.mipmapBlurPass.levels=o,this.uniforms.get("map").value=i?this.mipmapBlurPass.texture:this.renderTarget.texture;let v=this.resolution=new w(this,d,f,u);v.addEventListener("change",e=>this.setSize(v.baseWidth,v.baseHeight))}get texture(){return this.mipmapBlurPass.enabled?this.mipmapBlurPass.texture:this.renderTarget.texture}getTexture(){return this.texture}getResolution(){return this.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get distinction(){return console.warn(this.name,"distinction was removed"),1}set distinction(e){console.warn(this.name,"distinction was removed")}get intensity(){return this.uniforms.get("intensity").value}set intensity(e){this.uniforms.get("intensity").value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}update(e,t,r){let s=this.renderTarget,i=this.luminancePass;i.enabled?(i.render(e,t),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,i.renderTarget):this.blurPass.render(e,i.renderTarget,s)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,t):this.blurPass.render(e,t,s)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.blurPass.resolution.copy(r),this.luminancePass.setSize(e,t),this.mipmapBlurPass.setSize(e,t)}initialize(e,t,r){this.blurPass.initialize(e,t,r),this.luminancePass.initialize(e,t,r),this.mipmapBlurPass.initialize(e,t,r),void 0!==r&&(this.renderTarget.texture.type=r,null!==e&&e.outputColorSpace
95===s.er$&&(this.renderTarget.texture.colorSpace=s.er$))}},G=`#ifdef RADIAL_MODULATION 96uniform float modulationOffset; 97#endif 98varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=inputColor.ra;vec2 ba=inputColor.ba; 99#ifdef RADIAL_MODULATION 100const vec2 center=vec2(0.5);float d=distance(uv,center)*2.0;d=max(d-modulationOffset,0.0);if(vActive>0.0&&d>0.0){ra=texture2D(inputBuffer,mix(uv,vUvR,d)).ra;ba=texture2D(inputBuffer,mix(uv,vUvB,d)).ba;} 101#else 102if(vActive>0.0){ra=texture2D(inputBuffer,vUvR).ra;ba=texture2D(inputBuffer,vUvB).ba;} 103#endif 104outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}`,H=class extends U{constructor({offset:e=new s.I9Y(.001,5e-4),radialModulation:t=!1,modulationOffset:r=.15}={}){super("ChromaticAberrationEffect",G,{vertexShader:"uniform vec2 offset;varying float vActive;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vActive=(shift.x!=0.0||shift.y!=0.0)?1.0:0.0;vUvR=uv+shift;vUvB=uv-shift;}",attributes:m.CONVOLUTION,uniforms:new Map([["offset",new s.nc$(e)],["modulationOffset",new s.nc$(r)]])}),this.radialModulation=t}get offset(){return this.uniforms.get("offset").value}set offset(e){this.uniforms.get("offset").value=e}get radialModulation(){return this.defines.has("RADIAL_MODULATION")}set radialModulation(e){e?this.defines.set("RADIAL_MODULATION","1"):this.defines.delete("RADIAL_MODULATION"),this.setChanged()}get modulationOffset(){return this.uniforms.get("modulationOffset").value}set modulationOffset(e){this.uniforms.get("modulationOffset").value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}},V={RED:0,GREEN:1},$={DISCARD:0,MULTIPLY:1,MULTIPLY_RGB_SET_ALPHA:2,MULTIPLY_RGB:3},W=`#ifdef FRAMEBUFFER_PRECISION_HIGH 105uniform mediump sampler2D inputBuffer; 106#else 107uniform lowp sampler2D inputBuffer; 108#endif 109#if PASS == 1 110uniform vec4 kernel64[32]; 111#else 112uniform vec4 kernel16[8]; 113#endif 114uniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){ 115#ifdef FOREGROUND 116vec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x; 117#else 118float coc=texture2D(cocBuffer,vUv).g*scale; 119#endif 120if(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{ 121#ifdef FOREGROUND 122vec2 step=texelSize*max(cocNearFar.x,cocNearFar.y); 123#else 124vec2 step=texelSize*coc; 125#endif 126#if PASS == 1 127vec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0; 128#else 129vec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue; 130#endif 131}}`,K=class extends s.BKk{constructor(e=!1,t=!1){super({name:"BokehMaterial",defines:{PASS:e?"2":"1"},uniforms:{inputBuffer:new s.nc$(null),cocBuffer:new s.nc$(null),texelSize:new s.nc$(new s.I9Y),kernel64:new s.nc$(null),kernel16:new s.nc$(null),scale:new s.nc$(1)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:W,vertexShader:u}),t&&(this.defines.FOREGROUND="1"),this.generateKernel()}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.scale}setScale(e){this.scale=e}generateKernel(){let e=new Float64Array(128),t=new Float64Array(32),r=0,s=0;for(let i=0,n=Math.sqrt(80);i<80;++i){let a=2.39996323*i,o=Math.sqrt(i)/n,l=o*Math.cos(a),u=o*Math.sin(a);i%5==0?(t[s++]=l,t[s++]=u):(e[r++]=l,e[r++]=u)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Y=`#include <common> 132#include <packing> 133#ifdef GL_FRAGMENT_PRECISION_HIGH 134uniform highp sampler2D depthBuffer; 135#else 136uniform mediump sampler2D depthBuffer; 137#endif 138uniform mat4 projectionMatrix;uniform mat4 projectionMatrixInverse;uniform float cameraNear;uniform float cameraFar;uniform float focusDistance;uniform float focusRange;varying vec2 vUv;float readDepth(const in vec2 uv){ 139#if DEPTH_PACKING == 3201 140float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); 141#else 142float depth=texture2D(depthBuffer,uv).r; 143#endif 144#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) 145float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; 146#elif defined(USE_REVERSED_DEPTH_BUFFER) 147depth=1.0-depth; 148#endif 149return depth;} 150#ifdef PERSPECTIVE_CAMERA 151#define getViewZ(depth) perspectiveDepthToViewZ(depth, cameraNear, cameraFar) 152#else 153#define getViewZ(depth) orthographicDepthToViewZ(depth, cameraNear, cameraFar) 154#endif 155vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0
155);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(projectionMatrixInverse*clipPosition).xyz;}vec3 getViewPosition(const in vec2 screenPosition,const in float depth){return getViewPosition(screenPosition,depth,getViewZ(depth));} 156#define getDistance(viewPosition) length(viewPosition) 157void main(){float depth=readDepth(vUv);vec3 viewPosition=getViewPosition(vUv,depth);float distance=getDistance(viewPosition);float signedDistance=distance-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,X=class extends s.BKk{constructor(e=null){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new s.nc$(null),projectionMatrix:new s.nc$(null),projectionMatrixInverse:new s.nc$(null),cameraNear:new s.nc$(.3),cameraFar:new s.nc$(1e3),focusDistance:new s.nc$(0),focusRange:new s.nc$(0)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Y,vertexShader:u}),this.uniforms.focalLength=this.uniforms.focusRange,null!==e&&this.copyCameraSettings(e)}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=s.Rkk){this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){return this.focusDistance}set worldFocusDistance(e){this.focusDistance=e}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){return this.focusRange}set worldFocusRange(e){this.focusRange=e}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){this.uniforms.projectionMatrix.value=e.projectionMatrix,this.uniforms.projectionMatrixInverse.value=e.projectionMatrixInverse,this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far;let t=void 0!==this.defines.PERSPECTIVE_CAMERA;e instanceof s.ubm?t||(this.defines.PERSPECTIVE_CAMERA=!0,this.needsUpdate=!0):t&&(delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},Z=`#ifdef FRAMEBUFFER_PRECISION_HIGH 158uniform mediump sampler2D inputBuffer; 159#else 160uniform lowp sampler2D inputBuffer; 161#endif 162#ifdef MASK_PRECISION_HIGH 163uniform mediump sampler2D maskTexture; 164#else 165uniform lowp sampler2D maskTexture; 166#endif 167#if MASK_FUNCTION != 0 168uniform float strength; 169#endif 170varying vec2 vUv;void main(){ 171#if COLOR_CHANNEL == 0 172float mask=texture2D(maskTexture,vUv).r; 173#elif COLOR_CHANNEL == 1 174float mask=texture2D(maskTexture,vUv).g; 175#elif COLOR_CHANNEL == 2 176float mask=texture2D(maskTexture,vUv).b; 177#else 178float mask=texture2D(maskTexture,vUv).a; 179#endif 180#if MASK_FUNCTION == 0 181#ifdef INVERTED 182mask=(mask>0.0)?0.0:1.0; 183#else 184mask=(mask>0.0)?1.0:0.0; 185#endif 186#else 187mask=clamp(mask*strength,0.0,1.0); 188#ifdef INVERTED 189mask=1.0-mask; 190#endif 191#endif 192#if MASK_FUNCTION == 3 193vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a); 194#elif MASK_FUNCTION == 2 195gl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask); 196#else 197gl_FragColor=mask*texture2D(inputBuffer,vUv); 198#endif 199}`,q=class extends s.BKk{constructor(e=null){super({name:"MaskMaterial",uniforms:{maskTexture:new s.nc$(e),inputBuffer:new s.nc$(null),strength:new s.nc$(1)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Z,vertexShader:u}),this.colorChannel=V.RED,this.maskFunction=$.DISCARD}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,e.type!==s.OUM&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return void 0!==this.defines.INVERTED}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}},j=class extends a{constructor(e,t="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=e,this.input=t}setInput(e){this.input=e}render(e,t,r,s,i){let n=this.fullscreenMaterial.uniforms;null!==t&&void 0!==n&&void 0!==n[this.input]&&(n[this.input].value=t.texture),e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}initialize(e,t,r){void 0!==r&&r!==s.OUM&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Q=`#ifdef FRAMEBUFFER_PRECISION_HIGH 200uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer; 201#else 202uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer; 203#endif 204#if MASK_FUNCTION != 1 && MASK_FUNCTION != 2 205uniform lowp sampler2D farCoCBuffer; 206#endif 207uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv); 208#if MASK_FUNCTION == 1 || MASK_FUNCTION == 2 209vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0); 210#else 211vec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);colorFar.a*=cocNearFar.y; 212#endif 213vec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}`,J=new s.Pq0,ee=class extends U{constructor(e,{blendFunction:t,worldFocusDistance:r,worldFocusRange:i,focalLength:n,focusDistance:a=r||3,focusRange:o=i||n||2,bokehScale:l=1,resolutionScale:u=.5,width:c,height:h,resolutionX:d=c||w.AUTO_SIZE,resolutionY:f=h||w.AUTO_SIZE}={}){super("DepthOfFieldEffect",Q,{blendFunction:t,attributes:m.DEPTH,uniforms:new Map([["nearColorBuffer",new s.nc$(null)],["farColorBuffer",new s.nc$(null)],["nearCoCBuffer",new s.nc$(null)],["farCoCBuffer",new s.nc$(null)],["scale",new s.nc$(1)]])}),this.camera=e,this.renderTarget=new s.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.uniforms.get("farCoCBuffer").value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new j(new X(e));let v=this.cocMaterial;v.focusDistance=a,v.focusRange=o,this.blurPass=new C({resolutionScale:u,resolutionX:d,resolutionY:f,kernelSize:A.MEDIUM}),this.maskPass=new j(new q(this.renderTargetCoC.texture)),this.maskPass.fullscreenMaterial.colorChannel=V.GREEN,this.maskFunction=$.MULTIPLY_RGB,this.bokehNearBasePass=new j(new K(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new j(new K(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new j(new K(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new j(new K(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;let p=this.resolution=new w(this,d,f,u);p.addEventListener("change",e=>this.setSize(p.baseWidth,p.baseHeight)),this.bokehScale=l}set mainCamera(e){this.camera=e,this.cocMaterial.copyCameraSettings(e)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(e){this.maskFunction!==e&&(this.defines.set("MASK_FUNCTION",e.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=e,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(e){this.bokehNearBasePass.fullscreenMaterial.scale=e,this.bokehNearFillPass.fullscreenMaterial.scale=e,this.bokehFarBasePass.fullscreenMaterial.scale=e,this.bokehFarFillPass.fullscreenMaterial.scale=e,this.maskPass.fullscreenMaterial.strength=e,this.uniforms.get("scale").value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){return this.camera.getWorldPosition(J).distanceTo(e)}
213setDepthTexture(e,t=s.Rkk){this.cocMaterial.depthBuffer=e,this.cocMaterial.depthPacking=t}update(e,t,r){let s=this.renderTarget,i=this.renderTargetCoC,n=this.renderTargetCoCBlurred,a=this.renderTargetMasked;if(null!==this.target){let e=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=e}this.cocPass.render(e,null,i),this.blurPass.render(e,i,n),this.maskPass.render(e,t,a),this.bokehFarBasePass.render(e,a,s),this.bokehFarFillPass.render(e,s,this.renderTargetFar),this.bokehNearBasePass.render(e,t,s),this.bokehNearFillPass.render(e,s,this.renderTargetNear)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let s=r.width,i=r.height;this.cocPass.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.renderTargetFar.setSize(e,t),this.renderTargetCoC.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.renderTarget.setSize(s,i),this.renderTargetNear.setSize(s,i),this.renderTargetCoCBlurred.setSize(s,i),this.bokehNearBasePass.fullscreenMaterial.setSize(e,t),this.bokehNearFillPass.fullscreenMaterial.setSize(e,t),this.bokehFarBasePass.fullscreenMaterial.setSize(e,t),this.bokehFarFillPass.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){this.cocPass.initialize(e,t,r),this.maskPass.initialize(e,t,r),this.bokehNearBasePass.initialize(e,t,r),this.bokehNearFillPass.initialize(e,t,r),this.bokehFarBasePass.initialize(e,t,r),this.bokehFarFillPass.initialize(e,t,r),this.blurPass.initialize(e,t,s.OUM),e.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH="1"),void 0!==r&&(this.renderTarget.texture.type=r,this.renderTargetNear.texture.type=r,this.renderTargetFar.texture.type=r,this.renderTargetMasked.texture.type=r,null!==e&&e.outputColorSpace===s.er$&&(this.renderTarget.texture.colorSpace=s.er$,this.renderTargetNear.texture.colorSpace=s.er$,this.renderTargetFar.texture.colorSpace=s.er$,this.renderTargetMasked.texture.colorSpace=s.er$))}},et={DISABLED:0,SPORADIC:1,CONSTANT_MILD:2,CONSTANT_WILD:3},er=class extends s.GYF{constructor(e,t,r=s.VT0,i=s.OUM){super(function(e,t,r){let i,n=new Map([[s.VT0,1],[s.paN,2],[s.GWd,4]]);if(n.has(t)||console.error("Invalid noise texture format"),r===s.OUM){i=new Uint8Array(e*n.get(t));for(let e=0,t=i.length;e<t;++e)i[e]=255*Math.random()+.5}else{i=new Float32Array(e*n.get(t));for(let e=0,t=i.length;e<t;++e)i[e]=Math.random()}return i}(e*t,r,i),e,t,r,i),this.needsUpdate=!0}},es="Glitch.Generated";function ei(e,t){return e+Math.random()*(t-e)}var en=class extends U{constructor({chromaticAberrationOffset:e=null,delay:t=new s.I9Y(1.5,3.5),duration:r=new s.I9Y(.6,1),strength:i=new s.I9Y(.3,1),columns:n=.05,ratio:a=.85,perturbationMap:o=null,dtSize:l=64}={}){if(super("GlitchEffect","uniform lowp sampler2D perturbationMap;uniform bool active;uniform float columns;uniform float random;uniform vec2 seeds;uniform vec2 distortion;void mainUv(inout vec2 uv){if(active){if(uv.y<distortion.x+columns&&uv.y>distortion.x-columns*random){float sx=clamp(ceil(seeds.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.x<distortion.y+columns&&uv.x>distortion.y-columns*random){float sy=clamp(ceil(seeds.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seeds*(random*0.2);}}",{uniforms:new Map([["perturbationMap",new s.nc$(null)],["columns",new s.nc$(n)],["active",new s.nc$(!1)],["random",new s.nc$(1)],["seeds",new s.nc$(new s.I9Y)],["distortion",new s.nc$(new s.I9Y)]])}),null===o){let e=new er(l,l,s.GWd);e.name=es,this.perturbationMap=e}else this.perturbationMap=o;this.time=0,this.distortion=this.uniforms.get("distortion").value,this.delay=t,this.duration=r,this.breakPoint=new s.I9Y(ei(this.delay.x,this.delay.y),ei(this.duration.x,this.duration.y)),this.strength=i,this.mode=et.SPORADIC,this.ratio=a,this.chromaticAberrationOffset=e}get seeds(){return this.uniforms.get("seeds").value}get active(){return this.uniforms.get("active").value}isActive(){return this.active}get minDelay(){return this.delay.x}set minDelay(e){this.delay.x=e}getMinDelay(){return this.delay.x}setMinDelay(e){this.delay.x=e}get maxDelay(){return this.delay.y}set maxDelay(e){this.delay.y=e}getMaxDelay(){return this.delay.y}setMaxDelay(e){this.delay.y=e}get minDuration(){return this.duration.x}set minDuration(e){this.duration.x=e}getMinDuration(){return this.duration.x}setMinDuration(e){this.duration.x=e}get maxDuration(){return this.duration.y}set maxDuration(e){this.duration.y=e}getMaxDuration(){return this.duration.y}setMaxDuration(e){this.duration.y=e}get minStrength(){return this.strength.x}set minStrength(e){this.strength.x=e}getMinStrength(){return this.strength.x}setMinStrength(e){this.strength.x=e}get maxStrength(){return this.strength.y}set maxStrength(e){this.strength.y=e}getMaxStrength(){return this.strength.y}setMaxStrength(e){this.strength.y=e}getMode(){return this.mode}setMode(e){this.mode=e}getGlitchRatio(){return 1-this.ratio}setGlitchRatio(e){this.ratio=Math.min(Math.max(1-e,0),1)}get columns(){return this.uniforms.get("columns").value}set columns(e){this.uniforms.get("columns").value=e}getGlitchColumns(){return this.columns}setGlitchColumns(e){this.columns=e}getChromaticAberrationOffset(){return this.chromaticAberrationOffset}setChromaticAberrationOffset(e){this.chromaticAberrationOffset=e}get perturbationMap(){return this.uniforms.get("perturbationMap").value}set perturbationMap(e){let t=this.perturbationMap;null!==t&&t.name===es&&t.dispose(),e.minFilter=e.magFilter=s.hxR,e.wrapS=e.wrapT=s.GJx,e.generateMipmaps=!1,this.uniforms.get("perturbationMap").value=e}getPerturbationMap(){return this.perturbationMap}setPerturbationMap(e){this.perturbationMap=e}generatePerturbationMap(e=64){let t=new er(e,e,s.GWd);return t.name=es,t}update(e,t,r){let s,i=this.mode,n=this.breakPoint,a=this.chromaticAberrationOffset,o=this.strength,l=this.time,u=!1,c=0,h=0;i!==et.DISABLED&&(i===et.SPORADIC&&(l+=r,s=l>n.x,l>=n.x+n.y&&(n.set(ei(this.delay.x,this.delay.y),ei(this.duration.x,this.duration.y)),l=0)),c=Math.random(),this.uniforms.get("random").value=c,s&&c>this.ratio||i===et.CONSTANT_WILD?(u=!0,c*=.03*o.y,h=ei(-Math.PI,Math.PI),this.seeds.set(ei(-o.y,o.y),ei(-o.y,o.y)),this.distortion.set(ei(0,1),ei(0,1))):(s||i===et.CONSTANT_MILD)&&(u=!0,c*=.03*o.x,h=ei(-Math.PI,Math.PI),this.seeds.set(ei(-o.x,o.x),ei(-o.x,o.x)),this.distortion.set(ei(0,1),ei(0,1))),this.time=l),null!==a&&(u?a.set(Math.cos(h),Math.sin(h)).multiplyScalar(c):a.set(0,0)),this.uniforms.get("active").value=u}dispose(){let e=this.perturbationMap;null!==e&&e.name===es&&e.dispose()}};s.BKk;var ea=class extends a{constructor(e,t,r=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new f,this.overrideMaterialManager=null===r?null:new T(r),this.ignoreBackgroun
213d=!1,this.skipShadowMapUpdate=!1,this.selection=null}set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return null!==e?e.material:null}set overrideMaterial(e){let t=this.overrideMaterialManager;null!==e?null!==t?t.setMaterial(e):this.overrideMaterialManager=new T(e):null!==t&&(t.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,r,s,i){let n=this.scene,a=this.camera,o=this.selection,l=a.layers.mask,u=n.background,c=e.shadowMap.autoUpdate,h=this.renderToScreen?null:t;null!==o&&a.layers.set(o.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||null!==this.clearPass.overrideClearColor)&&(n.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(h),null!==this.overrideMaterialManager?this.overrideMaterialManager.render(e,n,a):e.render(n,a),a.layers.mask=l,n.background=u,e.shadowMap.autoUpdate=c}},eo={SCALE_UP:"lut.scaleup"};function el(e,t,r){let s=document.createElement("canvas"),i=s.getContext("2d");if(s.width=e,s.height=t,r instanceof Image)i.drawImage(r,0,0);else{let s=i.createImageData(e,t);s.data.set(r),i.putImageData(s,0,0)}return s}var eu=class e{constructor(e=0,t=0,r=null){this.width=e,this.height=t,this.data=r}toCanvas(){return"undefined"==typeof document?null:el(this.width,this.height,this.data)}static from(t){let r,{width:s,height:i}=t;if(t instanceof Image){let e=el(s,i,t);null!==e&&(r=e.getContext("2d").getImageData(0,0,s,i).data)}else r=t.data;return new e(s,i,r)}},ec=new s.Q1f;(class e extends s.dYF{constructor(e,t){super(e,t,t,t),this.type=s.RQf,this.format=s.GWd,this.minFilter=s.k6q,this.magFilter=s.k6q,this.wrapS=s.ghU,this.wrapT=s.ghU,this.wrapR=s.ghU,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=s.Zr2,this.domainMin=new s.Pq0(0,0,0),this.domainMax=new s.Pq0(1,1,1)}get isLookupTexture3D(){return!0}scaleUp(t,r=!0){let s=this.image;return t<=s.width?Promise.reject(Error("The target size must be greater than the current size")):new Promise((i,n)=>{let a=URL.createObjectURL(new Blob(['"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;
213n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w<r;++w)for(let c=0;c<r;++c)for(let l=0;l<r;++l){let x=l*A,u=c*A,b=w*A,s=Math.round(l+c*r+w*h)*4;k(t,m,x,u,b,i),e[s+0]=i[0],e[s+1]=i[1],e[s+2]=i[2],e[s+3]=y}return e}};self.addEventListener("message",a=>{let t=a.data,r=t.data;t.operation===O.SCALE_UP&&(r=v.expand(r,t.size)),postMessage(r,[r.buffer]),close()});})();\n'],{type:"text/javascript"})),o=new Worker(a);o.addEventListener("error",e=>n(e.error)),o.addEventListener("message",r=>{let s=new e(r.data,t);this.colorSpace=s.colorSpace,s.type=this.type,s.name=this.name,URL.revokeObjectURL(a),i(s)});let l=r?[s.data.buffer]:[];o.postMessage({operation:eo.SCALE_UP,data:s.data,size:t},l)})}applyLUT(e){let t=this.image,r=e.image,i=Math.min(t.width,t.height,t.depth);if(i!==Math.min(r.width,r.height,r.depth))console.error("Size mismatch");else if(e.type!==s.RQf||this.type!==s.RQf)console.error("Both LUTs must be FloatType textures");else if(e.format!==s.GWd||this.format!==s.GWd)console.error("Both LUTs must be RGBA textures");else{let e=t.data,s=r.data,n=i**2,a=i-1;for(let t=0,r=i**3;t<r;++t){let r=4*t,o=e[r+0]*a,l=4*Math.round(o+e[r+1]*a*i+e[r+2]*a*n);e[r+0]=s[l+0],e[r+1]=s[l+1],e[r+2]=s[l+2]}this.needsUpdate=!0}return this}convertToUint8(){if(this.type===s.RQf){let e=this.image.data,t=new Uint8Array(e.length);for(let r=0,s=e.length;r<s;++r)t[r]=255*e[r]+.5;this.image.data=t,this.type=s.OUM,this.needsUpdate=!0}return this}convertToFloat(){if(this.type===s.OUM){let e=this.image.data,t=new Float32Array(e.length);for(let r=0,s=e.length;r<s;++r)t[r]=e[r]/255;this.image.data=t,this.type=s.RQf,this.needsUpdate=!0}return this}convertToRGBA(){return console.warn("LookupTexture","convertToRGBA() is deprecated, LUTs are now RGBA by default"),this}convertLinearToSRGB(){let e=this.image.data;if(this.type===s.RQf){for(let t=0,r=e.length;t<r;t+=4)ec.fromArray(e,t).convertLinearToSRGB().toArray(e,t);this.colorSpace=s.er$,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}convertSRGBToLinear(){let e=this.image.data;if(this.type===s.RQf){for(let t=0,r=e.length;t<r;t+=4)ec.fromArray(e,t).convertSRGBToLinear().toArray(e,t);this.colorSpace=s.Zr2,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}toDataTexture(){let e=this.image.width,t=this.image.height*this.image.depth,r=new s.GYF(this.image.data,e,t);return r.name=this.name,r.type=this.type,r.format=this.format,r.minFilter=s.k6q,r.magFilter=s.k6q,r.wrapS=this.wrapS,r.wrapT=this.wrapT,r.generateMipmaps=!1,r.needsUpdate=!0,this.colorSpace=r.colorSpace,r}static from(t){let r,s=t.image,{width:i,height:n}=s,a=Math.min(i,n);if(s instanceof Image){let e=eu.from(s).data;if(i>n){r=new Uint8Array(e.length);for(let t=0;t<a;++t)for(let s=0;s<a;++s)for(let i=0;i<a;++i){let n=(i+t*a+s*a*a)*4,o=(i+s*a+t*a*a)*4;r[o+0]=e[n+0],r[o+1]=e[n+1],r[o+2]=e[n+2],r[o+3]=e[n+3]}}else r=new Uint8Array(e.buffer)}else r=s.data.slice();let o=new e(r,a);return o.type=t.type,o.name=t.name,t.colorSpace=o.colorSpace,o}static createNeutral(t){let r=new Float32Array(t**3*4),s=t**2,i=1/(t-1);for(let e=0;e<t;++e)for(let n=0;n<t;++n)for(let a=0;a<t;++a){let o=(e+n*t+a*s)*4;r[o+0]=e*i,r[o+1]=n*i,r[o+2]=a*i,r[o+3]=1}let n=new e(r,t);return n.name="neutral",n}});var eh={DEFAULT:0,ESKIL:1},ed=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*(1.0+time))); 214#ifdef PREMULTIPLY 215outputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a); 216#else 217outputColor=vec4(noise,inputColor.a); 218#endif 219}`,ef=class extends U{constructor({blendFunction:e=y.SCREEN,premultiply:t=!1}={}){super("NoiseEffect",ed,{blendFunction:e}),this.premultiply=t}get premultiply(){return this.defines.has("PREMULTIPLY")}set premultiply(e){this.premultiply!==e&&(e?this.defines.set("PREMULTIPLY","1"):this.defines.delete("PREMULTIPLY"),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(e){this.premultiply=e}};s.BKk,s.BKk;var ev=`uniform float count; 220#ifdef SCROLL 221uniform float scrollSpeed; 222#endif 223void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float y=uv.y; 224#ifdef SCROLL 225y+=time*scrollSpeed; 226#endif 227vec2 sl=vec2(sin(y*count),cos(y*count));outputColor=vec4(sl.xyx,inputColor.a);}`,ep=class extends U{constructor({blendFunction:e=y.OVERLAY,density:t=1.25,scrollSpeed:r=0}={}){super("ScanlineEffect",ev,{blendFunction:e,uniforms:new Map([["count",new s.nc$(0)],["scrollSpeed",new s.nc$(0)]])}),this.resolution=new s.I9Y,this.d=t,this.scrollSpeed=r}get density(){return this.d}set density(e){this.d=e,this.setSize(this.resolution.width,this.resolution.height)}getDensity(){return this.density}setDensity(e){this.density=e}get scrollSpeed(){return this.uniforms.get("scrollSpeed").value}set scrollSpeed(e){this.uniforms.get("scrollSpeed").value=e,0===e?this.defines.delete("SCROLL")&&this.setChanged():this.defines.has("SCROLL")||(this.defines.set("SCROLL","1"),this.setChanged())}setSize(e,t){this.resolution.set(e,t),this.uniforms.get("count").value=Math.round(t*this.density)}};s.BKk;s.BKk;s.BKk;s.BKk;var em=`#include <packing> 228#ifdef GL_FRAGMENT_PRECISION_HIGH 229uniform highp sampler2D depthBuffer; 230#else 231uniform mediump sampler2D depthBuffer; 232#endif 233#ifdef DOWNSAMPLE_NORMALS 234uniform lowp sampler2D normalBuffer; 235#endif 236varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){ 237#if DEPTH_PACKING == 3201 238return unpackRGBAToDepth(texture2D(depthBuffer,uv)); 239#else 240return texture2D(depthBuffer,uv).r; 241#endif 242}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]<maxDistance){remaining[j++]=i;}else{rejected[k++]=i;}}for(;j<3;++j){remaining[j]=rejected[--k];}vec3 s=vec3(samples[remaining[0]],samples[remaining[1]],samples[remaining[2]]);c=(s.x+s.y+s.z)/3.0;distances[0]=abs(c-s.x);distances[1]=abs(c-s.y);distances[2]=abs(c-s.z);float minDistance=min(distances[0],min(distances[1],distances[2]));for(i=0;i<3;++i){if(distances[i]==minDistance){break;}}return remaining[i];}void main(){float d[4];d[0]=readDepth(vUv0);d[1]=readDepth(vUv1);d[2]=readDepth(vUv2);d[3]=readDepth(vUv3);int index=findBestDepth(d); 243#ifdef DOWNSAMPLE_NORMALS 244vec3 n[4];n[0]=texture2D(normalBuffer,vUv0).rgb;n[1]=texture2D(normalBuffer,vUv1).rgb;n[2]=texture2D(normalBuffer,vUv2).rgb;n[3]=texture2D(normalBuffer,vUv3).rgb; 245#else 246vec3 n[4];n[0]=vec3(0.0);n[1]=vec3(0.0);n[2]=vec3(0.0);n[3]=vec3(0.0); 247#endif 248gl_FragColor=vec4(n[index],d[index]);}`,eg=class extends s.BKk{constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new s.nc$(null),normalBuffer:new s.nc$(null),texelSize:new s.nc$(new s.I9Y)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:em,vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}"})}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=s.Rkk){this.depthBuffer=e,this.depthPacking=t}set normalBuffer(e){this.uniforms.normalBuffer.value=e,null!==e?this.defines.DOWNSAMPLE_NORMALS="1":delete this.defines.DOWNSAMPLE_NORMALS,this.needsUpdate=!0}setNormalBuffer(e){this.normalBuffer=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},eS=class extends a{constructor({normalBuffer:e=null,resolutionScale:t=.5,width:r=w.AUTO_SIZE,height:i=w.AUTO_SIZE,resolutionX:n=r,resolutionY:a=i}={}){super("DepthDownsamplingPass");let o=new eg;o.normalBuffer=e,this.fullscreenMaterial=o,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new s.nWS(1,1,{minFilter:s.hxR,magFilter:s.hxR,depthBuffer:!1,type:s.RQf}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;let l=this.resolution=new w(this,n,a,t);l.addEventListener("change",e=>this.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}
248setDepthTexture(e,t=s.Rkk){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,r,s,i){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){let s=e.getContext();if(!(s.getExtension("EXT_color_buffer_float")||s.getExtension("EXT_color_buffer_half_float")))throw Error("Rendering to float texture is not supported.")}},ex=`#ifdef FRAMEBUFFER_PRECISION_HIGH 249uniform mediump sampler2D inputBuffer; 250#else 251uniform lowp sampler2D inputBuffer; 252#endif 253uniform vec4 maskParams;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;float linearGradientMask(const in float x){return smoothstep(maskParams.x,maskParams.y,x)-smoothstep(maskParams.w,maskParams.z,x);}void main(){vec2 dUv=vOffset*(1.0-linearGradientMask(vUv2.y));vec4 sum=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y+dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x+dUv.x,vUv.y-dUv.y));sum+=texture2D(inputBuffer,vec2(vUv.x-dUv.x,vUv.y-dUv.y));gl_FragColor=sum*0.25; 254#include <colorspace_fragment> 255}`,eT=class extends R{constructor({kernelSize:e=A.MEDIUM,offset:t=0,rotation:r=0,focusArea:i=.4,feather:n=.3}={}){super(),this.fragmentShader=ex,this.vertexShader="uniform vec4 texelSize;uniform float kernel;uniform float scale;uniform float aspect;uniform vec2 rotation;varying vec2 vUv;varying vec2 vUv2;varying vec2 vOffset;void main(){vec2 uv=position.xy*0.5+0.5;vUv=uv;vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));vOffset=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;gl_Position=vec4(position.xy,1.0,1.0);}",this.kernelSize=e,this.uniforms.aspect=new s.nc$(1),this.uniforms.rotation=new s.nc$(new s.I9Y),this.uniforms.maskParams=new s.nc$(new s.IUQ),this._offset=t,this._focusArea=i,this._feather=n,this.rotation=r,this.updateParams()}updateParams(){let e=this.uniforms.maskParams.value,t=Math.max(this.focusArea,0),r=Math.max(t-this.feather,0);e.set(this.offset-t,this.offset-r,this.offset+t,this.offset+r)}get rotation(){return Math.acos(this.uniforms.rotation.value.x)}set rotation(e){this.uniforms.rotation.value.set(Math.cos(e),Math.sin(e))}get offset(){return this._offset}set offset(e){this._offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.updateParams()}setSize(e,t){super.setSize(e,t),this.uniforms.aspect.value=e/t}},ew=class extends C{constructor({offset:e=0,rotation:t=0,focusArea:r=.4,feather:s=.3,kernelSize:i=A.MEDIUM,resolutionScale:n=.5,resolutionX:a=w.AUTO_SIZE,resolutionY:o=w.AUTO_SIZE}={}){super({kernelSize:i,resolutionScale:n,resolutionX:a,resolutionY:o}),this.blurMaterial=new eT({kernelSize:i,offset:e,rotation:t,focusArea:r,feather:s})}},ey=`#ifdef FRAMEBUFFER_PRECISION_HIGH 256uniform mediump sampler2D map; 257#else 258uniform lowp sampler2D map; 259#endif 260uniform vec2 maskParams;varying vec2 vUv2;float linearGradientMask(const in float x){return step(maskParams.x,x)-step(maskParams.y,x);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float mask=linearGradientMask(vUv2.y);vec4 texel=texture2D(map,uv);outputColor=mix(texel,inputColor,mask);}`,eE=class extends U{constructor({blendFunction:e,offset:t=0,rotation:r=0,focusArea:i=.4,feather:n=.3,kernelSize:a=A.MEDIUM,resolutionScale:o=.5,resolutionX:l=w.AUTO_SIZE,resolutionY:u=w.AUTO_SIZE}={}){super("TiltShiftEffect",ey,{vertexShader:"uniform vec2 rotation;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=(uv-0.5)*2.0*vec2(aspect,1.0);vUv2=vec2(dot(rotation,vUv2),dot(rotation,vec2(vUv2.y,-vUv2.x)));}",blendFunction:e,uniforms:new Map([["rotation",new s.nc$(new s.I9Y)],["maskParams",new s.nc$(new s.I9Y)],["map",new s.nc$(null)]])}),this._offset=t,this._focusArea=i,this._feather=n,this.renderTarget=new s.nWS(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="TiltShift.Target",this.uniforms.get("map").value=this.renderTarget.texture,this.blurPass=new ew({kernelSize:a,resolutionScale:o,resolutionX:l,resolutionY:u,offset:t,rotation:r,focusArea:i,feather:n});let c=this.resolution=new w(this,l,u,o);c.addEventListener("change",e=>this.setSize(c.baseWidth,c.baseHeight)),this.rotation=r,this.updateParams()}updateParams(){let e=this.uniforms.get("maskParams").value,t=Math.max(this.focusArea-this.feather,0);e.set(this.offset-t,this.offset+t)}get rotation(){return Math.acos(this.uniforms.get("rotation").value.x)}set rotation(e){this.uniforms.get("rotation").value.set(Math.cos(e),Math.sin(e)),this.blurPass.blurMaterial.rotation=e}get offset(){return this._offset}set offset(e){this._offset=e,this.blurPass.blurMaterial.offset=e,this.updateParams()}get focusArea(){return this._focusArea}set focusArea(e){this._focusArea=e,this.blurPass.blurMaterial.focusArea=e,this.updateParams()}get feather(){return this._feather}set feather(e){this._feather=e,this.blurPass.blurMaterial.feather=e,this.updateParams()}get bias(){return 0}set bias(e){}update(e,t,r){this.blurPass.render(e,t,this.renderTarget)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.blurPass.resolution.copy(r)}initialize(e,t,r){this.blurPass.initialize(e,t,r),void 0!==r&&(this.renderTarget.texture.type=r,null!==e&&e.outputColorSpace
vendor: 4,308 bytes, lines 260-305
260===s.er$&&(this.renderTarget.texture.colorSpace=s.er$))}};s.BKk;var eM=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb; 261#if VIGNETTE_TECHNIQUE == 0 262float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset)); 263#else 264vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord)); 265#endif 266outputColor=vec4(color,inputColor.a);}`,eU=class extends U{constructor({blendFunction:e,eskil:t=!1,technique:r=t?eh.ESKIL:eh.DEFAULT,offset:i=.5,darkness:n=.5}={}){super("VignetteEffect",eM,{blendFunction:e,defines:new Map([["VIGNETTE_TECHNIQUE",r.toFixed(0)]]),uniforms:new Map([["offset",new s.nc$(i)],["darkness",new s.nc$(n)]])})}get technique(){return Number(this.defines.get("VIGNETTE_TECHNIQUE"))}set technique(e){this.technique!==e&&(this.defines.set("VIGNETTE_TECHNIQUE",e.toFixed(0)),this.setChanged())}get eskil(){return this.technique===eh.ESKIL}set eskil(e){this.technique=e?eh.ESKIL:eh.DEFAULT}getTechnique(){return this.technique}setTechnique(e){this.technique=e}get offset(){return this.uniforms.get("offset").value}set offset(e){this.uniforms.get("offset").value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}get darkness(){return this.uniforms.get("darkness").value}set darkness(e){this.uniforms.get("darkness").value=e}getDarkness(){return this.darkness}setDarkness(e){this.darkness=e}};s.BKk;s.BKk;var eA=`#include <common> 267#include <packing> 268#include <dithering_pars_fragment> 269#define packFloatToRGBA(v) packDepthToRGBA(v) 270#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) 271#ifdef FRAMEBUFFER_PRECISION_HIGH 272uniform mediump sampler2D inputBuffer; 273#else 274uniform lowp sampler2D inputBuffer; 275#endif 276#if DEPTH_PACKING == 3201 277uniform lowp sampler2D depthBuffer; 278#elif defined(GL_FRAGMENT_PRECISION_HIGH) 279uniform highp sampler2D depthBuffer; 280#else 281uniform mediump sampler2D depthBuffer; 282#endif 283uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const in vec4 value){return vec4(mix(pow(value.rgb*0.9478672986+vec3(0.0521327014),vec3(2.4)),value.rgb*0.0773993808,vec3(lessThanEqual(value.rgb,vec3(0.04045)))),value.a);}float readDepth(const in vec2 uv){ 284#if DEPTH_PACKING == 3201 285float depth=unpackRGBAToDepth(texture2D(depthBuffer,uv)); 286#else 287float depth=texture2D(depthBuffer,uv).r; 288#endif 289#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH) 290float d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d; 291#elif defined(USE_REVERSED_DEPTH_BUFFER) 292depth=1.0-depth; 293#endif 294return depth;}float getViewZ(const in float depth){ 295#ifdef PERSPECTIVE_CAMERA 296return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); 297#else 298return orthographicDepthToViewZ(depth,cameraNear,cameraFar); 299#endif 300}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0; 301#ifdef ENCODE_OUTPUT 302#include <colorspace_fragment> 303#endif 304#include <dithering_fragment> 305}`,eb=class extends s.BKk{constructor(e,t,r,i,n=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:s.sPf.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new s.nc$(null),depthBuffer:new s.nc$(null),resolution:new s.nc$(new s.I9Y),texelSize:new s.nc$(new s.I9Y),cameraNear:new s.nc$(.3),cameraFar:new s.nc$(1e3),aspect:ne
305w s.nc$(1),time:new s.nc$(0)},blending:s.XIg,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:n}),e&&this.setShaderParts(e),t&&this.setDefines(t),r&&this.setUniforms(r),this.copyCameraSettings(i)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=s.Rkk){this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader=eA.replace(g.FRAGMENT_HEAD,e.get(g.FRAGMENT_HEAD)||"").replace(g.FRAGMENT_MAIN_UV,e.get(g.FRAGMENT_MAIN_UV)||"").replace(g.FRAGMENT_MAIN_IMAGE,e.get(g.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}".replace(g.VERTEX_HEAD,e.get(g.VERTEX_HEAD)||"").replace(g.VERTEX_MAIN_SUPPORT,e.get(g.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){for(let t of(this.extensions={},e))this.extensions[t]=!0;return this}get encodeOutput(){return void 0!==this.defines.ENCODE_OUTPUT}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof s.ubm?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms;r.resolution.value.set(e,t),r.texelSize.value.set(1/e,1/t),r.aspect.value=e/t}static get Section(){return g}};s.BKk,s.sPf.replace(/\D+/g,"");var eB=255/256;function eR(e,t,r){for(let s of t){let t="$1"+e+s.charAt(0).toUpperCase()+s.slice(1),i=RegExp("([^\\.])(\\b"+s+"\\b)","g");for(let e of r.entries())null!==e[1]&&r.set(e[0],e[1].replace(i,t))}}new Float32Array([255/256/0x1000000,255/256/65536,255/256/256,255/256]),new Float32Array([eB,eB/256,eB/65536,1/0x1000000]);var eC=class extends a{constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new eb(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){for(let t of(this.fullscreenMaterial.copyCameraSettings(e),this.effects))t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener("change",this.listener);for(let t of(this.effects=e.sort((e,t)=>t.attributes-e.attributes),this.effects))t.addEventListener("change",this.listener)}updateMaterial(){let e=new S,t=0;for(let r of this.effects)if(r.blendMode.blendFunction===y.DST)e.attributes|=r.getAttributes()&m.DEPTH;else if((e.attributes&r.getAttributes()&m.CONVOLUTION)!=0)throw Error(`Convolution effects cannot be merged (${r.name})`);else!function(e,t,r){let i=t.getFragmentShader(),n=t.getVertexShader(),a=void 0!==i&&/mainImage/.test(i),o=void 0!==i&&/mainUv/.test(i);if(r.attributes|=t.getAttributes(),void 0===i)throw Error(`Missing fragment shader (${t.name})`);if(o&&(r.attributes&m.CONVOLUTION)!=0)throw Error(`Effects that transform UVs are incompatible with convolution effects (${t.name})`);if(a||o){let l=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,u=r.shaderParts,c=u.get(g.FRAGMENT_HEAD)||"",h=u.get(g.FRAGMENT_MAIN_UV)||"",d=u.get(g.FRAGMENT_MAIN_IMAGE)||"",f=u.get(g.VERTEX_HEAD)||"",v=u.get(g.VERTEX_MAIN_SUPPORT)||"",p=new Set,S=new Set;
305if(o&&(h+=` ${e}MainUv(UV); 306`,r.uvTransformation=!0),null!==n&&/mainSupport/.test(n)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(n);for(let s of(v+=` ${e}MainSupport(`,v+=t?"vUv);\n":");\n",n.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g)))for(let e of s[1].split(/\s*,\s*/))r.varyings.add(e),p.add(e),S.add(e);for(let e of n.matchAll(l))S.add(e[1])}for(let e of i.matchAll(l))S.add(e[1]);for(let e of t.defines.keys())S.add(e.replace(/\([\w\s,]*\)/g,""));for(let e of t.uniforms.keys())S.add(e);S.delete("while"),S.delete("for"),S.delete("if"),t.uniforms.forEach((t,s)=>r.uniforms.set(e+s.charAt(0).toUpperCase()+s.slice(1),t)),t.defines.forEach((t,s)=>r.defines.set(e+s.charAt(0).toUpperCase()+s.slice(1),t));let x=new Map([["fragment",i],["vertex",n]]);eR(e,S,r.defines),eR(e,S,x),i=x.get("fragment"),n=x.get("vertex");let T=t.blendMode;if(r.blendModes.set(T.blendFunction,T),a){null!==t.inputColorSpace&&t.inputColorSpace!==r.colorSpace&&(d+=t.inputColorSpace===s.er$?"color0 = sRGBTransferOETF(color0);\n ":"color0 = sRGBToLinear(color0);\n "),t.outputColorSpace!==s.jf0?r.colorSpace=t.outputColorSpace:null!==t.inputColorSpace&&(r.colorSpace=t.inputColorSpace),d+=`${e}MainImage(color0, UV, `,(r.attributes&m.DEPTH)!=0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(i)&&(d+="depth, ",r.readDepth=!0),d+="color1);\n ";let n=e+"BlendOpacity";r.uniforms.set(n,T.opacity),d+=`color0 = blend${T.blendFunction}(color0, color1, ${n}); 307 308 `,c+=`uniform float ${n}; 309 310`}if(c+=i+"\n",null!==n&&(f+=n+"\n"),u.set(g.FRAGMENT_HEAD,c),u.set(g.FRAGMENT_MAIN_UV,h),u.set(g.FRAGMENT_MAIN_IMAGE,d),u.set(g.VERTEX_HEAD,f),u.set(g.VERTEX_MAIN_SUPPORT,v),null!==t.extensions)for(let e of t.extensions)r.extensions.add(e)}else throw Error(`Could not find mainImage or mainUv function (${t.name})`)}("e"+t++,r,e);let r=e.shaderParts.get(g.FRAGMENT_HEAD),i=e.shaderParts.get(g.FRAGMENT_MAIN_IMAGE),n=e.shaderParts.get(g.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())r+=t.getShaderCode().replace(a,`blend${t.blendFunction}`)+"\n";for(let[t,a]of((e.attributes&m.DEPTH)!=0?(e.readDepth&&(i="float depth = readDepth(UV);\n\n "+i),this.needsDepthTexture=null===this.getDepthTexture()):this.needsDepthTexture=!1,e.colorSpace===s.er$&&(i+="color0 = sRGBToLinear(color0);\n "),e.uvTransformation?(n="vec2 transformedUv = vUv;\n"+n,e.defines.set("UV","transformedUv")):e.defines.set("UV","vUv"),e.shaderParts.set(g.FRAGMENT_HEAD,r),e.shaderParts.set(g.FRAGMENT_MAIN_IMAGE,i),e.shaderParts.set(g.FRAGMENT_MAIN_UV,n),e.shaderParts))null!==a&&e.shaderParts.set(t,a.trim().replace(/^#/,"\n#"));this.skipRendering=0===t,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=s.Rkk){for(let r of(this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t,this.effects))r.setDepthTexture(e,t)}render(e,t,r,s,i){for(let r of this.effects)r.update(e,t,s);if(!this.skipRendering||this.renderToScreen){let i=this.fullscreenMaterial;i.inputBuffer=t.texture,i.time+=s*this.timeScale,e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}}setSize(e,t){for(let r of(this.fullscreenMaterial.setSize(e,t),this.effects))r.setSize(e,t)}initialize(e,t,r){for(let s of(this.renderer=e,this.effects))s.initialize(e,t,r);this.updateMaterial(),void 0!==r&&r!==s.OUM&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){for(let e of(super.dispose(),this.effects))e.removeEventListener("change",this.listener),e.dispose()}handleEvent(e){"change"===e.type&&this.recompile()}},eF=class extends a{constructor(e,t,{renderTarget:r,resolutionScale:i=1,width:n=w.AUTO_SIZE,height:a=w.AUTO_SIZE,resolutionX:o=n,resolutionY:l=a}={}){super("NormalPass"),this.needsSwap=!1,this.renderPass=new ea(e,t,new s.qBx);let u=this.renderPass;u.ignoreBackground=!0,u.skipShadowMapUpdate=!0;let c=u.getClearPass();c.overrideClearColor=new s.Q1f(7829503),c.overrideClearAlpha=1,this.renderTarget=r,void 0===this.renderTarget&&(this.renderTarget=new s.nWS(1,1,{minFilter:s.hxR,magFilter:s.hxR}),this.renderTarget.texture.name="NormalPass.Target");let h=this.resolution=new w(this,o,l,i);h.addEventListener("change",e=>this.setSize(h.baseWidth,h.baseHeight))}set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,s,i){let n=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,n,n)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}};function eD(e,t,r,s){var i;return(i=e+(t-e)*.75)+(r+(s-r)*.75-i)*.875}new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array(2),new Float32Array(2),new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125]),new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4]),new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3]),eD(0,0,0,0),new Float32Array([0,0,0,0]),eD(0,0,0,1),new Float32Array([0,0,0,1]),eD(0,0,1,0),new Float32Array([0,0,1,0]),eD(0,0,1,1),new Float32Array([0,0,1,1]),eD(0,1,0,0),new Float32Array([0,1,0,0]),eD(0,1,0,1),new Float32Array([0,1,0,1]),eD(0,1,1,0),new Float32Array([0,1,1,0]),eD(0,1,1,1),new Float32Array([0,1,1,1]),eD(1,
3100,0,0),new Float32Array([1,0,0,0]),eD(1,0,0,1),new Float32Array([1,0,0,1]),eD(1,0,1,0),new Float32Array([1,0,1,0]),eD(1,0,1,1),new Float32Array([1,0,1,1]),eD(1,1,0,0),new Float32Array([1,1,0,0]),eD(1,1,0,1),new Float32Array([1,1,0,1]),eD(1,1,1,0),new Float32Array([1,1,1,0]),eD(1,1,1,1),new Float32Array([1,1,1,1])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.