postprocessing
Version:
A post processing library for three.js.
77 lines • 324 kB
JavaScript
/**
* postprocessing v6.37.2 build Fri Mar 28 2025
* https://github.com/pmndrs/postprocessing
* Copyright 2015-2025 Raoul van Rüschen
* @license Zlib
*/
if(typeof window==="object"&&!window.require)window.require=()=>window.THREE;
"use strict";var POSTPROCESSING=(()=>{var Ur=Object.defineProperty;var aa=Object.getOwnPropertyDescriptor;var oa=Object.getOwnPropertyNames;var la=Object.prototype.hasOwnProperty;var p=(o=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(o,{get:(e,t)=>(typeof require!="undefined"?require:e)[t]}):o)(function(o){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var ua=(o,e)=>{for(var t in e)Ur(o,t,{get:e[t],enumerable:!0})},ca=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of oa(e))!la.call(o,i)&&i!==t&&Ur(o,i,{get:()=>e[i],enumerable:!(r=aa(e,i))||r.enumerable});return o};var fa=o=>ca(Ur({},"__esModule",{value:!0}),o);var Oa={};ua(Oa,{ASCIIEffect:()=>Gr,ASCIITexture:()=>kt,AdaptiveLuminanceMaterial:()=>dr,AdaptiveLuminancePass:()=>mr,BlendFunction:()=>v,BlendMode:()=>Ht,BloomEffect:()=>Yt,BlurPass:()=>se,BokehEffect:()=>kr,BokehMaterial:()=>qe,BoxBlurMaterial:()=>vr,BoxBlurPass:()=>Ti,BrightnessContrastEffect:()=>zr,ChromaticAberrationEffect:()=>_r,CircleOfConfusionMaterial:()=>jt,ClearMaskPass:()=>Lt,ClearPass:()=>q,ColorAverageEffect:()=>Qr,ColorChannel:()=>be,ColorDepthEffect:()=>Vr,ColorEdgesMaterial:()=>Bt,ConvolutionMaterial:()=>Ze,CopyMaterial:()=>De,CopyPass:()=>Ke,DepthComparisonMaterial:()=>rr,DepthCopyMaterial:()=>gr,DepthCopyMode:()=>tt,DepthCopyPass:()=>It,DepthDownsamplingMaterial:()=>ur,DepthDownsamplingPass:()=>cr,DepthEffect:()=>Yr,DepthMaskMaterial:()=>ht,DepthOfFieldEffect:()=>Wr,DepthPass:()=>mt,DepthPickingPass:()=>Ci,DepthSavePass:()=>It,DepthTestStrategy:()=>et,Disposable:()=>Rr,DotScreenEffect:()=>Kr,DownsamplingMaterial:()=>Qt,EdgeDetectionMaterial:()=>Bt,EdgeDetectionMode:()=>tr,Effect:()=>g,EffectAttribute:()=>I,EffectComposer:()=>br,EffectMaterial:()=>Ar,EffectPass:()=>Si,EffectShaderData:()=>Ot,EffectShaderSection:()=>S,FXAAEffect:()=>Xr,GammaCorrectionEffect:()=>Zr,GaussKernel:()=>Nt,GaussianBlurMaterial:()=>xr,GaussianBlurPass:()=>Bi,GlitchEffect:()=>jr,GlitchMode:()=>ft,GodRaysEffect:()=>qr,GodRaysMaterial:()=>$t,GridEffect:()=>$r,HueSaturationEffect:()=>ei,ImmutableTimer:()=>Lr,Initializable:()=>Fr,KawaseBlurMaterial:()=>Ze,KawaseBlurPass:()=>se,KernelSize:()=>_,LUT1DEffect:()=>ri,LUT3DEffect:()=>Br,LUT3dlLoader:()=>Ei,LUTCubeLoader:()=>Di,LUTEffect:()=>Br,LUTOperation:()=>ii,LambdaPass:()=>Mi,LensDistortionEffect:()=>ti,LookupTexture:()=>Oe,LookupTexture3D:()=>Oe,LuminanceMaterial:()=>zt,LuminancePass:()=>ct,MaskFunction:()=>Zt,MaskMaterial:()=>Jt,MaskPass:()=>Ft,MipmapBlurPass:()=>_t,NoiseEffect:()=>ni,NoiseTexture:()=>$e,NormalPass:()=>yi,OutlineEdgesMaterial:()=>St,OutlineEffect:()=>ai,OutlineMaterial:()=>St,OverrideMaterialManager:()=>Dt,Pass:()=>E,PixelationEffect:()=>oi,PredicationMode:()=>si,RawImageData:()=>le,RealisticBokehEffect:()=>li,RenderPass:()=>Ce,Resizable:()=>Nr,Resizer:()=>x,Resolution:()=>x,SMAAAreaImageData:()=>Ri,SMAAEffect:()=>di,SMAAImageGenerator:()=>bi,SMAAImageLoader:()=>wi,SMAAPreset:()=>dt,SMAASearchImageData:()=>Fi,SMAAWeightsMaterial:()=>nr,SSAOEffect:()=>pi,SSAOMaterial:()=>lr,SavePass:()=>Ke,ScanlineEffect:()=>ui,Section:()=>S,Selection:()=>ut,SelectiveBloomEffect:()=>fi,SepiaEffect:()=>hi,ShaderPass:()=>N,ShockWaveEffect:()=>ci,TetrahedralUpscaler:()=>Ii,TextureEffect:()=>mi,TiltShiftBlurMaterial:()=>fr,TiltShiftBlurPass:()=>hr,TiltShiftEffect:()=>vi,Timer:()=>bt,ToneMappingEffect:()=>gi,ToneMappingMode:()=>$,UpsamplingMaterial:()=>Vt,VignetteEffect:()=>xi,VignetteTechnique:()=>pt,WebGLExtension:()=>Aa,version:()=>Oi});var Oi="6.37.2";var Rr=class{dispose(){}};var P=p("three");var bt=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){typeof document!="undefined"&&document.hidden!==void 0&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return this._delta*.001}get fixedDelta(){return this._fixedDelta*.001}set fixedDelta(e){this._fixedDelta=e*1e3}get elapsed(){return this._elapsed*.001}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(e!==void 0?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}};var Q=p("three"),da=(()=>{let o=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),e=new Float32Array([0,0,2,0,0,2]),t=new Q.BufferGeometry;return t.setAttribute("position",new Q.BufferAttribute(o,3)),t.setAttribute("uv",new Q.BufferAttribute(e,2)),t})(),E=class o{static get fullscreenGeometry(){return da}constructor(e="Pass",t=new Q.Scene,r=new Q.Camera){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;t!==null&&(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 this.screen!==null?this.screen.material:null}set fullscreenMaterial(e){let t=this.screen;t!==null?t.material=e:(t=new Q.Mesh(o.fullscreenGeometry,e),t.frustumCulled=!1,this.scene===null&&(this.scene=new Q.Scene),this.scene.add(t),this.screen=t)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=Q.BasicDepthPacking){}render(e,t,r,i,s){throw new Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,r){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof Q.WebGLRenderTarget||t instanceof Q.Material||t instanceof Q.Texture||t instanceof o)&&this[e].dispose()}this.fullscreenMaterial!==null&&this.fullscreenMaterial.dispose()}};var Lt=class extends E{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(e,t,r,i,s){let a=e.state.buffers.stencil;a.setLocked(!1),a.setTest(!1)}};var Ue=p("three");var lt=p("three");var Ni=`#include <common>
#include <dithering_pars_fragment>
#ifdef FRAMEBUFFER_PRECISION_HIGH
uniform mediump sampler2D inputBuffer;
#else
uniform lowp sampler2D inputBuffer;
#endif
uniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;
#include <colorspace_fragment>
#include <dithering_fragment>
}`;var X="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}";var De=class extends lt.ShaderMaterial{constructor(){super({name:"CopyMaterial",uniforms:{inputBuffer:new lt.Uniform(null),opacity:new lt.Uniform(1)},blending:lt.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ni,vertexShader:X})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}};var Ke=class extends E{constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new De,this.needsSwap=!1,this.renderTarget=e,e===void 0&&(this.renderTarget=new Ue.WebGLRenderTarget(1,1,{minFilter:Ue.LinearFilter,magFilter:Ue.LinearFilter,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,i,s){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){r!==void 0&&(this.renderTarget.texture.type=r,r!==Ue.UnsignedByteType?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":e!==null&&e.outputColorSpace===Ue.SRGBColorSpace&&(this.renderTarget.texture.colorSpace=Ue.SRGBColorSpace))}};var Gi=p("three");var Hi=new Gi.Color,q=class extends E{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,i,s){let a=this.overrideClearColor,n=this.overrideClearAlpha,u=e.getClearAlpha(),l=a!==null,c=n>=0;l?(e.getClearColor(Hi),e.setClearColor(a,c?n:u)):c&&e.setClearAlpha(n),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),l?e.setClearColor(Hi,u):c&&e.setClearAlpha(u)}};var Ft=class extends E{constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new q(!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,i,s){let a=e.getContext(),n=e.state.buffers,u=this.scene,l=this.camera,c=this.clearPass,f=this.inverted?0:1,h=1-f;n.color.setMask(!1),n.depth.setMask(!1),n.color.setLocked(!0),n.depth.setLocked(!0),n.stencil.setTest(!0),n.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),n.stencil.setFunc(a.ALWAYS,f,4294967295),n.stencil.setClear(h),n.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?c.render(e,null):(c.render(e,t),c.render(e,r))),this.renderToScreen?(e.setRenderTarget(null),e.render(u,l)):(e.setRenderTarget(t),e.render(u,l),e.setRenderTarget(r),e.render(u,l)),n.color.setLocked(!1),n.depth.setLocked(!1),n.stencil.setLocked(!1),n.stencil.setFunc(a.EQUAL,1,4294967295),n.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),n.stencil.setLocked(!0)}};var br=class{constructor(e=null,{depthBuffer:t=!0,stencilBuffer:r=!1,multisampling:i=0,frameBufferType:s}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,r,s,i),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new Ke,this.depthTexture=null,this.passes=[],this.timer=new bt,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,e!==null){let t=e.getSize(new P.Vector2),r=e.getContext().getContextAttributes().alpha,i=this.inputBuffer.texture.type;i===P.UnsignedByteType&&e.outputColorSpace===P.SRGBColorSpace&&(this.inputBuffer.texture.colorSpace=P.SRGBColorSpace,this.outputBuffer.texture.colorSpace=P.SRGBColorSpace,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height);for(let s of this.passes)s.initialize(e,r,i)}}replaceRenderer(e,t=!0){let r=this.renderer,i=r.domElement.parentNode;return this.setRenderer(e),t&&i!==null&&(i.removeChild(r.domElement),i.appendChild(e.domElement)),r}createDepthTexture(){let e=this.depthTexture=new P.DepthTexture;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=P.DepthStencilFormat,e.type=P.UnsignedInt248Type):e.type=P.UnsignedIntType,e}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose();for(let e of this.passes)e.setDepthTexture(null)}}createBuffer(e,t,r,i){let s=this.renderer,a=s===null?new P.Vector2:s.getDrawingBufferSize(new P.Vector2),n={minFilter:P.LinearFilter,magFilter:P.LinearFilter,stencilBuffer:t,depthBuffer:e,type:r},u=new P.WebGLRenderTarget(a.width,a.height,n);return i>0&&(u.ignoreDepthForMultisampleCopy=!1,u.samples=i),r===P.UnsignedByteType&&s!==null&&s.outputColorSpace===P.SRGBColorSpace&&(u.texture.colorSpace=P.SRGBColorSpace),u.texture.name="EffectComposer.Buffer",u.texture.generateMipmaps=!1,u}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,s=i.getDrawingBufferSize(new P.Vector2),a=i.getContext().getContextAttributes().alpha,n=this.inputBuffer.texture.type;if(e.setRenderer(i),e.setSize(s.width,s.height),e.initialize(i,a,n),this.autoRenderToScreen&&(r.length>0&&(r[r.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),t!==void 0?r.splice(t,0,e):r.push(e),this.autoRenderToScreen&&(r[r.length-1].renderToScreen=!0),e.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){let u=this.createDepthTexture();for(e of r)e.setDepthTexture(u)}else e.setDepthTexture(this.depthTexture)}removePass(e){let t=this.passes,r=t.indexOf(e);if(r!==-1&&t.splice(r,1).length>0){if(this.depthTexture!==null){let a=(u,l)=>u||l.needsDepthTexture;t.reduce(a,!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=this.renderer,r=this.copyPass,i=this.inputBuffer,s=this.outputBuffer,a=!1,n,u,l;e===void 0&&(this.timer.update(),e=this.timer.getDelta());for(let c of this.passes)c.enabled&&(c.render(t,i,s,e,a),c.needsSwap&&(a&&(r.renderToScreen=c.renderToScreen,n=t.getContext(),u=t.state.buffers.stencil,u.setFunc(n.NOTEQUAL,1,4294967295),r.render(t,i,s,e,a),u.setFunc(n.EQUAL,1,4294967295)),l=i,i=s,s=l),c instanceof Ft?a=!0:c instanceof Lt&&(a=!1))}setSize(e,t,r){let i=this.renderer,s=i.getSize(new P.Vector2);(e===void 0||t===void 0)&&(e=s.width,t=s.height),(s.width!==e||s.height!==t)&&i.setSize(e,t,r);let a=i.getDrawingBufferSize(new P.Vector2);this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height);for(let n of this.passes)n.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),E.fullscreenGeometry.dispose()}};var ki=p("three");var I={NONE:0,DEPTH:1,CONVOLUTION:2};var S={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"};var Ot=class{constructor(){this.shaderParts=new Map([[S.FRAGMENT_HEAD,null],[S.FRAGMENT_MAIN_UV,null],[S.FRAGMENT_MAIN_IMAGE,null],[S.VERTEX_HEAD,null],[S.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=I.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=ki.LinearSRGBColorSpace}};function zi(o){let e;if(o===0)e=new Float64Array(0);else if(o===1)e=new Float64Array([1]);else if(o>1){let t=new Float64Array(o),r=new Float64Array(o);for(let i=1;i<=o;++i){for(let s=0;s<i;++s)r[s]=s===0||s===i-1?1:t[s-1]+t[s];e=r,r=t,t=e}}return e}var Nt=class{constructor(e,t=2){this.weights=null,this.offsets=null,this.linearWeights=null,this.linearOffsets=null,this.generate(e,t)}get steps(){return this.offsets===null?0:this.offsets.length}get linearSteps(){return this.linearOffsets===null?0:this.linearOffsets.length}generate(e,t){if(e<3||e>1020)throw new Error("The kernel size must be in the range [3, 1020]");let r=e+t*2,i=t>0?zi(r).slice(t,-t):zi(r),s=Math.floor((i.length-1)/2),a=i.reduce((h,d)=>h+d,0),n=i.slice(s),u=[...Array(s+1).keys()],l=new Float64Array(Math.floor(u.length/2)),c=new Float64Array(l.length);l[0]=n[0]/a;for(let h=1,d=1,m=u.length-1;h<m;h+=2,++d){let A=u[h],w=u[h+1],B=n[h],D=n[h+1],T=B+D,R=(A*B+w*D)/T;l[d]=T/a,c[d]=R}for(let h=0,d=n.length,m=1/a;h<d;++h)n[h]*=m;let f=(l.reduce((h,d)=>h+d,0)-l[0]*.5)*2;if(f!==0)for(let h=0,d=l.length,m=1/f;h<d;++h)l[h]*=m;this.offsets=u,this.weights=n,this.linearOffsets=c,this.linearWeights=l}};var Lr=class{getDelta(){return NaN}getElapsed(){return NaN}};var Fr=class{initialize(e,t,r){}};var re=p("three"),Or=!1,Dt=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=t=>{if(t.isMesh){let r;if(t.material.flatShading)switch(t.material.side){case re.DoubleSide:r=this.materialsFlatShadedDoubleSide;break;case re.BackSide:r=this.materialsFlatShadedBackSide;break;default:r=this.materialsFlatShaded;break}else switch(t.material.side){case re.DoubleSide:r=this.materialsDoubleSide;break;case re.BackSide:r=this.materialsBackSide;break;default:r=this.materials;break}this.originalMaterials.set(t,t.material),t.isSkinnedMesh?t.material=r[2]:t.isInstancedMesh?t.material=r[1]:t.material=r[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof re.ShaderMaterial))return e.clone();let t=e.uniforms,r=new Map;for(let s in t){let a=t[s].value;a.isRenderTargetTexture&&(t[s].value=null,r.set(s,a))}let i=e.clone();for(let s of r)t[s[0]].value=s[1],i.uniforms[s[0]].value=s[1];return i}setMaterial(e){if(this.disposeMaterials(),this.material=e,e!==null){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=re.FrontSide;t[2].skinning=!0,this.materialsBackSide=t.map(r=>{let i=this.cloneMaterial(r);return i.uniforms=Object.assign({},e.uniforms),i.side=re.BackSide,i}),this.materialsDoubleSide=t.map(r=>{let i=this.cloneMaterial(r);return i.uniforms=Object.assign({},e.uniforms),i.side=re.DoubleSide,i}),this.materialsFlatShaded=t.map(r=>{let i=this.cloneMaterial(r);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i}),this.materialsFlatShadedBackSide=t.map(r=>{let i=this.cloneMaterial(r);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=re.BackSide,i}),this.materialsFlatShadedDoubleSide=t.map(r=>{let i=this.cloneMaterial(r);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=re.DoubleSide,i})}}render(e,t,r){let i=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,Or){let s=this.originalMaterials;this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,r);for(let a of s)a[0].material=a[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=i}disposeMaterials(){if(this.material!==null){let e=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(let t of e)t.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return Or}static set workaroundEnabled(e){Or=e}};var Nr=class{setSize(e,t){}};var wt=p("three"),Xe=-1,x=class extends wt.EventDispatcher{constructor(e,t=Xe,r=Xe,i=1){super(),this.resizable=e,this.baseSize=new wt.Vector2(1,1),this.preferredSize=new wt.Vector2(t,r),this.target=this.preferredSize,this.s=i,this.effectiveSize=new wt.Vector2,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,r=this.effectiveSize,i=this.scale;t.width!==Xe?r.width=t.width:t.height!==Xe?r.width=Math.round(t.height*(e.width/Math.max(e.height,1))):r.width=Math.round(e.width*i),t.height!==Xe?r.height=t.height:t.width!==Xe?r.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):r.height=Math.round(e.height*i)}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(Xe),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 Xe}};var wr=class{constructor(e=0){this.nextId=e}getNextId(){return this.nextId++}reset(e=0){return this.nextId=e,this}};var Hr=new wr(2),ut=class extends Set{constructor(e,t=Hr.getNextId()){super(),this.exclusive=!1,this._layer=t,(this._layer<1||this._layer>31)&&(console.warn("Layer out of range, resetting to 2"),Hr.reset(2),this._layer=Hr.getNextId()),e!==void 0&&this.set(e)}get layer(){return this._layer}set layer(e){let t=this._layer;for(let r of this)r.layers.disable(t),r.layers.enable(e);this._layer=e}getLayer(){return this.layer}setLayer(e){this.layer=e}isExclusive(){return this.exclusive}setExclusive(e){this.exclusive=e}clear(){let e=this.layer;for(let t of this)t.layers.disable(e);return super.clear()}set(e){this.clear();for(let t of e)this.add(t);return this}indexOf(e){return this.has(e)?0:-1}add(e){return this.exclusive?e.layers.set(this.layer):e.layers.enable(this.layer),super.add(e)}delete(e){return this.has(e)&&e.layers.disable(this.layer),super.delete(e)}toggle(e){let t;return this.has(e)?(this.delete(e),t=!1):(this.add(e),t=!0),t}setVisible(e){for(let t of this)e?t.layers.enable(0):t.layers.disable(0);return this}};var Tr=p("three");var v={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};var Qi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y,opacity);}";var Vi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,min(y.a,opacity));}";var _i="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y)*0.5,opacity);}";var Yi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.rg,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}";var Wi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(step(0.0,y)*(1.0-min(vec4(1.0),(1.0-x)/y)),vec4(1.0),step(1.0,x));return mix(x,z,opacity);}";var Ki="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=step(0.0,x)*mix(min(vec4(1.0),x/max(1.0-y,1e-9)),vec4(1.0),step(1.0,y));return mix(x,z,opacity);}";var Xi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x,y),opacity);}";var Zi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,abs(x-y),opacity);}";var ji="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x/max(y,1e-12),opacity);}";var Ji="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,(x+y-2.0*x*y),opacity);}";var qi="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 a=min(x,1.0),b=min(y,1.0);vec4 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,y));return mix(x,z,opacity);}";var $i="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,step(1.0,x+y),opacity);}";var es="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.r,xHSL.gb));return vec4(mix(x.rgb,z,opacity),y.a);}";var ts="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-y,opacity);}";var rs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y*(1.0-x),opacity);}";var is="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x,y),opacity);}";var ss="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(y+x-1.0,0.0,1.0),opacity);}";var ns="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,min(x+y,1.0),opacity);}";var as="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,clamp(2.0*y+x-1.0,0.0,1.0),opacity);}";var os="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.rg,yHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}";var ls="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x*y,opacity);}";var us="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,1.0-abs(1.0-x-y),opacity);}";var cs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,opacity);}";var fs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(2.0*y*x,1.0-2.0*(1.0-y)*(1.0-x),step(0.5,x));return mix(x,z,opacity);}";var hs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 z=mix(mix(y2,x,step(0.5*x,y)),max(vec4(0.0),y2-1.0),step(x,(y2-1.0)));return mix(x,z,opacity);}";var ds="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(min(x*x/max(1.0-y,1e-12),1.0),y,step(1.0,y));return mix(x,z,opacity);}";var ps="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.r,yHSL.g,xHSL.b));return vec4(mix(x.rgb,z,opacity),y.a);}";var ms="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,x+y-min(x*y,1.0),opacity);}";var vs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 y2=2.0*y;vec4 w=step(0.5,y);vec4 z=mix(x-(1.0-y2)*x*(1.0-x),mix(x+(y2-1.0)*(sqrt(x)-x),x+(y2-1.0)*x*((16.0*x-12.0)*x+3.0),w*(1.0-step(0.25,x))),w);return mix(x,z,opacity);}";var gs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}";var As="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,max(x+y-1.0,0.0),opacity);}";var xs="vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=mix(max(1.0-min((1.0-x)/(2.0*y),1.0),0.0),min(x/(2.0*(1.0-y)),1.0),step(0.5,y));return mix(x,z,opacity);}";var pa=new Map([[v.ADD,Qi],[v.ALPHA,Vi],[v.AVERAGE,_i],[v.COLOR,Yi],[v.COLOR_BURN,Wi],[v.COLOR_DODGE,Ki],[v.DARKEN,Xi],[v.DIFFERENCE,Zi],[v.DIVIDE,ji],[v.DST,null],[v.EXCLUSION,Ji],[v.HARD_LIGHT,qi],[v.HARD_MIX,$i],[v.HUE,es],[v.INVERT,ts],[v.INVERT_RGB,rs],[v.LIGHTEN,is],[v.LINEAR_BURN,ss],[v.LINEAR_DODGE,ns],[v.LINEAR_LIGHT,as],[v.LUMINOSITY,os],[v.MULTIPLY,ls],[v.NEGATION,us],[v.NORMAL,cs],[v.OVERLAY,fs],[v.PIN_LIGHT,hs],[v.REFLECT,ds],[v.SATURATION,ps],[v.SCREEN,ms],[v.SOFT_LIGHT,vs],[v.SRC,gs],[v.SUBTRACT,As],[v.VIVID_LIGHT,xs]]),Ht=class extends Tr.EventDispatcher{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new Tr.Uniform(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 pa.get(this.blendFunction)}};var Re=p("three");var Gt=p("three"),kt=class extends Gt.CanvasTexture{constructor({characters:e=" .:,'-^=*+?!|0#X%WM@",font:t="Arial",fontSize:r=54,size:i=1024,cellCount:s=16}={}){super(document.createElement("canvas"),void 0,Gt.RepeatWrapping,Gt.RepeatWrapping);let a=this.image;a.width=a.height=i;let n=a.getContext("2d"),u=i/s;n.font=`${r}px ${t}`,n.textAlign="center",n.textBaseline="middle",n.fillStyle="#ffffff";for(let l=0,c=e.length;l<c;++l){let f=e[l],h=l%s,d=Math.floor(l/s);n.fillText(f,h*u+u/2,d*u+u/2)}this.characterCount=e.length,this.cellCount=s}};var ie=p("three");var g=class extends ie.EventDispatcher{constructor(e,t,{attributes:r=I.NONE,blendFunction:i=v.NORMAL,defines:s=new Map,uniforms:a=new Map,extensions:n=null,vertexShader:u=null}={}){super(),this.name=e,this.renderer=null,this.attributes=r,this.fragmentShader=t,this.vertexShader=u,this.defines=s,this.uniforms=a,this.extensions=n,this.blendMode=new Ht(i),this.blendMode.addEventListener("change",l=>this.setChanged()),this._inputColorSpace=ie.LinearSRGBColorSpace,this._outputColorSpace=ie.NoColorSpace}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=ie.BasicDepthPacking){}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 ie.WebGLRenderTarget||t instanceof ie.Material||t instanceof ie.Texture||t instanceof E)&&this[e].dispose()}}};var Es=`uniform sampler2D asciiTexture;uniform vec4 cellCount;
#ifdef USE_COLOR
uniform vec3 color;
#endif
void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 pixelizedUv=cellCount.zw*(0.5+floor(uv*cellCount.xy));vec4 texel=texture(inputBuffer,pixelizedUv);float lum=min(luminance(texel.rgb),1.0);
#ifdef INVERTED
lum=1.0-lum;
#endif
float characterIndex=floor(CHAR_COUNT_MINUS_ONE*lum);vec2 characterPosition=vec2(mod(characterIndex,TEX_CELL_COUNT),floor(characterIndex*INV_TEX_CELL_COUNT));vec2 offset=vec2(characterPosition.x,-characterPosition.y)*INV_TEX_CELL_COUNT;vec2 characterUv=mod(uv*(cellCount.xy*INV_TEX_CELL_COUNT),INV_TEX_CELL_COUNT);characterUv=characterUv-vec2(0.0,INV_TEX_CELL_COUNT)+offset;float asciiCharacter=texture(asciiTexture,characterUv).r;
#ifdef USE_COLOR
outputColor=vec4(color*asciiCharacter,inputColor.a);
#else
outputColor=vec4(texel.rgb*asciiCharacter,inputColor.a);
#endif
}`;var Gr=class extends g{constructor({asciiTexture:e=new kt,cellSize:t=16,color:r=null,inverted:i=!1}={}){super("ASCIIEffect",Es,{uniforms:new Map([["asciiTexture",new Re.Uniform(null)],["cellCount",new Re.Uniform(new Re.Vector4)],["color",new Re.Uniform(new Re.Color)]])}),this._cellSize=-1,this.resolution=new Re.Vector2,this.asciiTexture=e,this.cellSize=t,this.color=r,this.inverted=i}get asciiTexture(){return this.uniforms.get("asciiTexture").value}set asciiTexture(e){let t=this.uniforms.get("asciiTexture").value;if(this.uniforms.get("asciiTexture").value=e,t!==null&&t!==e&&t.dispose(),e!==null){let r=e.cellCount;this.defines.set("CHAR_COUNT_MINUS_ONE",(e.characterCount-1).toFixed(1)),this.defines.set("TEX_CELL_COUNT",r.toFixed(1)),this.defines.set("INV_TEX_CELL_COUNT",(1/r).toFixed(9)),this.setChanged()}}get color(){return this.uniforms.get("color").value}set color(e){e!==null&&this.uniforms.get("color").value.set(e),this.defines.has("USE_COLOR")&&e===null?(this.defines.delete("USE_COLOR"),this.setChanged()):!this.defines.has("USE_COLOR")&&e!==null&&(this.defines.set("USE_COLOR","1"),this.setChanged())}get inverted(){return this.defines.has("INVERTED")}set inverted(e){this.inverted!==e&&(e?this.defines.set("INVERTED","1"):this.defines.delete("INVERTED"),this.setChanged())}get cellSize(){return this._cellSize}set cellSize(e){this._cellSize!==e&&(this._cellSize=e,this.updateCellCount())}updateCellCount(){let e=this.uniforms.get("cellCount").value,t=this.resolution;e.x=t.width/this.cellSize,e.y=t.height/this.cellSize,e.z=1/e.x,e.w=1/e.y}setSize(e,t){this.resolution.set(e,t),this.updateCellCount()}dispose(){this.asciiTexture!==null&&this.asciiTexture.dispose(),super.dispose()}};var Je=p("three");var _={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5};var je=p("three");var pe=p("three");var Ds=`#ifdef FRAMEBUFFER_PRECISION_HIGH
uniform mediump sampler2D inputBuffer;
#else
uniform lowp sampler2D inputBuffer;
#endif
varying 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;
#include <colorspace_fragment>
}`;var ws="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);}";var ma=[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])],Ze=class extends pe.ShaderMaterial{constructor(e=new pe.Vector4){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new pe.Uniform(null),texelSize:new pe.Uniform(new pe.Vector4),scale:new pe.Uniform(1),kernel:new pe.Uniform(0)},blending:pe.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ds,vertexShader:ws}),this.setTexelSize(e.x,e.y),this.kernelSize=_.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return ma[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,e*.5,t*.5)}setSize(e,t){let r=1/e,i=1/t;this.uniforms.texelSize.value.set(r,i,r*.5,i*.5)}};var se=class extends E{constructor({kernelSize:e=_.MEDIUM,resolutionScale:t=.5,width:r=x.AUTO_SIZE,height:i=x.AUTO_SIZE,resolutionX:s=r,resolutionY:a=i}={}){super("KawaseBlurPass"),this.renderTargetA=new je.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let n=this.resolution=new x(this,s,a,t);n.addEventListener("change",u=>this.setSize(n.baseWidth,n.baseHeight)),this._blurMaterial=new Ze,this._blurMaterial.kernelSize=e,this.copyMaterial=new De}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,i,s){let a=this.scene,n=this.camera,u=this.renderTargetA,l=this.renderTargetB,c=this.blurMaterial,f=c.kernelSequence,h=t;this.fullscreenMaterial=c;for(let d=0,m=f.length;d<m;++d){let A=(d&1)===0?u:l;c.kernel=f[d],c.inputBuffer=h.texture,e.setRenderTarget(A),e.render(a,n),h=A}this.fullscreenMaterial=this.copyMaterial,this.copyMaterial.inputBuffer=h.texture,e.setRenderTarget(this.renderToScreen?null:r),e.render(a,n)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let i=r.width,s=r.height;this.renderTargetA.setSize(i,s),this.renderTargetB.setSize(i,s),this.blurMaterial.setSize(e,t)}initialize(e,t,r){r!==void 0&&(this.renderTargetA.texture.type=r,this.renderTargetB.texture.type=r,r!==je.UnsignedByteType?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):e!==null&&e.outputColorSpace===je.SRGBColorSpace&&(this.renderTargetA.texture.colorSpace=je.SRGBColorSpace,this.renderTargetB.texture.colorSpace=je.SRGBColorSpace))}static get AUTO_SIZE(){return x.AUTO_SIZE}};var Cr=p("three");var we=p("three");var Ts=`#include <common>
#ifdef FRAMEBUFFER_PRECISION_HIGH
uniform mediump sampler2D inputBuffer;
#else
uniform lowp sampler2D inputBuffer;
#endif
#ifdef RANGE
uniform vec2 range;
#elif defined(THRESHOLD)
uniform float threshold;uniform float smoothing;
#endif
varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);
#ifdef RANGE
float low=step(range.x,l);float high=step(l,range.y);l*=low*high;
#elif defined(THRESHOLD)
l=smoothstep(threshold,threshold+smoothing,l)*l;
#endif
#ifdef COLOR
gl_FragColor=vec4(texel.rgb*clamp(l,0.0,1.0),l);
#else
gl_FragColor=vec4(l);
#endif
}`;var zt=class extends we.ShaderMaterial{constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:we.REVISION.replace(/\D+/g,"")},uniforms:{inputBuffer:new we.Uniform(null),threshold:new we.Uniform(0),smoothing:new we.Uniform(1),range:new we.Uniform(null)},blending:we.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Ts,vertexShader:X}),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 this.defines.COLOR!==void 0}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 this.luminanceRange!==null}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){e!==null?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}};var ct=class extends E{constructor({renderTarget:e,luminanceRange:t,colorOutput:r,resolutionScale:i=1,width:s=x.AUTO_SIZE,height:a=x.AUTO_SIZE,resolutionX:n=s,resolutionY:u=a}={}){super("LuminancePass"),this.fullscreenMaterial=new zt(r,t),this.needsSwap=!1,this.renderTarget=e,this.renderTarget===void 0&&(this.renderTarget=new Cr.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="LuminancePass.Target");let l=this.resolution=new x(this,n,u,i);l.addEventListener("change",c=>this.setSize(l.baseWidth,l.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,r,i,s){let a=this.fullscreenMaterial;a.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){r!==void 0&&r!==Cr.UnsignedByteType&&(this.renderTarget.texture.type=r,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}};var ze=p("three");var ke=p("three");var Cs=`#ifdef FRAMEBUFFER_PRECISION_HIGH
uniform mediump sampler2D inputBuffer;
#else
uniform lowp sampler2D inputBuffer;
#endif
#define WEIGHT_INNER 0.125
#define WEIGHT_OUTER 0.0555555
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;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;
#include <colorspace_fragment>
}`;var Ss="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);}";var Qt=class extends ke.ShaderMaterial{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new ke.Uniform(null),texelSize:new ke.Uniform(new ke.Vector2)},blending:ke.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Cs,vertexShader:Ss})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}};var Te=p("three");var Bs=`#ifdef FRAMEBUFFER_PRECISION_HIGH
uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer;
#else
uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer;
#endif
uniform 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);
#include <colorspace_fragment>
}`;var Ms="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;vUv0=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);}";var Vt=class extends Te.ShaderMaterial{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new Te.Uniform(null),supportBuffer:new Te.Uniform(null),texelSize:new Te.Uniform(new Te.Vector2),radius:new Te.Uniform(.85)},blending:Te.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Bs,vertexShader:Ms})}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)}};var _t=class extends E{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new ze.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new Qt,this.upsamplingMaterial=new Vt,this.resolution=new ze.Vector2}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 i=t.clone();i.texture.name="Downsampling.Mipmap"+r,this.downsamplingMipmaps.push(i)}this.upsamplingMipmaps.push(t);for(let r=1,i=e-1;r<i;++r){let s=t.clone();s.texture.name="Upsampling.Mipmap"+r,this.upsamplingMipmaps.push(s)}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,i,s){let{scene:a,camera:n}=this,{downsamplingMaterial:u,upsamplingMaterial:l}=this,{downsamplingMipmaps:c,upsamplingMipmaps:f}=this,h=t;this.fullscreenMaterial=u;for(let d=0,m=c.length;d<m;++d){let A=c[d];u.setSize(h.width,h.height),u.inputBuffer=h.texture,e.setRenderTarget(A),e.render(a,n),h=A}this.fullscreenMaterial=l;for(let d=f.length-1;d>=0;--d){let m=f[d];l.setSize(h.width,h.height),l.inputBuffer=h.texture,l.supportBuffer=c[d].texture,e.setRenderTarget(m),e.render(a,n),h=m}}setSize(e,t){let r=this.resolution;r.set(e,t);let i=r.width,s=r.height;for(let a=0,n=this.downsamplingMipmaps.length;a<n;++a)i=Math.round(i*.5),s=Math.round(s*.5),this.downsamplingMipmaps[a].setSize(i,s),a<this.upsamplingMipmaps.length&&this.upsamplingMipmaps[a].setSize(i,s)}initialize(e,t,r){if(r!==void 0){let i=this.downsamplingMipmaps.concat(this.upsamplingMipmaps);for(let s of i)s.texture.type=r;if(r!==ze.UnsignedByteTy