vendor: 38,232 bytes, lines 1-88
1import{R as Y,r as C,j as q}from"./vendor-ui-CQkUJbRj.js";import{V as E,U as H,l as T,D as Be,m as Ue,n as we,o as ye,p as y,q as j,r as De,C as fe,N as X,s as Ce,t as L,E as te,u as pe,v as ve,S as ne,w as Ae,c as Pe,x as W,y as K,i as z,z as Ie,G,H as p,I as me,J as ge,K as Se,P as ze,Q as Oe,B as Ne,e as ae,X as le,Y as Fe,Z as He}from"./three.module-CPJbAaTl.js";import{H as Te,u as Ge,e as Le}from"./events-776716bd.esm-BSzfVcy_.js";let V;function ke(){var e;if(V!==void 0)return V;try{let t;const s=document.createElement("canvas");return V=!!(window.WebGL2RenderingContext&&(t=s.getContext("webgl2"))),t&&((e=t.getExtension("WEBGL_lose_context"))==null||e.loseContext()),V}catch{return V=!1}}/** 2 * postprocessing v6.38.2 build Mon Dec 22 2025 3 * https://github.com/pmndrs/postprocessing 4 * Copyright 2015-2025 Raoul van Rüschen 5 * @license Zlib 6 */var $=1/1e3,Ve=1e3,We=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<"u"&&document.hidden!==void 0&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return this._delta*$}get fixedDelta(){return this._fixedDelta*$}set fixedDelta(e){this._fixedDelta=e*Ve}get elapsed(){return this._elapsed*$}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}},Ke=(()=>{const e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),s=new Ne;return s.setAttribute("position",new ae(e,3)),s.setAttribute("uv",new ae(t,2)),s})(),b=class J{static get fullscreenGeometry(){return Ke}constructor(t="Pass",s=new ne,i=new Ae){this.name=t,this.renderer=null,this.scene=s,this.camera=i,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(t){if(this.rtt===t){const s=this.fullscreenMaterial;s!==null&&(s.needsUpdate=!0),this.rtt=!t}}set mainScene(t){}set mainCamera(t){}setRenderer(t){this.renderer=t}isEnabled(){return this.enabled}setEnabled(t){this.enabled=t}get fullscreenMaterial(){return this.screen!==null?this.screen.material:null}set fullscreenMaterial(t){let s=this.screen;s!==null?s.material=t:(s=new Pe(J.fullscreenGeometry,t),s.frustumCulled=!1,this.scene===null&&(this.scene=new ne),this.scene.add(s),this.screen=s)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(t){this.fullscreenMaterial=t}getDepthTexture(){return null}setDepthTexture(t,s=L){}render(t,s,i,r,n){throw new Error("Render method not implemented!")}setSize(t,s){}initialize(t,s,i){}dispose(){for(const t of Object.keys(this)){const s=this[t];(s instanceof y||s instanceof me||s instanceof ge||s instanceof J)&&this[t].dispose()}this.fullscreenMaterial!==null&&this.fullscreenMaterial.dispose()}},je=class extends b{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(e,t,s,i,r){const n=e.state.buffers.stencil;n.setLocked(!1),n.setTest(!1)}},Xe=`#ifdef COLOR_WRITE 7#include <common> 8#include <dithering_pars_fragment> 9#ifdef FRAMEBUFFER_PRECISION_HIGH 10uniform mediump sampler2D inputBuffer; 11#else 12uniform lowp sampler2D inputBuffer; 13#endif 14#endif 15#ifdef DEPTH_WRITE 16#include <packing> 17#ifdef GL_FRAGMENT_PRECISION_HIGH 18uniform highp sampler2D depthBuffer; 19#else 20uniform mediump sampler2D depthBuffer; 21#endif 22float readDepth(const in vec2 uv){ 23#if DEPTH_PACKING == 3201 24return unpackRGBAToDepth(texture2D(depthBuffer,uv)); 25#else 26return texture2D(depthBuffer,uv).r; 27#endif 28} 29#endif 30#ifdef USE_WEIGHTS 31uniform vec4 channelWeights; 32#endif 33uniform float opacity;varying vec2 vUv;void main(){ 34#ifdef COLOR_WRITE 35vec4 texel=texture2D(inputBuffer,vUv); 36#ifdef USE_WEIGHTS 37texel*=channelWeights; 38#endif 39gl_FragColor=opacity*texel; 40#ifdef COLOR_SPACE_CONVERSION 41#include <colorspace_fragment> 42#endif 43#include <dithering_fragment> 44#else 45gl_FragColor=vec4(0.0); 46#endif 47#ifdef DEPTH_WRITE 48gl_FragDepth=readDepth(vUv); 49#endif 50}`,xe="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",Ee=class extends z{constructor(){super({name:"CopyMaterial",defines:{COLOR_SPACE_CONVERSION:"1",DEPTH_PACKING:"0",COLOR_WRITE:"1"},uniforms:{inputBuffer:new p(null),depthBuffer:new p(null),channelWeights:new p(null),opacity:new p(1)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Xe,vertexShader:xe}),this.depthFunc=Oe}get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){const t=e!==null;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){const t=e!==null;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 this.defines.COLOR_SPACE_CONVERSION!==void 0}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){e!==null?(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}},Ze=class extends b{constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new Ee,this.needsSwap=!1,this.renderTarget=e,e===void 0&&(this.renderTarget=new y(1,1,{minFilter:j,magFilter:j,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,s,i,r){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,s){s!==void 0&&(this.renderTarget.texture.type=s,s!==H?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":e!==null&&e.outputColorSpace===T&&(this.renderTarget.texture.colorSpace=T))}},oe=new fe,be=class extends b{constructor(e=!0,t=!0,s=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=s,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,s){this.color=e,this.depth=t,this.stencil=s}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,s,i,r){const n=this.overrideClearColor,a=this.overrideClearAlpha,o=e.getClearAlpha(),l=n!==null,c=a>=0;l?(e.getClearColor(oe),e.setClearColor(n,c?a:o)):c&&e.setClearAlpha(a),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),l?e.setClearColor(oe,o):c&&e.setClearAlpha(o)}},$e=class extends b{constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new be(!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,s,i,r){const n=e.getContext(),a=e.state.buffers,o=this.scene,l=this.camera,c=this.clearPass,u=this.inverted?0:1,d=1-u;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,u,4294967295),a.stencil.setClear(d),a.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?c.render(e,null):(c.render(e,t),c.render(e,s))),this.renderToScreen?(e.setRenderTarget(null),e.render(o,l)):(e.setRenderTarget(t),e.render(o,l),e.setRenderTarget(s),e.render(o,l)),a.color.setLocked(!1),a.depth.setLocked(!1),a.stencil.setLocked(!1),a.stencil.setFunc(n.EQUAL,1,4294967295),a.stencil.setOp(n.KEEP,n.KEEP,n.KEEP),a.stencil.setLocked(!0)}},Qe=class{constructor(t=null,{depthBuffer:s=!0,stencilBuffer:i=!1,multisampling:r=0,frameBufferType:n}={}){this.renderer=null,this.inputBuffer=this.createBuffer(s,i,n,r),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new Ze,this.depthTexture=null,this.passes=[],this.timer=new We,this.autoRenderToScreen=!0,this.setRenderer(t)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(t){const s=this.inputBuffer,i=this.multisampling;i>0&&t>0?(this.inputBuffer.samples=t,this.outputBuffer.samples=t,this.inputBuffer.dispose(),this.outputBuffer.dispose()):i!==t&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(s.depthBuffer,s.stencilBuffer,s.texture.type,t),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(t){if(this.renderer=t,t!==null){const s=t.getSize(new E),i=t.getContext().getContextAttributes().alpha,r=this.inputBuffer.texture.type;r===H&&t.outputColorSpace===T&&(this.inputBuffer.texture.colorSpace=T,this.outputBuffer.texture.colorSpace=T,this.inputBuffer.dispose(),this.outputBuffer.dispose()),t.autoClear=!1,this.setSize(s.width,s.height);for(const n of this.passes)n.initialize(t,i,r)}}replaceRenderer(t,s=!0){const i=this.renderer,r=i.domElement.parentNode;return this.setRenderer(t),s&&r!==null&&(r.removeChild(i.domElement),r.appendChild(t.domElement)),i}createDepthTexture(){const t=this.depthTexture=new Be;return this.inputBuffer.depthTexture=t,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(t.format=Ue,t.type=we):t.type=ye,t}deleteDepthTexture(){if(this.depthTexture!==null){this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose();for(const t of this.passes)t.setDepthTexture(null)}}createBuffer(t,s,i,r){const n=this.renderer,a=n===null?new E:n.getDrawingBufferSize(new E),o={minFilter:j,magFilter:j,stencilBuffer:s,depthBuffer:t,type:i},l=new y(a.width,a.height,o);return r>0&&(l.samples=r),i===H&&n!==null&&n.outputColorSpace===T&&(l.texture.colorSpace=T),l.texture.name="EffectComposer.Buffer",l.texture.generateMipmaps=!1,l}setMainScene(t){for(const s of this.passes)s.mainScene=t}setMainCamera(t){for(const s of this.passes)s.mainCamera=t}addPass(t,s){const i=this.passes,r=this.renderer,n=r.getDrawingBufferSize(new E),a=r.getContext().getContextAttributes().alpha,o=this.inputBuffer.texture.type;if(t.setRenderer(r),t.setSize(n.width,n.height),t.initialize(r,a,o),this.autoRenderToScreen&&(i.length>0&&(i[i.length-1].renderToScreen=!1),t.renderToScreen&&(this.autoRenderToScreen=!1)),s!==void 0?i.splice(s,0,t):i.push(t),this.autoRenderToScreen&&(i[i.length-1].renderToScreen=!0),t.needsDepthTexture||this.depthTexture!==null)if(this.depthTexture===null){const l=this.createDepthTexture();for(t of i)t.setDepthTexture(l)}else t.setDepthTexture(this.depthTexture)}removePass(t){const s=this.passes,i=s.indexOf(t);if(i!==-1&&s.splice(i,1).length>0){if(this.depthTexture!==null){const a=(l,c)=>l||c.needsDepthTexture;s.reduce(a,!1)||(t.getDepthTexture()===this.depthTexture&&t.setDepthTexture(null),this.deleteDepthTexture())}this.autoRenderToScreen&&i===s.length&&(t.renderToScreen=!1,s.length>0&&(s[s.length-1].renderToScreen=!0))}}removeAllPasses(){const t=this.passes;this.deleteDepthTexture(),t.length>0&&(this.autoRenderToScreen&&(t[t.length-1].renderToScreen=!1),this.passes=[])}render(t){const s=this.renderer,i=this.copyPass;let r=this.inputBuffer,n=this.outputBuffer,a=!1,o,l,c;t===void 0&&(this.timer.update(),t=this.timer.getDelta());for(const u of this.passes)u.enabled&&(u.render(s,r,n,t,a),u.needsSwap&&(a&&(i.renderToScreen=u.renderToScreen,o=s.getContext(),l=s.state.buffers.stencil,l.setFunc(o.NOTEQUAL,1,4294967295),i.render(s,r,n,t,a),l.setFunc(o.EQUAL,1,4294967295)),c=r,r=n,n=c),u instanceof $e?a=!0:u instanceof je&&(a=!1))}setSize(t,s,i){const r=this.renderer,n=r.getSize(new E);(t===void 0||s===void 0)&&(t=n.width,s=n.height),(n.width!==t||n.height!==s)&&r.setSize(t,s,i);const a=r.getDrawingBufferSize(new E);this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height);for(const o of this.passes)o.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(const t of this.passes)t.dispose();this.passes=[],this.inputBuffer!==null&&this.inputBuffer.dispose(),this.outputBuffer!==null&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),b.fullscreenGeometry.dispose()}},A={NONE:0,DEPTH:1,CONVOLUTION:2},f={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"},Ye=class{constructor(){this.shaderParts=new Map([[f.FRAGMENT_HEAD,null],[f.FRAGMENT_MAIN_UV,null],[f.FRAGMENT_MAIN_IMAGE,null],[f.VERTEX_HEAD,null],[f.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=A.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=pe}},Q=!1,ce=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 s;if(t.material.flatShading)switch(t.material.side){case K:s=this.materialsFlatShadedDoubleSide;break;case W:s=this.materialsFlatShadedBackSide;break;default:s=this.materialsFlatShaded;break}else switch(t.material.side){case K:s=this.materialsDoubleSide;break;case W:s=this.materialsBackSide;break;default:s=this.materials;break}this.originalMaterials.set(t,t.material),t.isSkinnedMesh?t.material=s[2]:t.isInstancedMesh?t.material=s[1]:t.material=s[0],++this.meshCount}}}cloneMaterial(e){if(!(e instanceof z))return e.clone();const t=e.uniforms,s=new Map;for(const r in t){const n=t[r].value;n.isRenderTargetTexture&&(t[r].value=null,s.set(r,n))}const i=e.clone();for(const r of s)t[r[0]].value=r[1],i.uniforms[r[0]].value=r[1];return i}setMaterial(e){if(this.disposeMaterials(),this.material=e,e!==null){const t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(const s of t)s.uniforms=Object.assign({},e.uniforms),s.side=Ie;t[2].skinning=!0,this.materialsBackSide=t.map(s=>{const i=this.cloneMaterial(s);return i.uniforms=Object.assign({},e.uniforms),i.side=W,i}),this.materialsDoubleSide=t.map(s=>{const i=this.cloneMaterial(s);return i.uniforms=Object.assign({},e.uniforms),i.side=K,i}),this.materialsFlatShaded=t.map(s=>{const i=this.cloneMaterial(s);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i}),this.materialsFlatShadedBackSide=t.map(s=>{const i=this.cloneMaterial(s);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=W,i}),this.materialsFlatShadedDoubleSide=t.map(s=>{const i=this.cloneMaterial(s);return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=K,i})}}render(e,t,s){const i=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,Q){const r=this.originalMaterials;this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,s);for(const n of r)n[0].material=n[1];this.meshCount!==r.size&&r.clear()}else{const r=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,s),t.overrideMaterial=r}e.shadowMap.enabled=i}disposeMaterials(){if(this.material!==null){const e=this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);for(const t of e)t.dispose()}}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return Q}static set workaroundEnabled(e){Q=e}},I=-1,x=class extends te{constructor(e,t=I,s=I,i=1){super(),this.resizable=e,this.baseSize=new E(1,1),this.preferredSize=new E(t,s),this.target=this.preferredSize,this.s=i,this.effectiveSize=new E,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}updateEffectiveSize(){const e=this.baseSize,t=this.preferredSize,s=this.effectiveSize,i=this.scale;t.width!==I?s.width=t.width:t.height!==I?s.width=Math.round(t.height*(e.width/Math.max(e.height,1))):s.width=Math.round(e.width*i),t.height!==I?s.height=t.height:t.width!==I?s.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):s.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(I),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 I}},h={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},qe="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);}",Je="vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,src.a*opacity);}",et="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);}",tt="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);}",st="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);}",it="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);}",rt="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);}",nt="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);}",at="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);}",lt="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);}",ot="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);}",ct="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);}",ut="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);}",ht="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);}",dt="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);}",ft="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);}",pt="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);}",vt="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);}",mt="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);}",gt="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);}",St="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);}",Tt="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);}",xt="vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return mix(dst,src,opacity);}",Et="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);}",bt="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);}",Mt="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);}",Rt="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);}",_t="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);}",Bt="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);}",Ut="vec4 blend(const in vec4 dst,const in vec4 src,const in float opacity){return src;}",wt="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);}",yt="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);}",Dt=new Map([[h.ADD,qe],[h.ALPHA,Je],[h.AVERAGE,et],[h.COLOR,tt],[h.COLOR_BURN,st],[h.COLOR_DODGE,it],[h.DARKEN,rt],[h.DIFFERENCE,nt],[h.DIVIDE,at],[h.DST,null],[h.EXCLUSION,lt],[h.HARD_LIGHT,ot],[h.HARD_MIX,ct],[h.HUE,ut],[h.INVERT,ht],[h.INVERT_RGB,dt],[h.LIGHTEN,ft],[h.LINEAR_BURN,pt],[h.LINEAR_DODGE,vt],[h.LINEAR_LIGHT,mt],[h.LUMINOSITY,gt],[h.MULTIPLY,St],[h.NEGATION,Tt],[h.NORMAL,xt],[h.OVERLAY,Et],[h.PIN_LIGHT,bt],[h.REFLECT,Mt],[h.SATURATION,Rt],[h.SCREEN,_t],[h.SOFT_LIGHT,Bt],[h.SRC,Ut],[h.SUBTRACT,wt],[h.VIVID_LIGHT,yt]]),Ct=class extends te{constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new p(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 Dt.get(this.blendFunction)}},ee=class extends te{constructor(e,t,{attributes:s=A.NONE,blendFunction:i=h.NORMAL,defines:r=new Map,uniforms:n=new Map,extensions:a=null,vertexShader:o=null}={}){super(),this.name=e,this.renderer=null,this.attributes=s,this.fragmentShader=t,this.vertexShader=o,this.defines=r,this.uniforms=n,this.extensions=a,this.blendMode=new Ct(i),this.blendMode.addEventListener("change",l=>this.setChanged()),this._inputColorSpace=pe,this._outputColorSpace=ve}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=L){}update(e,t,s){}setSize(e,t){}initialize(e,t,s){}dispose(){for(const e of Object.keys(this)){const t=this[e];(t instanceof y||t instanceof me||t instanceof ge||t instanceof b)&&this[e].dispose()}}},se={MEDIUM:2,LARGE:3},At=`#ifdef FRAMEBUFFER_PRECISION_HIGH 51uniform mediump sampler2D inputBuffer; 52#else 53uniform lowp sampler2D inputBuffer; 54#endif 55varying 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; 56#include <colorspace_fragment> 57}`,Pt="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);}",It=[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])],zt=class extends z{constructor(e=new le){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new p(null),texelSize:new p(new le),scale:new p(1),kernel:new p(0)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:At,vertexShader:Pt}),this.setTexelSize(e.x,e.y),this.kernelSize=se.MEDIUM}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return It[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){const s=1/e,i=1/t;this.uniforms.texelSize.value.set(s,i,s*.5,i*.5)}},Ot=class extends b{constructor({kernelSize:e=se.MEDIUM,resolutionScale:t=.5,width:s=x.AUTO_SIZE,height:i=x.AUTO_SIZE,resolutionX:r=s,resolutionY:n=i}={}){super("KawaseBlurPass"),this.renderTargetA=new y(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";const a=this.resolution=new x(this,r,n,t);a.addEventListener("change",o=>this.setSize(a.baseWidth,a.baseHeight)),this._blurMaterial=new zt,this._blurMaterial.kernelSize=e,this.copyMaterial=new Ee}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,s,i,r){const n=this.scene,a=this.camera,o=this.renderTargetA,l=this.renderTargetB,c=this.blurMaterial,u=c.kernelSequence;let d=t;this.fullscreenMaterial=c;for(let S=0,m=u.length;S<m;++S){const U=S&1?l:o;c.kernel=u[S],c.inputBuffer=d.texture,e.setRenderTarget(U),e.render(n,a),d=U}this.fullscreenMaterial=this.copyMaterial,this.copyMaterial.inputBuffer=d.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(n,a)}setSize(e,t){const s=this.resolution;s.setBaseSize(e,t);const i=s.width,r=s.height;this.renderTargetA.setSize(i,r),this.renderTargetB.setSize(i,r),this.blurMaterial.setSize(e,t)}initialize(e,t,s){s!==void 0&&(this.renderTargetA.texture.type=s,this.renderTargetB.texture.type=s,s!==H?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):e!==null&&e.outputColorSpace===T&&(this.renderTargetA.texture.colorSpace=T,this.renderTargetB.texture.colorSpace=T))}static get AUTO_SIZE(){return x.AUTO_SIZE}},Nt=`#include <common> 58#ifdef FRAMEBUFFER_PRECISION_HIGH 59uniform mediump sampler2D inputBuffer; 60#else 61uniform lowp sampler2D inputBuffer; 62#endif 63#ifdef RANGE 64uniform vec2 range; 65#elif defined(THRESHOLD) 66uniform float threshold;uniform float smoothing; 67#endif 68varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0; 69#ifdef RANGE 70float low=step(range.x,l);float high=step(l,range.y);mask=low*high; 71#elif defined(THRESHOLD) 72mask=smoothstep(threshold,threshold+smoothing,l); 73#endif 74#ifdef COLOR 75gl_FragColor=texel*mask; 76#else 77gl_FragColor=vec4(l*mask); 78#endif 79}`,Ft=class extends z{constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:Se.replace(/\D+/g,"")},uniforms:{inputBuffer:new p(null),threshold:new p(0),smoothing:new p(1),range:new p(null)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Nt,vertexShader:xe}),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}},Ht=class extends b{constructor({renderTarget:e,luminanceRange:t,colorOutput:s,resolutionScale:i=1,width:r=x.AUTO_SIZE,height:n=x.AUTO_SIZE,resolutionX:a=r,resolutionY:o=n}={}){super("LuminancePass"),this.fullscreenMaterial=new Ft(s,t),this.needsSwap=!1,this.renderTarget=e,this.renderTarget===void 0&&(this.renderTarget=new y(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="LuminancePass.Target");const l=this.resolution=new x(this,a,o,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,s,i,r){const n=this.fullscreenMaterial;n.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){const s=this.resolution;s.setBaseSize(e,t),this.renderTarget.setSize(s.width,s.height)}initialize(e,t,s){s!==void 0&&s!==H&&(this.renderTarget.texture.type=s,this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Gt=`#ifdef FRAMEBUFFER_PRECISION_HIGH 80uniform mediump sampler2D inputBuffer; 81#else 82uniform lowp sampler2D inputBuffer; 83#endif 84#define WEIGHT_INNER 0.125 85#define WEIGHT_OUTER 0.0555555 86varying 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; 87#include <colorspace_fragment> 88}`,Lt="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;
88vUv00=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);}",kt=class extends z{constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new p(null),texelSize:new p(new E)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Gt,vertexShader:Lt})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Vt=`#ifdef FRAMEBUFFER_PRECISION_HIGH 89uniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer; 90#else 91uniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer; 92#endif 93uniform 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); 94#include <colorspace_fragment> 95}`,Wt="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);}",Kt=class extends z{constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new p(null),supportBuffer:new p(null),texelSize:new p(new E),radius:new p(.85)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:Vt,vertexShader:Wt})}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)}},jt=class extends b{constructor(){super("MipmapBlurPass"),this.needsSwap=!1,this.renderTarget=new y(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Upsampling.Mipmap0",this.downsamplingMipmaps=[],this.upsamplingMipmaps=[],this.downsamplingMaterial=new kt,this.upsamplingMaterial=new Kt,this.resolution=new E}get texture(){return this.renderTarget.texture}get levels(){return this.downsamplingMipmaps.length}set levels(e){if(this.levels!==e){const t=this.renderTarget;this.dispose(),this.downsamplingMipmaps=[],this.upsamplingMipmaps=[];for(let s=0;s<e;++s){const i=t.clone();i.texture.name="Downsampling.Mipmap"+s,this.downsamplingMipmaps.push(i)}this.upsamplingMipmaps.push(t);for(let s=1,i=e-1;s<i;++s){const r=t.clone();r.texture.name="Upsampling.Mipmap"+s,this.upsamplingMipmaps.push(r)}this.setSize(this.resolution.x,this.resolution.y)}}get radius(){return this.upsamplingMaterial.radius}set radius(e){this.upsamplingMaterial.radius=e}render(e,t,s,i,r){const{scene:n,camera:a}=this,{downsamplingMaterial:o,upsamplingMaterial:l}=this,{downsamplingMipmaps:c,upsamplingMipmaps:u}=this;let d=t;this.fullscreenMaterial=o;for(let S=0,m=c.length;S<m;++S){const U=c[S];o.setSize(d.width,d.height),o.inputBuffer=d.texture,e.setRenderTarget(U),e.render(n,a),d=U}this.fullscreenMaterial=l;for(let S=u.length-1;S>=0;--S){const m=u[S];l.setSize(d.width,d.height),l.inputBuffer=d.texture,l.supportBuffer=c[S].texture,e.setRenderTarget(m),e.render(n,a),d=m}}setSize(e,t){const s=this.resolution;s.set(e,t);let i=s.width,r=s.height;for(let n=0,a=this.downsamplingMipmaps.length;n<a;++n)i=Math.round(i*.5),r=Math.round(r*.5),this.downsamplingMipmaps[n].setSize(i,r),n<this.upsamplingMipmaps.length&&this.upsamplingMipmaps[n].setSize(i,r)}
95initialize(e,t,s){if(s!==void 0){const i=this.downsamplingMipmaps.concat(this.upsamplingMipmaps);for(const r of i)r.texture.type=s;if(s!==H)this.downsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.upsamplingMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1";else if(e!==null&&e.outputColorSpace===T)for(const r of i)r.texture.colorSpace=T}}dispose(){super.dispose();for(const e of this.downsamplingMipmaps.concat(this.upsamplingMipmaps))e.dispose()}},Xt=`#ifdef FRAMEBUFFER_PRECISION_HIGH 96uniform mediump sampler2D map; 97#else 98uniform lowp sampler2D map; 99#endif 100uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv)*intensity;}`,Zt=class extends ee{constructor({blendFunction:e=h.SCREEN,luminanceThreshold:t=1,luminanceSmoothing:s=.03,mipmapBlur:i=!0,intensity:r=1,radius:n=.85,levels:a=8,kernelSize:o=se.LARGE,resolutionScale:l=.5,width:c=x.AUTO_SIZE,height:u=x.AUTO_SIZE,resolutionX:d=c,resolutionY:S=u}={}){super("BloomEffect",Xt,{blendFunction:e,uniforms:new Map([["map",new p(null)],["intensity",new p(r)]])}),this.renderTarget=new y(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="Bloom.Target",this.blurPass=new Ot({kernelSize:o}),this.luminancePass=new Ht({colorOutput:!0}),this.luminanceMaterial.threshold=t,this.luminanceMaterial.smoothing=s,this.mipmapBlurPass=new jt,this.mipmapBlurPass.enabled=i,this.mipmapBlurPass.radius=n,this.mipmapBlurPass.levels=a,this.uniforms.get("map").value=i?this.mipmapBlurPass.texture:this.renderTarget.texture;const m=this.resolution=new x(this,d,S,l);m.addEventListener("change",U=>this.setSize(m.baseWidth,m.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,s){const i=this.renderTarget,r=this.luminancePass;r.enabled?(r.render(e,t),this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,r.renderTarget):this.blurPass.render(e,r.renderTarget,i)):this.mipmapBlurPass.enabled?this.mipmapBlurPass.render(e,t):this.blurPass.render(e,t,i)}setSize(e,t){const s=this.resolution;s.setBaseSize(e,t),this.renderTarget.setSize(s.width,s.height),this.blurPass.resolution.copy(s),this.luminancePass.setSize(e,t),this.mipmapBlurPass.setSize(e,t)}initialize(e,t,s){this.blurPass.initialize(e,t,s),this.luminancePass.initialize(e,t,s),this.mipmapBlurPass.initialize(e,t,s),s!==void 0&&(this.renderTarget.texture.type=s,e!==null&&e.outputColorSpace===T&&(this.renderTarget.texture.colorSpace=T))}},Me=class extends b{constructor(e,t,s=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new be,this.overrideMaterialManager=s===null?null:new ce(s),this.ignoreBackground=!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(){const e=this.overrideMaterialManager;return e!==null?e.material:null}set overrideMaterial(e){const t=this.overrideMaterialManager;e!==null?t!==null?t.setMaterial(e):this.overrideMaterialManager=new ce(e):t!==null&&(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}
vendor: 16,010 bytes, lines 100-178
100isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,s,i,r){const n=this.scene,a=this.camera,o=this.selection,l=a.layers.mask,c=n.background,u=e.shadowMap.autoUpdate,d=this.renderToScreen?null:t;o!==null&&a.layers.set(o.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||this.clearPass.overrideClearColor!==null)&&(n.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(d),this.overrideMaterialManager!==null?this.overrideMaterialManager.render(e,n,a):e.render(n,a),a.layers.mask=l,n.background=c,e.shadowMap.autoUpdate=u}},$t=`#include <packing> 101#ifdef GL_FRAGMENT_PRECISION_HIGH 102uniform highp sampler2D depthBuffer; 103#else 104uniform mediump sampler2D depthBuffer; 105#endif 106#ifdef DOWNSAMPLE_NORMALS 107uniform lowp sampler2D normalBuffer; 108#endif 109varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){ 110#if DEPTH_PACKING == 3201 111return unpackRGBAToDepth(texture2D(depthBuffer,uv)); 112#else 113return texture2D(depthBuffer,uv).r; 114#endif 115}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); 116#ifdef DOWNSAMPLE_NORMALS 117vec3 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; 118#else 119vec3 n[4];n[0]=vec3(0.0);n[1]=vec3(0.0);n[2]=vec3(0.0);n[3]=vec3(0.0); 120#endif 121gl_FragColor=vec4(n[index],d[index]);}`,Qt="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);}",Yt=class extends z{constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new p(null),normalBuffer:new p(null),texelSize:new p(new E)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:$t,vertexShader:Qt})}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=L){this.depthBuffer=e,this.depthPacking=t}set normalBuffer(e){this.uniforms.normalBuffer.value=e,e!==null?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)}},qt=class extends b{constructor({normalBuffer:e=null,resolutionScale:t=.5,width:s=x.AUTO_SIZE,height:i=x.AUTO_SIZE,resolutionX:r=s,resolutionY:n=i}={}){super("DepthDownsamplingPass");const a=new Yt;a.normalBuffer=e,this.fullscreenMaterial=a,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new y(1,1,{minFilter:X,magFilter:X,depthBuffer:!1,type:Ce}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;const o=this.resolution=new x(this,r,n,t);o.addEventListener("change",l=>this.setSize(o.baseWidth,o.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e,t=L){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,s,i,r){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){const s=this.resolution;s.setBaseSize(e,t),this.renderTarget.setSize(s.width,s.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,s){const i=e.getContext();if(!(i.getExtension("EXT_color_buffer_float")||i.getExtension("EXT_color_buffer_half_float")))throw new Error("Rendering to float texture is not supported.")}},Jt=`#include <common> 122#include <packing> 123#include <dithering_pars_fragment> 124#define packFloatToRGBA(v) packDepthToRGBA(v) 125#define unpackRGBAToFloat(v) unpackRGBAToDepth(v) 126#ifdef FRAMEBUFFER_PRECISION_HIGH 127uniform mediump sampler2D inputBuffer; 128#else 129uniform lowp sampler2D inputBuffer; 130#endif 131#if DEPTH_PACKING == 3201 132uniform lowp sampler2D depthBuffer; 133#elif defined(GL_FRAGMENT_PRECISION_HIGH) 134uniform highp sampler2D depthBuffer; 135#else 136uniform mediump sampler2D depthBuffer; 137#endif 138uniform 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){ 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;}float getViewZ(const in float depth){ 150#ifdef PERSPECTIVE_CAMERA 151return perspectiveDepthToViewZ(depth,cameraNear,cameraFar); 152#else 153return orthographicDepthToViewZ(depth,cameraNear,cameraFar); 154#endif 155}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; 156#ifdef ENCODE_OUTPUT 157#include <colorspace_fragment> 158#endif 159#include <dithering_fragment> 160}`,es="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);}",ts=class extends z{constructor(e,t,s,i,r=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:Se.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new p(null),depthBuffer:new p(null),resolution:new p(new E),texelSize:new p(new E),cameraNear:new p(.3),cameraFar:new p(1e3),aspect:new p(1),time:new p(0)},blending:G,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:r}),e&&this.setShaderParts(e),t&&this.setDefines(t),s&&this.setUniforms(s),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=L){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=Jt.replace(f.FRAGMENT_HEAD,e.get(f.FRAGMENT_HEAD)||"").replace(f.FRAGMENT_MAIN_UV,e.get(f.FRAGMENT_MAIN_UV)||"").replace(f.FRAGMENT_MAIN_IMAGE,e.get(f.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader=es.replace(f.VERTEX_HEAD,e.get(f.VERTEX_HEAD)||"").replace(f.VERTEX_MAIN_SUPPORT,e.get(f.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(e){for(const t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(const t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){this.extensions={};for(const t of e)this.extensions[t]=!0;return this}get encodeOutput(){return this.defines.ENCODE_OUTPUT!==void 0}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 ze?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){const s=this.uniforms;s.resolution.value.set(e,t),s.texelSize.value.set(1/e,1/t),s.aspect.value=e/t}static get Section(){return f}};function ue(e,t,s){for(const i of t){const r="$1"+e+i.charAt(0).toUpperCase()+i.slice(1),n=new RegExp("([^\\.])(\\b"+i+"\\b)","g");for(const a of s.entries())a[1]!==null&&s.set(a[0],a[1].replace(n,r))}}function ss(e,t,s){let i=t.getFragmentShader(),r=t.getVertexShader();const n=i!==void 0&&/mainImage/.test(i),a=i!==void 0&&/mainUv/.test(i);if(s.attributes|=t.getAttributes(),i===void 0)throw new Error(`Missing fragment shader (${t.name})`);if(a&&s.attributes&A.CONVOLUTION)throw new Error(`Effects that transform UVs are incompatible with convolution effects (${t.name})`);if(!n&&!a)throw new Error(`Could not find mainImage or mainUv function (${t.name})`);{const o=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,l=s.shaderParts;let c=l.get(f.FRAGMENT_HEAD)||"",u=l.get(f.FRAGMENT_MAIN_UV)||"",d=l.get(f.FRAGMENT_MAIN_IMAGE)||"",S=l.get(f.VERTEX_HEAD)||"",m=l.get(f.VERTEX_MAIN_SUPPORT)||"";const U=new Set,M=new Set;if(a&&(u+=` ${e}MainUv(UV); 161`,s.uvTransformation=!0),r!==null&&/mainSupport/.test(r)){const g=/mainSupport *\([\w\s]*?uv\s*?\)/.test(r);m+=` ${e}MainSupport(`,m+=g?`vUv); 162`:`); 163`;for(const v of r.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g))for(const R of v[1].split(/\s*,\s*/))s.varyings.add(R),U.add(R),M.add(R);for(const v of r.matchAll(o))M.add(v[1])}for(const g of i.matchAll(o))M.add(g[1]);for(const g of t.defines.keys())M.add(g.replace(/\([\w\s,]*\)/g,""));for(const g of t.uniforms.keys())M.add(g);M.delete("while"),M.delete("for"),M.delete("if"),t.uniforms.forEach((g,v)=>s.uniforms.set(e+v.charAt(0).toUpperCase()+v.slice(1),g)),t.defines.forEach((g,v)=>s.defines.set(e+v.charAt(0).toUpperCase()+v.slice(1),g));const O=new Map([["fragment",i],["vertex",r]]);ue(e,M,s.defines),ue(e,M,O),i=O.get("fragment"),r=O.get("vertex");const w=t.blendMode;if(s.blendModes.set(w.blendFunction,w),n){t.inputColorSpace!==null&&t.inputColorSpace!==s.colorSpace&&(d+=t.inputColorSpace===T?`color0 = sRGBTransferOETF(color0); 164 `:`color0 = sRGBToLinear(color0); 165 `),t.outputColorSpace!==ve?s.colorSpace=t.outputColorSpace:t.inputColorSpace!==null&&(s.colorSpace=t.inputColorSpace);const g=/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/;d+=`${e}MainImage(color0, UV, `,s.attributes&A.DEPTH&&g.test(i)&&(d+="depth, ",s.readDepth=!0),d+=`color1); 166 `;const v=e+"BlendOpacity";s.uniforms.set(v,w.opacity),d+=`color0 = blend${w.blendFunction}(color0, color1, ${v}); 167 168 `,c+=`uniform float ${v}; 169 170`}if(c+=i+` 171`,r!==null&&(S+=r+` 172`),l.set(f.FRAGMENT_HEAD,c),l.set(f.FRAGMENT_MAIN_UV,u),l.set(f.FRAGMENT_MAIN_IMAGE,d),l.set(f.VERTEX_HEAD,S),l.set(f.VERTEX_MAIN_SUPPORT,m),t.extensions!==null)for(const g of t.extensions)s.extensions.add(g)}}var is=class extends b{constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new ts(null,null,null,e),this.listener=s=>this.handleEvent(s),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=Number.POSITIVE_INFINITY,this.timeScale=1}set mainScene(e){for(const t of this.effects)t.mainScene=e}set mainCamera(e){this.fullscreenMaterial.copyCameraSettings(e);for(const t of 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){const t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(const t of this.effects)t.removeEventListener("change",this.listener);this.effects=e.sort((t,s)=>s.attributes-t.attributes);for(const t of this.effects)t.addEventListener("change",this.listener)}updateMaterial(){const e=new Ye;let t=0;for(const a of this.effects)if(a.blendMode.blendFunction===h.DST)e.attributes|=a.getAttributes()&A.DEPTH;else{if(e.attributes&a.getAttributes()&A.CONVOLUTION)throw new Error(`Convolution effects cannot be merged (${a.name})`);ss("e"+t++,a,e)}let s=e.shaderParts.get(f.FRAGMENT_HEAD),i=e.shaderParts.get(f.FRAGMENT_MAIN_IMAGE),r=e.shaderParts.get(f.FRAGMENT_MAIN_UV);const n=/\bblend\b/g;for(const a of e.blendModes.values())s+=a.getShaderCode().replace(n,`blend${a.blendFunction}`)+` 173`;e.attributes&A.DEPTH?(e.readDepth&&(i=`float depth = readDepth(UV); 174 175 `+i),this.needsDepthTexture=this.getDepthTexture()===null):this.needsDepthTexture=!1,e.colorSpace===T&&(i+=`color0 = sRGBToLinear(color0); 176 `),e.uvTransformation?(r=`vec2 transformedUv = vUv; 177`+r,e.defines.set("UV","transformedUv")):e.defines.set("UV","vUv"),e.shaderParts.set(f.FRAGMENT_HEAD,s),e.shaderParts.set(f.FRAGMENT_MAIN_IMAGE,i),e.shaderParts.set(f.FRAGMENT_MAIN_UV,r);for(const[a,o]of e.shaderParts)o!==null&&e.shaderParts.set(a,o.trim().replace(/^#/,` 178#`));this.skipRendering=t===0,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=L){this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t;for(const s of this.effects)s.setDepthTexture(e,t)}render(e,t,s,i,r){for(const n of this.effects)n.update(e,t,i);if(!this.skipRendering||this.renderToScreen){const n=this.fullscreenMaterial;n.inputBuffer=t.texture,n.time+=i*this.timeScale,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}setSize(e,t){this.fullscreenMaterial.setSize(e,t);for(const s of this.effects)s.setSize(e,t)}initialize(e,t,s){this.renderer=e;for(const i of this.effects)i.initialize(e,t,s);this.updateMaterial(),s!==void 0&&s!==H&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){super.dispose();for(const e of this.effects)e.removeEventListener("change",this.listener),e.dispose()}handleEvent(e){switch(e.type){case"change":this.recompile();break}}},rs=class extends b{constructor(e,t,{renderTarget:s,resolutionScale:i=1,width:r=x.AUTO_SIZE,height:n=x.AUTO_SIZE,resolutionX:a=r,resolutionY:o=n}={}){super("NormalPass"),this.needsSwap=!1,this.renderPass=new Me(e,t,new De);const l=this.renderPass;
178l.ignoreBackground=!0,l.skipShadowMapUpdate=!0;const c=l.getClearPass();c.overrideClearColor=new fe(7829503),c.overrideClearAlpha=1,this.renderTarget=s,this.renderTarget===void 0&&(this.renderTarget=new y(1,1,{minFilter:X,magFilter:X}),this.renderTarget.texture.name="NormalPass.Target");const u=this.resolution=new x(this,a,o,i);u.addEventListener("change",d=>this.setSize(u.baseWidth,u.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,s,i,r){const n=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,n,n)}setSize(e,t){const s=this.resolution;s.setBaseSize(e,t),this.renderTarget.setSize(s.width,s.height)}};const ns=C.createContext(null),he=e=>(e.getAttributes()&A.CONVOLUTION)===A.CONVOLUTION,ds=Y.memo(C.forwardRef(({children:e,camera:t,scene:s,resolutionScale:i,enabled:r=!0,renderPriority:n=1,autoClear:a=!0,depthBuffer:o,enableNormalPass:l,stencilBuffer:c,multisampling:u=8,frameBufferType:d=Fe},S)=>{const{gl:m,scene:U,camera:M,size:O}=Te(),w=s||U,g=t||M,[v,R,N]=C.useMemo(()=>{const P=ke(),_=new Qe(m,{depthBuffer:o,stencilBuffer:c,multisampling:u>0&&P?u:0,frameBufferType:d});_.addPass(new Me(w,g));let D=null,B=null;return l&&(B=new rs(w,g),B.enabled=!1,_.addPass(B),i!==void 0&&P&&(D=new qt({normalBuffer:B.texture,resolutionScale:i}),D.enabled=!1,_.addPass(D))),[_,B,D]},[g,m,o,c,u,d,w,l,i]);C.useEffect(()=>v==null?void 0:v.setSize(O.width,O.height),[v,O]),Ge((P,_)=>{if(r){const D=m.autoClear;m.autoClear=a,c&&!a&&m.clearStencil(),v.render(_),m.autoClear=D}},r?n:0);const ie=C.useRef(null);C.useLayoutEffect(()=>{var P;const _=[],D=(P=ie.current)==null?void 0:P.__r3f;if(D&&v){const B=D.objects;for(let F=0;F<B.length;F++){const k=B[F];if(k instanceof ee){const re=[k];if(!he(k)){let Z=null;for(;(Z=B[F+1])instanceof ee&&!he(Z);)re.push(Z),F++}const _e=new is(g,...re);_.push(_e)}else k instanceof b&&_.push(k)}for(const F of _)v==null||v.addPass(F);R&&(R.enabled=!0),N&&(N.enabled=!0)}return()=>{for(const B of _)v==null||v.removePass(B);R&&(R.enabled=!1),N&&(N.enabled=!1)}},[v,e,g,R,N]),C.useEffect(()=>{const P=m.toneMapping;return m.toneMapping=He,()=>{m.toneMapping=P}},[m]);const Re=C.useMemo(()=>({composer:v,normalPass:R,downSamplingPass:N,resolutionScale:i,camera:g,scene:w}),[v,R,N,i,g,w]);return C.useImperativeHandle(S,()=>v,[v]),q.jsx(ns.Provider,{value:Re,children:q.jsx("group",{ref:ie,children:e})})}));let as=0;const de=new WeakMap,ls=(e,t)=>Y.forwardRef(function({blendFunction:i=t==null?void 0:t.blendFunction,opacity:r=t==null?void 0:t.opacity,...n},a){let o=de.get(e);if(!o){const u=`@react-three/postprocessing/${e.name}-${as++}`;Le({[u]:e}),de.set(e,o=u)}const l=Te(u=>u.camera),c=Y.useMemo(()=>{var u,d;return[...(u=t==null?void 0:t.args)!=null?u:[],...(d=n.args)!=null?d:[{...t,...n}]]},[JSON.stringify(n)]);return q.jsx(o,{camera:l,"blendMode-blendFunction":i,"blendMode-opacity-value":r,...n,ref:a,args:c})}),fs=ls(Zt,{blendFunction:h.ADD});export{fs as B,ds as E};
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.