@tresjs/post-processing 2.3.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v2.3.0
3
+ * version: v2.3.1
4
4
  * (c) 2025
5
5
  * description: Post-processing library for TresJS
6
6
  * author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
7
7
  */
8
- (function(d,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("vue"),require("postprocessing"),require("@tresjs/core"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","postprocessing","@tresjs/core","three","@vueuse/core"],r):(d=typeof globalThis<"u"?globalThis:d||self,r(d["tres-post-processing"]={},d.Vue,d.Postprocessing,d.TresjsCore,d.Three,d.VueUseCore))})(this,function(d,r,u,x,s,N){"use strict";class z{static isWebGL2Available(){try{const e=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&e.getContext("webgl2"))}catch{return!1}}static isColorSpaceAvailable(e){try{const t=document.createElement("canvas"),o=window.WebGL2RenderingContext&&t.getContext("webgl2");return o.drawingBufferColorSpace=e,o.drawingBufferColorSpace===e}catch{return!1}}static getWebGL2ErrorMessage(){return this.getErrorMessage(2)}static getErrorMessage(e){const t={1:"WebGL",2:"WebGL 2"},o={1:window.WebGLRenderingContext,2:window.WebGL2RenderingContext};let a='Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';const n=document.createElement("div");return n.id="webglmessage",n.style.fontFamily="monospace",n.style.fontSize="13px",n.style.fontWeight="normal",n.style.textAlign="center",n.style.background="#fff",n.style.color="#000",n.style.padding="1.5em",n.style.width="400px",n.style.margin="5em auto 0",o[e]?a=a.replace("$0","graphics card"):a=a.replace("$0","browser"),a=a.replace("$1",t[e]),n.innerHTML=a,n}static isWebGLAvailable(){console.warn("isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.");try{const e=document.createElement("canvas");return!!(window.WebGLRenderingContext&&(e.getContext("webgl")||e.getContext("experimental-webgl")))}catch{return!1}}static getWebGLErrorMessage(){return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."),this.getErrorMessage(1)}}const R=Symbol("effectComposerPmndrs"),J=r.defineComponent({__name:"EffectComposerPmndrs",props:{enabled:{type:Boolean,default:!0},depthBuffer:{type:Boolean,default:void 0},disableNormalPass:{type:Boolean,default:!1},stencilBuffer:{type:Boolean,default:void 0},resolutionScale:{},autoClear:{type:Boolean,default:!0},multisampling:{default:0},frameBufferType:{default:s.HalfFloatType}},emits:["render"],setup(i,{expose:e,emit:t}){const o=i,a=t,{scene:n,camera:l,renderer:c,sizes:f,render:p}=x.useTresContext(),g=r.shallowRef(null);let b=null,h=null;r.provide(R,g),e({composer:g});const S=()=>{g.value&&(h=new u.NormalPass(n.value,l.value),h.enabled=!1,g.value.addPass(h),o.resolutionScale!==void 0&&z.isWebGL2Available()&&(b=new u.DepthDownsamplingPass({normalBuffer:h.texture,resolutionScale:o.resolutionScale}),b.enabled=!1,g.value.addPass(b)))},y=r.computed(()=>{const w=new u.EffectComposer,D={depthBuffer:o.depthBuffer!==void 0?o.depthBuffer:w.inputBuffer.depthBuffer,stencilBuffer:o.stencilBuffer!==void 0?o.stencilBuffer:w.inputBuffer.stencilBuffer,multisampling:z.isWebGL2Available()?o.multisampling!==void 0?o.multisampling:w.multisampling:0,frameBufferType:o.frameBufferType!==void 0?o.frameBufferType:s.HalfFloatType};return w.dispose(),D}),K=()=>{var w;!c.value&&!n.value&&!l.value||((w=g.value)==null||w.dispose(),g.value=new u.EffectComposer(c.value,y.value),g.value.addPass(new u.RenderPass(n.value,l.value)),o.disableNormalPass||S())};r.watch([c,n,l,()=>o.disableNormalPass],()=>{!f.width.value||!f.height.value||K()}),r.watch(()=>[f.width.value,f.height.value],([w,D])=>{!w&&!D||(g.value?g.value.setSize(w,D):K())},{immediate:!0});const{render:Ye}=x.useLoop();return Ye(()=>{if(o.enabled&&c.value&&g.value&&f.width.value&&f.height.value&&p.frames.value>0){const w=c.value.autoClear;c.value.autoClear=o.autoClear,o.stencilBuffer&&!o.autoClear&&c.value.clearStencil(),g.value.render(),a("render",g.value),c.value.autoClear=w}p.frames.value=p.mode.value==="always"?1:Math.max(0,p.frames.value-1)}),r.onUnmounted(()=>{var w;(w=g.value)==null||w.dispose()}),(w,D)=>r.renderSlot(w.$slots,"default")}}),m=(i,e,t)=>{const o=r.inject(R),a=r.shallowRef(null),n=r.shallowRef(null),{scene:l,camera:c,invalidate:f}=x.useTresContext();r.watch(e,()=>f());const p=()=>{var h,S,y;a.value&&((h=o==null?void 0:o.value)==null||h.removePass(a.value)),(S=n.value)==null||S.dispose(),(y=a.value)==null||y.dispose()},g=h=>{!c.value||!(o!=null&&o.value)||!l.value||(n.value=i(),a.value=new u.EffectPass(c.value,n.value),o.value.addPass(a.value,h))};t&&r.watch(()=>t.map(h=>e[h]),()=>{var S;if(!(o!=null&&o.value))return;const h=(S=o.value)==null?void 0:S.passes.findIndex(y=>y===a.value);~h&&(p(),g(h))}),r.watchEffect(()=>{!c.value||!(n!=null&&n.value)||(n.value.mainCamera=c.value)});const b=r.watchEffect(()=>{!c.value||!(o!=null&&o.value)||!l.value||(r.nextTick(()=>b()),!n.value&&g())});return r.onUnmounted(()=>{p()}),{pass:a,effect:n}},U=/([^[.\]])+/g,Z=(i,e)=>{if(!e)return;const t=Array.isArray(e)?e:e.match(U);return t==null?void 0:t.reduce((o,a)=>o&&o[a],i)},W=(i,e,t)=>{const o=Array.isArray(e)?e:e.match(U);o&&o.reduce((a,n,l)=>(a[n]===void 0&&(a[n]={}),l===o.length-1&&(a[n]=t),a[n]),i)},_=(i,e)=>{const t={...i};return e.forEach(o=>delete t[o]),t},E=(i,e,t,o,a={})=>r.watch(i,n=>{var l;if(e.value)if(n===void 0){const c=o();W(e.value,t,Z(c,t)),(l=c.dispose)==null||l.call(c)}else W(e.value,t,i())},a),v=(i,e,t)=>i.map(([o,a])=>E(o,e,a,t)),O=(i,e,t)=>Object.keys(i).map(o=>E(()=>i[o],e,o,t)),$=r.defineComponent({__name:"BloomPmndrs",props:{blendFunction:{},intensity:{},kernelSize:{},luminanceThreshold:{},luminanceSmoothing:{},mipmapBlur:{type:Boolean,default:void 0}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.BloomEffect(t),t,["mipmapBlur"]);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.intensity,"intensity"],[()=>t.kernelSize,"kernelSize"],[()=>t.luminanceSmoothing,"luminanceMaterial.smoothing"],[()=>t.luminanceThreshold,"luminanceMaterial.threshold"]],a,()=>new u.BloomEffect),()=>{}}}),ee=r.defineComponent({__name:"DepthOfFieldPmndrs",props:{blendFunction:{},worldFocusDistance:{},worldFocusRange:{},focusDistance:{},focusRange:{},bokehScale:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),{pass:a,effect:n}=m(()=>new u.DepthOfFieldEffect(o.value,t),t);return e({pass:a,effect:n}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.worldFocusDistance,"circleOfConfusionMaterial.worldFocusDistance"],[()=>t.focusDistance,"circleOfConfusionMaterial.focusDistance"],[()=>t.worldFocusRange,"circleOfConfusionMaterial.worldFocusRange"],[()=>t.focusRange,"circleOfConfusionMaterial.focusRange"],[()=>t.bokehScale,"bokehScale"],[()=>t.resolutionScale,"blurPass.resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"]],n,()=>new u.DepthOfFieldEffect),()=>{}}}),te=r.defineComponent({__name:"GlitchPmndrs",props:{blendFunction:{},delay:{},duration:{},strength:{},mode:{},active:{type:Boolean},ratio:{},columns:{},chromaticAberrationOffset:{},perturbationMap:{},dtSize:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.GlitchEffect(t),t,["dtSize"]);e({pass:o,effect:a});const{onBeforeRender:n}=x.useLoop();return n(({invalidate:l})=>l()),r.watchEffect(()=>{const l=()=>{if(t.mode!==void 0)return t.active===!1?u.GlitchMode.DISABLED:t.mode;const c=new u.GlitchEffect,f=c.mode;return c.dispose(),f};a.value&&(a.value.mode=l())}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.GlitchEffect),O(_(t,["active","blendFunction"]),a,()=>new u.GlitchEffect),()=>{}}}),oe=r.defineComponent({__name:"NoisePmndrs",props:{premultiply:{type:Boolean,default:void 0},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.NoiseEffect(t),t);e({pass:o,effect:a});const{onBeforeRender:n}=x.useLoop();return n(({invalidate:l})=>l()),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.premultiply,"premultiply"]],a,()=>new u.NoiseEffect),()=>{}}}),ae=r.defineComponent({__name:"OutlinePmndrs",props:{outlinedObjects:{},blur:{type:Boolean,default:void 0},xRay:{type:Boolean,default:void 0},kernelSize:{},pulseSpeed:{},resolutionX:{},resolutionY:{},edgeStrength:{},patternScale:{},multisampling:{},blendFunction:{},patternTexture:{},resolutionScale:{},hiddenEdgeColor:{},visibleEdgeColor:{}},setup(i,{expose:e}){const t=i,o=p=>p!==void 0?x.normalizeColor(p).getHex():void 0,{camera:a,scene:n}=x.useTresContext(),{pass:l,effect:c}=m(()=>new u.OutlineEffect(n.value,a.value,{blur:t.blur,xRay:t.xRay,kernelSize:t.kernelSize,pulseSpeed:t.pulseSpeed,resolutionX:t.resolutionX,resolutionY:t.resolutionY,patternScale:t.patternScale,edgeStrength:t.edgeStrength,blendFunction:t.blendFunction,multisampling:t.multisampling,patternTexture:t.patternTexture,resolutionScale:t.resolutionScale,hiddenEdgeColor:o(t.hiddenEdgeColor),visibleEdgeColor:o(t.visibleEdgeColor)}),t);e({pass:l,effect:c}),r.watch([()=>t.outlinedObjects,c],()=>{var p;(p=c.value)==null||p.selection.set(t.outlinedObjects||[])},{immediate:!0});const f=r.computed(()=>({hiddenEdgeColor:t.hiddenEdgeColor?x.normalizeColor(t.hiddenEdgeColor):void 0,visibleEdgeColor:t.visibleEdgeColor?x.normalizeColor(t.visibleEdgeColor):void 0}));return v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.blur,"blur"],[()=>t.xRay,"xRay"],[()=>t.pulseSpeed,"pulseSpeed"],[()=>t.kernelSize,"kernelSize"],[()=>t.edgeStrength,"edgeStrength"],[()=>t.patternScale,"patternScale"],[()=>t.multisampling,"multisampling"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"],[()=>t.patternTexture,"patternTexture"],[()=>t.resolutionScale,"resolution.scale"],[()=>f.value.hiddenEdgeColor,"hiddenEdgeColor"],[()=>f.value.visibleEdgeColor,"visibleEdgeColor"]],c,()=>new u.OutlineEffect),()=>{}}}),ne=r.defineComponent({__name:"PixelationPmndrs",props:{granularity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.PixelationEffect(t.granularity),t);return e({pass:o,effect:a}),O(t,a,()=>new u.PixelationEffect),()=>{}}}),se=r.defineComponent({__name:"VignettePmndrs",props:{technique:{},blendFunction:{},offset:{},darkness:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.VignetteEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.darkness,"darkness"],[()=>t.technique,"technique"]],a,()=>new u.VignetteEffect),()=>{}}});class G extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,amount:t=.15,offset:o=new s.Vector2(.5,.5)}={}){super("BarrelBlurEffect",`
8
+ (function(d,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("vue"),require("postprocessing"),require("@tresjs/core"),require("three"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["exports","vue","postprocessing","@tresjs/core","three","@vueuse/core"],r):(d=typeof globalThis<"u"?globalThis:d||self,r(d["tres-post-processing"]={},d.Vue,d.Postprocessing,d.TresjsCore,d.Three,d.VueUseCore))})(this,function(d,r,u,x,s,N){"use strict";class z{static isWebGL2Available(){try{const e=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&e.getContext("webgl2"))}catch{return!1}}static isColorSpaceAvailable(e){try{const t=document.createElement("canvas"),o=window.WebGL2RenderingContext&&t.getContext("webgl2");return o.drawingBufferColorSpace=e,o.drawingBufferColorSpace===e}catch{return!1}}static getWebGL2ErrorMessage(){return this.getErrorMessage(2)}static getErrorMessage(e){const t={1:"WebGL",2:"WebGL 2"},o={1:window.WebGLRenderingContext,2:window.WebGL2RenderingContext};let a='Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';const n=document.createElement("div");return n.id="webglmessage",n.style.fontFamily="monospace",n.style.fontSize="13px",n.style.fontWeight="normal",n.style.textAlign="center",n.style.background="#fff",n.style.color="#000",n.style.padding="1.5em",n.style.width="400px",n.style.margin="5em auto 0",o[e]?a=a.replace("$0","graphics card"):a=a.replace("$0","browser"),a=a.replace("$1",t[e]),n.innerHTML=a,n}static isWebGLAvailable(){console.warn("isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.");try{const e=document.createElement("canvas");return!!(window.WebGLRenderingContext&&(e.getContext("webgl")||e.getContext("experimental-webgl")))}catch{return!1}}static getWebGLErrorMessage(){return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."),this.getErrorMessage(1)}}const R=Symbol("effectComposerPmndrs"),J=r.defineComponent({__name:"EffectComposerPmndrs",props:{enabled:{type:Boolean,default:!0},depthBuffer:{type:Boolean,default:void 0},disableNormalPass:{type:Boolean,default:!1},stencilBuffer:{type:Boolean,default:void 0},resolutionScale:{},autoClear:{type:Boolean,default:!0},multisampling:{default:0},frameBufferType:{default:s.HalfFloatType}},emits:["render"],setup(i,{expose:e,emit:t}){const o=i,a=t,{scene:n,camera:l,renderer:c,sizes:f,render:m}=x.useTresContext(),g=r.shallowRef(null);let b=null,h=null;r.provide(R,g),e({composer:g});const S=()=>{g.value&&(h=new u.NormalPass(n.value,l.value),h.enabled=!1,g.value.addPass(h),o.resolutionScale!==void 0&&z.isWebGL2Available()&&(b=new u.DepthDownsamplingPass({normalBuffer:h.texture,resolutionScale:o.resolutionScale}),b.enabled=!1,g.value.addPass(b)))},y=r.computed(()=>{const w=new u.EffectComposer,P={depthBuffer:o.depthBuffer!==void 0?o.depthBuffer:w.inputBuffer.depthBuffer,stencilBuffer:o.stencilBuffer!==void 0?o.stencilBuffer:w.inputBuffer.stencilBuffer,multisampling:z.isWebGL2Available()?o.multisampling!==void 0?o.multisampling:w.multisampling:0,frameBufferType:o.frameBufferType!==void 0?o.frameBufferType:s.HalfFloatType};return w.dispose(),P}),K=()=>{var w;!c.value&&!n.value&&!l.value||((w=g.value)==null||w.dispose(),g.value=new u.EffectComposer(c.value,y.value),g.value.addPass(new u.RenderPass(n.value,l.value)),o.disableNormalPass||S())};r.watch([c,n,l,()=>o.disableNormalPass],()=>{!f.width.value||!f.height.value||K()}),r.watch(()=>[f.width.value,f.height.value],([w,P])=>{!w&&!P||(g.value?g.value.setSize(w,P):K())},{immediate:!0});const{render:Ye}=x.useLoop();return Ye(()=>{if(o.enabled&&c.value&&g.value&&f.width.value&&f.height.value&&m.frames.value>0){const w=c.value.autoClear;c.value.autoClear=o.autoClear,o.stencilBuffer&&!o.autoClear&&c.value.clearStencil(),g.value.render(),a("render",g.value),c.value.autoClear=w}m.frames.value=m.mode.value==="always"?1:Math.max(0,m.frames.value-1)}),r.onUnmounted(()=>{var w;(w=g.value)==null||w.dispose()}),(w,P)=>r.renderSlot(w.$slots,"default")}}),p=(i,e,t)=>{const o=r.inject(R),a=r.shallowRef(null),n=r.shallowRef(null),{scene:l,camera:c,invalidate:f}=x.useTresContext();r.watch(e,()=>f());const m=()=>{var h,S,y;a.value&&((h=o==null?void 0:o.value)==null||h.removePass(a.value)),(S=n.value)==null||S.dispose(),(y=a.value)==null||y.dispose()},g=h=>{!c.value||!(o!=null&&o.value)||!l.value||(n.value=i(),a.value=new u.EffectPass(c.value,n.value),o.value.addPass(a.value,h))};t&&r.watch(()=>t.map(h=>e[h]),()=>{var S;if(!(o!=null&&o.value))return;const h=(S=o.value)==null?void 0:S.passes.findIndex(y=>y===a.value);~h&&(m(),g(h))}),r.watchEffect(()=>{!c.value||!(n!=null&&n.value)||(n.value.mainCamera=c.value)});const b=r.watchEffect(()=>{!c.value||!(o!=null&&o.value)||!l.value||(r.nextTick(()=>b()),!n.value&&g())});return r.onUnmounted(()=>{m()}),{pass:a,effect:n}},U=/([^[.\]])+/g,Z=(i,e)=>{if(!e)return;const t=Array.isArray(e)?e:e.match(U);return t==null?void 0:t.reduce((o,a)=>o&&o[a],i)},W=(i,e,t)=>{const o=Array.isArray(e)?e:e.match(U);o&&o.reduce((a,n,l)=>(a[n]===void 0&&(a[n]={}),l===o.length-1&&(a[n]=t),a[n]),i)},_=(i,e)=>{const t={...i};return e.forEach(o=>delete t[o]),t},E=(i,e,t,o,a={})=>r.watch(i,n=>{var l;if(e.value)if(n===void 0){const c=o();W(e.value,t,Z(c,t)),(l=c.dispose)==null||l.call(c)}else W(e.value,t,i())},a),v=(i,e,t)=>i.map(([o,a])=>E(o,e,a,t)),O=(i,e,t)=>Object.keys(i).map(o=>E(()=>i[o],e,o,t)),$=r.defineComponent({__name:"BloomPmndrs",props:{blendFunction:{},intensity:{},kernelSize:{},luminanceThreshold:{},luminanceSmoothing:{},mipmapBlur:{type:Boolean,default:void 0}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.BloomEffect(t),t,["mipmapBlur"]);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.intensity,"intensity"],[()=>t.kernelSize,"kernelSize"],[()=>t.luminanceSmoothing,"luminanceMaterial.smoothing"],[()=>t.luminanceThreshold,"luminanceMaterial.threshold"]],a,()=>new u.BloomEffect),()=>{}}}),ee=r.defineComponent({__name:"DepthOfFieldPmndrs",props:{blendFunction:{},worldFocusDistance:{},worldFocusRange:{},focusDistance:{},focusRange:{},bokehScale:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),{pass:a,effect:n}=p(()=>new u.DepthOfFieldEffect(o.value,t),t);return e({pass:a,effect:n}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.worldFocusDistance,"circleOfConfusionMaterial.worldFocusDistance"],[()=>t.focusDistance,"circleOfConfusionMaterial.focusDistance"],[()=>t.worldFocusRange,"circleOfConfusionMaterial.worldFocusRange"],[()=>t.focusRange,"circleOfConfusionMaterial.focusRange"],[()=>t.bokehScale,"bokehScale"],[()=>t.resolutionScale,"blurPass.resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"]],n,()=>new u.DepthOfFieldEffect),()=>{}}}),te=r.defineComponent({__name:"GlitchPmndrs",props:{blendFunction:{},delay:{},duration:{},strength:{},mode:{},active:{type:Boolean},ratio:{},columns:{},chromaticAberrationOffset:{},perturbationMap:{},dtSize:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.GlitchEffect(t),t,["dtSize"]);e({pass:o,effect:a});const{onBeforeRender:n}=x.useLoop();return n(({invalidate:l})=>l()),r.watchEffect(()=>{const l=()=>{if(t.mode!==void 0)return t.active===!1?u.GlitchMode.DISABLED:t.mode;const c=new u.GlitchEffect,f=c.mode;return c.dispose(),f};a.value&&(a.value.mode=l())}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.GlitchEffect),O(_(t,["active","blendFunction"]),a,()=>new u.GlitchEffect),()=>{}}}),oe=r.defineComponent({__name:"NoisePmndrs",props:{premultiply:{type:Boolean,default:void 0},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.NoiseEffect(t),t);e({pass:o,effect:a});const{onBeforeRender:n}=x.useLoop();return n(({invalidate:l})=>l()),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.premultiply,"premultiply"]],a,()=>new u.NoiseEffect),()=>{}}}),ae=r.defineComponent({__name:"OutlinePmndrs",props:{outlinedObjects:{},blur:{type:Boolean,default:void 0},xRay:{type:Boolean,default:void 0},kernelSize:{},pulseSpeed:{},resolutionX:{},resolutionY:{},edgeStrength:{},patternScale:{},multisampling:{},blendFunction:{},patternTexture:{},resolutionScale:{},hiddenEdgeColor:{},visibleEdgeColor:{}},setup(i,{expose:e}){const t=i,o=m=>m!==void 0?x.normalizeColor(m).getHex():void 0,{camera:a,scene:n}=x.useTresContext(),{pass:l,effect:c}=p(()=>new u.OutlineEffect(n.value,a.value,{blur:t.blur,xRay:t.xRay,kernelSize:t.kernelSize,pulseSpeed:t.pulseSpeed,resolutionX:t.resolutionX,resolutionY:t.resolutionY,patternScale:t.patternScale,edgeStrength:t.edgeStrength,blendFunction:t.blendFunction,multisampling:t.multisampling,patternTexture:t.patternTexture,resolutionScale:t.resolutionScale,hiddenEdgeColor:o(t.hiddenEdgeColor),visibleEdgeColor:o(t.visibleEdgeColor)}),t);e({pass:l,effect:c}),r.watch([()=>t.outlinedObjects,c],()=>{var m;(m=c.value)==null||m.selection.set(t.outlinedObjects||[])},{immediate:!0});const f=r.computed(()=>({hiddenEdgeColor:t.hiddenEdgeColor?x.normalizeColor(t.hiddenEdgeColor):void 0,visibleEdgeColor:t.visibleEdgeColor?x.normalizeColor(t.visibleEdgeColor):void 0}));return v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.blur,"blur"],[()=>t.xRay,"xRay"],[()=>t.pulseSpeed,"pulseSpeed"],[()=>t.kernelSize,"kernelSize"],[()=>t.edgeStrength,"edgeStrength"],[()=>t.patternScale,"patternScale"],[()=>t.multisampling,"multisampling"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"],[()=>t.patternTexture,"patternTexture"],[()=>t.resolutionScale,"resolution.scale"],[()=>f.value.hiddenEdgeColor,"hiddenEdgeColor"],[()=>f.value.visibleEdgeColor,"visibleEdgeColor"]],c,()=>new u.OutlineEffect),()=>{}}}),ne=r.defineComponent({__name:"PixelationPmndrs",props:{granularity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.PixelationEffect(t.granularity),t);return e({pass:o,effect:a}),O(t,a,()=>new u.PixelationEffect),()=>{}}}),se=r.defineComponent({__name:"VignettePmndrs",props:{technique:{},blendFunction:{},offset:{},darkness:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.VignetteEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.darkness,"darkness"],[()=>t.technique,"technique"]],a,()=>new u.VignetteEffect),()=>{}}});class G extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,amount:t=.15,offset:o=new s.Vector2(.5,.5)}={}){super("BarrelBlurEffect",`
9
9
  uniform float amount;
10
10
  uniform vec2 offset;
11
11
 
@@ -49,7 +49,7 @@
49
49
 
50
50
  outputColor = vec4(outcol, inputColor.a); // Preserves original alpha
51
51
  }
52
- `,{blendFunction:e,uniforms:new Map([["amount",new s.Uniform(t)],["offset",new s.Uniform(o)]])})}get amount(){var e;return(e=this.uniforms.get("amount"))==null?void 0:e.value}set amount(e){this.uniforms.get("amount").value=e}get offset(){var e;return(e=this.uniforms.get("offset"))==null?void 0:e.value}set offset(e){this.uniforms.get("offset").value=e}}const ie=r.defineComponent({__name:"BarrelBlurPmndrs",props:{blendFunction:{},amount:{},offset:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new G({...t,offset:Array.isArray(t.offset)?new s.Vector2(...t.offset):t.offset}),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.amount,"amount"],[()=>t.offset,"offset"]],a,()=>new G),()=>{}}}),re=r.defineComponent({__name:"ToneMappingPmndrs",props:{mode:{},blendFunction:{},resolution:{},averageLuminance:{},middleGrey:{},minLuminance:{},whitePoint:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.ToneMappingEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.mode,"mode"],[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.resolution,"resolution"],[()=>t.averageLuminance,"averageLuminance"],[()=>t.middleGrey,"middleGrey"],[()=>t.minLuminance,"adaptiveLuminanceMaterial.minLuminance"],[()=>t.whitePoint,"whitePoint"]],a,()=>new u.ToneMappingEffect),()=>{}}}),le=r.defineComponent({__name:"ChromaticAberrationPmndrs",props:{blendFunction:{},offset:{},radialModulation:{type:Boolean,default:void 0},modulationOffset:{}},setup(i,{expose:e}){const t=i,o=new u.ChromaticAberrationEffect,{pass:a,effect:n}=m(()=>new u.ChromaticAberrationEffect({...t,radialModulation:t.radialModulation??o.radialModulation,modulationOffset:t.modulationOffset??o.modulationOffset}),t);return o.dispose(),e({pass:a,effect:n}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.radialModulation,"radialModulation"],[()=>t.modulationOffset,"modulationOffset"]],n,()=>new u.ChromaticAberrationEffect),()=>{}}}),ce=r.defineComponent({__name:"HueSaturationPmndrs",props:{saturation:{},hue:{},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.HueSaturationEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.hue,"hue"],[()=>t.saturation,"saturation"]],a,()=>new u.HueSaturationEffect),()=>{}}}),ue=r.defineComponent({__name:"ScanlinePmndrs",props:{blendFunction:{},density:{},scrollSpeed:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.ScanlineEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.density,"density"],[()=>t.scrollSpeed,"scrollSpeed"]],a,()=>new u.ScanlineEffect),r.watch([()=>t.opacity],()=>{var n,l;if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ScanlineEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}},{immediate:!0}),()=>{}}}),de=`
52
+ `,{blendFunction:e,uniforms:new Map([["amount",new s.Uniform(t)],["offset",new s.Uniform(o)]])})}get amount(){var e;return(e=this.uniforms.get("amount"))==null?void 0:e.value}set amount(e){this.uniforms.get("amount").value=e}get offset(){var e;return(e=this.uniforms.get("offset"))==null?void 0:e.value}set offset(e){this.uniforms.get("offset").value=e}}const ie=r.defineComponent({__name:"BarrelBlurPmndrs",props:{blendFunction:{},amount:{},offset:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new G({...t,offset:Array.isArray(t.offset)?new s.Vector2(...t.offset):t.offset}),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.amount,"amount"],[()=>t.offset,"offset"]],a,()=>new G),()=>{}}}),re=r.defineComponent({__name:"ToneMappingPmndrs",props:{mode:{},blendFunction:{},resolution:{},averageLuminance:{},middleGrey:{},minLuminance:{},whitePoint:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.ToneMappingEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.mode,"mode"],[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.resolution,"resolution"],[()=>t.averageLuminance,"averageLuminance"],[()=>t.middleGrey,"middleGrey"],[()=>t.minLuminance,"adaptiveLuminanceMaterial.minLuminance"],[()=>t.whitePoint,"whitePoint"]],a,()=>new u.ToneMappingEffect),()=>{}}}),le=r.defineComponent({__name:"ChromaticAberrationPmndrs",props:{blendFunction:{},offset:{},radialModulation:{type:Boolean,default:void 0},modulationOffset:{}},setup(i,{expose:e}){const t=i,o=new u.ChromaticAberrationEffect,{pass:a,effect:n}=p(()=>new u.ChromaticAberrationEffect({...t,radialModulation:t.radialModulation??o.radialModulation,modulationOffset:t.modulationOffset??o.modulationOffset}),t);return o.dispose(),e({pass:a,effect:n}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.radialModulation,"radialModulation"],[()=>t.modulationOffset,"modulationOffset"]],n,()=>new u.ChromaticAberrationEffect),()=>{}}}),ce=r.defineComponent({__name:"HueSaturationPmndrs",props:{saturation:{},hue:{},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.HueSaturationEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.hue,"hue"],[()=>t.saturation,"saturation"]],a,()=>new u.HueSaturationEffect),()=>{}}}),ue=r.defineComponent({__name:"ScanlinePmndrs",props:{blendFunction:{},density:{},scrollSpeed:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.ScanlineEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.density,"density"],[()=>t.scrollSpeed,"scrollSpeed"]],a,()=>new u.ScanlineEffect),r.watch([()=>t.opacity],()=>{var n,l;if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ScanlineEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}},{immediate:!0}),()=>{}}}),de=`
53
53
  uniform float radius;
54
54
  uniform int sectorCount;
55
55
 
@@ -145,7 +145,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
145
145
 
146
146
  outputColor = vec4(finalColor, inputColor.a);
147
147
  }
148
- `;class H extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,radius:t=1,sectorCount:o=4}={}){super("KuwaharaEffect",de,{blendFunction:e,uniforms:new Map([["radius",new s.Uniform(t)],["sectorCount",new s.Uniform(o)]])})}get radius(){var e;return(e=this.uniforms.get("radius"))==null?void 0:e.value}set radius(e){this.uniforms.get("radius").value=e}get sectorCount(){var e;return(e=this.uniforms.get("sectorCount"))==null?void 0:e.value}set sectorCount(e){this.uniforms.get("sectorCount").value=e}}const fe=r.defineComponent({__name:"KuwaharaPmndrs",props:{blendFunction:{},radius:{},sectorCount:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new H(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.radius,"radius"],[()=>t.sectorCount,"sectorCount"]],a,()=>new H),()=>{}}}),he=r.defineComponent({__name:"ColorAveragePmndrs",props:{blendFunction:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.ColorAverageEffect(t.blendFunction),t);return e({pass:o,effect:a}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.ColorAverageEffect),r.watch([a,()=>t.opacity],()=>{var n,l;if(a.value)if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ColorAverageEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}}),()=>{}}}),me=r.defineComponent({__name:"LensDistortionPmndrs",props:{distortion:{},principalPoint:{},focalLength:{},skew:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.LensDistortionEffect({...t,distortion:t.distortion?Array.isArray(t.distortion)?new s.Vector2(...t.distortion):t.distortion:new s.Vector2,principalPoint:t.principalPoint?Array.isArray(t.principalPoint)?new s.Vector2(...t.principalPoint):t.principalPoint:new s.Vector2,focalLength:t.focalLength?Array.isArray(t.focalLength)?new s.Vector2(...t.focalLength):t.focalLength:new s.Vector2}),t);return e({pass:o,effect:a}),O(t,a,()=>new u.LensDistortionEffect),()=>{}}}),pe=r.defineComponent({__name:"ShockWavePmndrs",props:{position:{},amplitude:{},speed:{},maxRadius:{},waveSize:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),{pass:a,effect:n}=m(()=>new u.ShockWaveEffect(o.value,Array.isArray(t.position)?new s.Vector3(...t.position):t.position,t),t);return e({pass:a,effect:n}),r.watch(()=>t.position,l=>{n.value&&(Array.isArray(l)?n.value.position.set(...l):l instanceof s.Vector3&&n.value.position.copy(l))},{immediate:!0}),v([[()=>t.amplitude,"amplitude"],[()=>t.waveSize,"waveSize"],[()=>t.maxRadius,"maxRadius"],[()=>t.speed,"speed"]],n,()=>new u.ShockWaveEffect),()=>{}}}),ge=r.defineComponent({__name:"TiltShiftPmndrs",props:{blendFunction:{},offset:{},rotation:{},focusArea:{},feather:{},kernelSize:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.TiltShiftEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.rotation,"rotation"],[()=>t.focusArea,"focusArea"],[()=>t.feather,"feather"],[()=>t.kernelSize,"kernelSize"],[()=>t.resolutionScale,"resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"]],a,()=>new u.TiltShiftEffect),()=>{}}}),ve=r.defineComponent({__name:"DotScreenPmndrs",props:{angle:{},scale:{},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.DotScreenEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.angle,"angle"],[()=>t.scale,"scale"]],a,()=>new u.DotScreenEffect),()=>{}}}),xe=r.defineComponent({__name:"SepiaPmndrs",props:{blendFunction:{},intensity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.SepiaEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.intensity,"intensity"]],a,()=>new u.SepiaEffect),()=>{}}});class V extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,scale:t=.85,noiseScale:o=0,center:a=[.5,.5],rotation:n=0}={}){const l=Array.isArray(a)?new s.Vector2().fromArray(a):a;super("LinocutEffect",`
148
+ `;class H extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,radius:t=1,sectorCount:o=4}={}){super("KuwaharaEffect",de,{blendFunction:e,uniforms:new Map([["radius",new s.Uniform(t)],["sectorCount",new s.Uniform(o)]])})}get radius(){var e;return(e=this.uniforms.get("radius"))==null?void 0:e.value}set radius(e){this.uniforms.get("radius").value=e}get sectorCount(){var e;return(e=this.uniforms.get("sectorCount"))==null?void 0:e.value}set sectorCount(e){this.uniforms.get("sectorCount").value=e}}const fe=r.defineComponent({__name:"KuwaharaPmndrs",props:{blendFunction:{},radius:{},sectorCount:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new H(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.radius,"radius"],[()=>t.sectorCount,"sectorCount"]],a,()=>new H),()=>{}}}),he=r.defineComponent({__name:"ColorAveragePmndrs",props:{blendFunction:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.ColorAverageEffect(t.blendFunction),t);return e({pass:o,effect:a}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.ColorAverageEffect),r.watch([a,()=>t.opacity],()=>{var n,l;if(a.value)if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ColorAverageEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}}),()=>{}}}),me=r.defineComponent({__name:"LensDistortionPmndrs",props:{distortion:{},principalPoint:{},focalLength:{},skew:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.LensDistortionEffect({...t,distortion:t.distortion?Array.isArray(t.distortion)?new s.Vector2(...t.distortion):t.distortion:new s.Vector2,principalPoint:t.principalPoint?Array.isArray(t.principalPoint)?new s.Vector2(...t.principalPoint):t.principalPoint:new s.Vector2,focalLength:t.focalLength?Array.isArray(t.focalLength)?new s.Vector2(...t.focalLength):t.focalLength:new s.Vector2}),t);return e({pass:o,effect:a}),O(t,a,()=>new u.LensDistortionEffect),()=>{}}}),pe=r.defineComponent({__name:"ShockWavePmndrs",props:{position:{},amplitude:{},speed:{},maxRadius:{},waveSize:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),{pass:a,effect:n}=p(()=>new u.ShockWaveEffect(o.value,Array.isArray(t.position)?new s.Vector3(...t.position):t.position,t),t);return e({pass:a,effect:n}),r.watch(()=>t.position,l=>{n.value&&(Array.isArray(l)?n.value.position.set(...l):l instanceof s.Vector3&&n.value.position.copy(l))},{immediate:!0}),v([[()=>t.amplitude,"amplitude"],[()=>t.waveSize,"waveSize"],[()=>t.maxRadius,"maxRadius"],[()=>t.speed,"speed"]],n,()=>new u.ShockWaveEffect),()=>{}}}),ge=r.defineComponent({__name:"TiltShiftPmndrs",props:{blendFunction:{},offset:{},rotation:{},focusArea:{},feather:{},kernelSize:{},resolutionScale:{},resolutionX:{},resolutionY:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.TiltShiftEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.offset,"offset"],[()=>t.rotation,"rotation"],[()=>t.focusArea,"focusArea"],[()=>t.feather,"feather"],[()=>t.kernelSize,"kernelSize"],[()=>t.resolutionScale,"resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"]],a,()=>new u.TiltShiftEffect),()=>{}}}),ve=r.defineComponent({__name:"DotScreenPmndrs",props:{angle:{},scale:{},blendFunction:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.DotScreenEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.angle,"angle"],[()=>t.scale,"scale"]],a,()=>new u.DotScreenEffect),()=>{}}}),xe=r.defineComponent({__name:"SepiaPmndrs",props:{blendFunction:{},intensity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.SepiaEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.intensity,"intensity"]],a,()=>new u.SepiaEffect),()=>{}}});class V extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,scale:t=.85,noiseScale:o=0,center:a=[.5,.5],rotation:n=0}={}){const l=Array.isArray(a)?new s.Vector2().fromArray(a):a;super("LinocutEffect",`
149
149
  uniform float scale;
150
150
  uniform float noiseScale;
151
151
  uniform vec2 center;
@@ -205,7 +205,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
205
205
  // Output the final color in black and white
206
206
  outputColor = vec4(vec3(f), 1.0);
207
207
  }
208
- `,{blendFunction:e,uniforms:new Map([["scale",new s.Uniform(t)],["noiseScale",new s.Uniform(o)],["center",new s.Uniform(l)],["rotation",new s.Uniform(n)]])})}get scale(){var e;return(e=this.uniforms.get("scale"))==null?void 0:e.value}set scale(e){this.uniforms.get("scale").value=e}get noiseScale(){var e;return(e=this.uniforms.get("noiseScale"))==null?void 0:e.value}set noiseScale(e){this.uniforms.get("noiseScale").value=e}get center(){var e;return(e=this.uniforms.get("center"))==null?void 0:e.value}set center(e){this.uniforms.get("center").value=Array.isArray(e)?new s.Vector2().fromArray(e):e}get rotation(){var e;return(e=this.uniforms.get("rotation"))==null?void 0:e.value}set rotation(e){this.uniforms.get("rotation").value=e}}const be=r.defineComponent({__name:"LinocutPmndrs",props:{blendFunction:{},scale:{},noiseScale:{},center:{},rotation:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new V({...t,center:t.center instanceof s.Vector2?[t.center.x,t.center.y]:t.center}),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.scale,"scale"],[()=>t.noiseScale,"noiseScale"],[()=>t.center,"center"],[()=>t.rotation,"rotation"]],a,()=>new V),()=>{}}}),we=r.defineComponent({__name:"DepthPickingPassPmndrs",props:{depthPacking:{},mode:{}},setup(i,{expose:e}){const t=i,o=r.inject(R),a=new u.DepthPickingPass(t),n=r.watchEffect(()=>{o!=null&&o.value&&(r.nextTick(()=>n()),o.value.addPass(a))});return r.onUnmounted(()=>{var l;!(o!=null&&o.value)||!a||((l=o==null?void 0:o.value)==null||l.removePass(a),a.dispose())}),e({pass:a}),()=>{}}}),Se=r.defineComponent({__name:"GodRaysPmndrs",props:{blendFunction:{},lightSource:{},opacity:{},density:{},decay:{},kernelSize:{},resolutionScale:{},blur:{type:Boolean},resolutionX:{},resolutionY:{},weight:{},exposure:{},samples:{},clampMax:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),{pass:a,effect:n}=m(()=>new u.GodRaysEffect(o.value,r.toRaw(t.lightSource),t),t);return e({pass:a,effect:n}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.density,"godRaysMaterial.density"],[()=>t.decay,"godRaysMaterial.decay"],[()=>t.weight,"godRaysMaterial.weight"],[()=>t.exposure,"godRaysMaterial.exposure"],[()=>t.samples,"godRaysMaterial.samples"],[()=>t.clampMax,"godRaysMaterial.maxIntensity"],[()=>t.resolutionScale,"resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"],[()=>t.kernelSize,"kernelSize"],[()=>t.blur,"blur"]],n,()=>new u.GodRaysEffect),r.watch([()=>t.opacity],()=>{var l,c;if(t.opacity!==void 0)(l=n.value)==null||l.blendMode.setOpacity(t.opacity);else{const f=new u.GodRaysEffect(o.value,r.toRaw(t.lightSource));(c=n.value)==null||c.blendMode.setOpacity(f.blendMode.getOpacity()),f.dispose()}},{immediate:!0}),()=>{}}}),Ae=r.defineComponent({__name:"ColorDepthPmndrs",props:{blendFunction:{},bits:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.ColorDepthEffect(t),t);return e({pass:o,effect:a}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.ColorDepthEffect),r.watch([a,()=>t.bits],()=>{var n,l;if(a.value)if(t.bits!==void 0)(n=a.value)==null||n.setBitDepth(t.bits);else{const c=new u.ColorDepthEffect;(l=a.value)==null||l.setBitDepth(c.getBitDepth()),c.dispose()}}),r.watch([a,()=>t.opacity],()=>{var n,l;if(a.value)if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ColorDepthEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}}),()=>{}}}),ye=r.defineComponent({__name:"GridPmndrs",props:{blendFunction:{},scale:{},lineWidth:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.GridEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.scale,"scale"],[()=>t.lineWidth,"lineWidth"]],a,()=>new u.GridEffect),()=>{}}});class X extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,lensS:t=new s.Vector2(1,1),lensF:o=new s.Vector2(0,1),scale:a=1}={}){super("FishEyeEffect",`
208
+ `,{blendFunction:e,uniforms:new Map([["scale",new s.Uniform(t)],["noiseScale",new s.Uniform(o)],["center",new s.Uniform(l)],["rotation",new s.Uniform(n)]])})}get scale(){var e;return(e=this.uniforms.get("scale"))==null?void 0:e.value}set scale(e){this.uniforms.get("scale").value=e}get noiseScale(){var e;return(e=this.uniforms.get("noiseScale"))==null?void 0:e.value}set noiseScale(e){this.uniforms.get("noiseScale").value=e}get center(){var e;return(e=this.uniforms.get("center"))==null?void 0:e.value}set center(e){this.uniforms.get("center").value=Array.isArray(e)?new s.Vector2().fromArray(e):e}get rotation(){var e;return(e=this.uniforms.get("rotation"))==null?void 0:e.value}set rotation(e){this.uniforms.get("rotation").value=e}}const be=r.defineComponent({__name:"LinocutPmndrs",props:{blendFunction:{},scale:{},noiseScale:{},center:{},rotation:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new V({...t,center:t.center instanceof s.Vector2?[t.center.x,t.center.y]:t.center}),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.scale,"scale"],[()=>t.noiseScale,"noiseScale"],[()=>t.center,"center"],[()=>t.rotation,"rotation"]],a,()=>new V),()=>{}}}),we=r.defineComponent({__name:"DepthPickingPassPmndrs",props:{depthPacking:{},mode:{}},setup(i,{expose:e}){const t=i,o=r.inject(R),a=new u.DepthPickingPass(t),n=r.watchEffect(()=>{o!=null&&o.value&&(r.nextTick(()=>n()),o.value.addPass(a))});return r.onUnmounted(()=>{var l;!(o!=null&&o.value)||!a||((l=o==null?void 0:o.value)==null||l.removePass(a),a.dispose())}),e({pass:a}),()=>{}}}),Se=r.defineComponent({__name:"GodRaysPmndrs",props:{blendFunction:{},lightSource:{},opacity:{},density:{},decay:{},kernelSize:{},resolutionScale:{},blur:{type:Boolean},resolutionX:{},resolutionY:{},weight:{},exposure:{},samples:{},clampMax:{}},setup(i,{expose:e}){const t=i,{camera:o}=x.useTresContext(),a=r.computed(()=>t.lightSource??new s.Mesh(new s.SphereGeometry(1e-5),new s.MeshBasicMaterial({visible:!1}))),{pass:n,effect:l}=p(()=>new u.GodRaysEffect(o.value,a.value,t),t);return e({pass:n,effect:l}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.density,"godRaysMaterial.density"],[()=>t.decay,"godRaysMaterial.decay"],[()=>t.weight,"godRaysMaterial.weight"],[()=>t.exposure,"godRaysMaterial.exposure"],[()=>t.samples,"godRaysMaterial.samples"],[()=>t.clampMax,"godRaysMaterial.maxIntensity"],[()=>t.resolutionScale,"resolution.scale"],[()=>t.resolutionX,"resolution.width"],[()=>t.resolutionY,"resolution.height"],[()=>t.kernelSize,"blurPass.kernelSize"],[()=>t.blur,"blurPass.enabled"]],l,()=>new u.GodRaysEffect),r.watch([()=>t.lightSource,l],()=>{l.value&&(l.value.lightSource=r.toRaw(a.value))},{immediate:!0}),r.watch([()=>t.opacity],()=>{var c,f;if(t.opacity!==void 0)(c=l.value)==null||c.blendMode.setOpacity(t.opacity);else{const m=new u.GodRaysEffect(o.value,r.toRaw(a.value));(f=l.value)==null||f.blendMode.setOpacity(m.blendMode.getOpacity()),m.dispose()}},{immediate:!0}),()=>{}}}),Ae=r.defineComponent({__name:"ColorDepthPmndrs",props:{blendFunction:{},bits:{},opacity:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.ColorDepthEffect(t),t);return e({pass:o,effect:a}),E(()=>t.blendFunction,a,"blendMode.blendFunction",()=>new u.ColorDepthEffect),r.watch([a,()=>t.bits],()=>{var n,l;if(a.value)if(t.bits!==void 0)(n=a.value)==null||n.setBitDepth(t.bits);else{const c=new u.ColorDepthEffect;(l=a.value)==null||l.setBitDepth(c.getBitDepth()),c.dispose()}}),r.watch([a,()=>t.opacity],()=>{var n,l;if(a.value)if(t.opacity!==void 0)(n=a.value)==null||n.blendMode.setOpacity(t.opacity);else{const c=new u.ColorDepthEffect;(l=a.value)==null||l.blendMode.setOpacity(c.blendMode.getOpacity()),c.dispose()}}),()=>{}}}),ye=r.defineComponent({__name:"GridPmndrs",props:{blendFunction:{},scale:{},lineWidth:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.GridEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.scale,"scale"],[()=>t.lineWidth,"lineWidth"]],a,()=>new u.GridEffect),()=>{}}});class X extends u.Effect{constructor({blendFunction:e=u.BlendFunction.NORMAL,lensS:t=new s.Vector2(1,1),lensF:o=new s.Vector2(0,1),scale:a=1}={}){super("FishEyeEffect",`
209
209
  uniform vec2 lensS;
210
210
  uniform vec2 lensF;
211
211
  uniform float scale;
@@ -223,7 +223,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
223
223
  void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
224
224
  outputColor = vec4(inputColor.rgb, inputColor.a); // Preserves original alpha
225
225
  }
226
- `,{blendFunction:e,uniforms:new Map([["lensS",new s.Uniform(t)],["lensF",new s.Uniform(o)],["scale",new s.Uniform(a)]])})}get lensS(){var e;return(e=this.uniforms.get("lensS"))==null?void 0:e.value}set lensS(e){this.uniforms.get("lensS").value=e}get lensF(){var e;return(e=this.uniforms.get("lensF"))==null?void 0:e.value}set lensF(e){this.uniforms.get("lensF").value=e}get scale(){var e;return(e=this.uniforms.get("scale"))==null?void 0:e.value}set scale(e){this.uniforms.get("scale").value=e}}const Me=r.defineComponent({__name:"FishEyePmndrs",props:{blendFunction:{},lensS:{},lensF:{},scale:{}},setup(i,{expose:e}){const t=i,o=r.computed(()=>Array.isArray(t.lensS)?new s.Vector2(...t.lensS):t.lensS),a=r.computed(()=>Array.isArray(t.lensF)?new s.Vector2(...t.lensF):t.lensF),{pass:n,effect:l}=m(()=>new X({...t,lensS:o.value,lensF:a.value}),t);return e({pass:n,effect:l}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>o.value,"lensS"],[()=>a.value,"lensF"],[()=>t.scale,"scale"]],l,()=>new X),()=>{}}}),Te=r.defineComponent({__name:"BrightnessContrastPmndrs",props:{blendFunction:{},brightness:{},contrast:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=m(()=>new u.BrightnessContrastEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.brightness,"brightness"],[()=>t.contrast,"contrast"]],a,()=>new u.BrightnessContrastEffect),()=>{}}}),I={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
226
+ `,{blendFunction:e,uniforms:new Map([["lensS",new s.Uniform(t)],["lensF",new s.Uniform(o)],["scale",new s.Uniform(a)]])})}get lensS(){var e;return(e=this.uniforms.get("lensS"))==null?void 0:e.value}set lensS(e){this.uniforms.get("lensS").value=e}get lensF(){var e;return(e=this.uniforms.get("lensF"))==null?void 0:e.value}set lensF(e){this.uniforms.get("lensF").value=e}get scale(){var e;return(e=this.uniforms.get("scale"))==null?void 0:e.value}set scale(e){this.uniforms.get("scale").value=e}}const Me=r.defineComponent({__name:"FishEyePmndrs",props:{blendFunction:{},lensS:{},lensF:{},scale:{}},setup(i,{expose:e}){const t=i,o=r.computed(()=>Array.isArray(t.lensS)?new s.Vector2(...t.lensS):t.lensS),a=r.computed(()=>Array.isArray(t.lensF)?new s.Vector2(...t.lensF):t.lensF),{pass:n,effect:l}=p(()=>new X({...t,lensS:o.value,lensF:a.value}),t);return e({pass:n,effect:l}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>o.value,"lensS"],[()=>a.value,"lensF"],[()=>t.scale,"scale"]],l,()=>new X),()=>{}}}),Te=r.defineComponent({__name:"BrightnessContrastPmndrs",props:{blendFunction:{},brightness:{},contrast:{}},setup(i,{expose:e}){const t=i,{pass:o,effect:a}=p(()=>new u.BrightnessContrastEffect(t),t);return e({pass:o,effect:a}),v([[()=>t.blendFunction,"blendMode.blendFunction"],[()=>t.brightness,"brightness"],[()=>t.contrast,"contrast"]],a,()=>new u.BrightnessContrastEffect),()=>{}}}),I={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
227
227
 
228
228
  varying vec2 vUv;
229
229
 
@@ -246,7 +246,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
246
246
  gl_FragColor = opacity * texel;
247
247
 
248
248
 
249
- }`};class A{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const Ce=new s.OrthographicCamera(-1,1,1,-1,0,1);class Ee extends s.BufferGeometry{constructor(){super(),this.setAttribute("position",new s.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new s.Float32BufferAttribute([0,2,0,0,2,0],2))}}const De=new Ee;class M{constructor(e){this._mesh=new s.Mesh(De,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,Ce)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class Pe extends A{constructor(e,t){super(),this.textureID=t!==void 0?t:"tDiffuse",e instanceof s.ShaderMaterial?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=s.UniformsUtils.clone(e.uniforms),this.material=new s.ShaderMaterial({name:e.name!==void 0?e.name:"unspecified",defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this.fsQuad=new M(this.material)}render(e,t,o){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=o.texture),this.fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this.fsQuad.render(e))}dispose(){this.material.dispose(),this.fsQuad.dispose()}}class j extends A{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,o){const a=e.getContext(),n=e.state;n.buffers.color.setMask(!1),n.buffers.depth.setMask(!1),n.buffers.color.setLocked(!0),n.buffers.depth.setLocked(!0);let l,c;this.inverse?(l=0,c=1):(l=1,c=0),n.buffers.stencil.setTest(!0),n.buffers.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),n.buffers.stencil.setFunc(a.ALWAYS,l,4294967295),n.buffers.stencil.setClear(c),n.buffers.stencil.setLocked(!0),e.setRenderTarget(o),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),n.buffers.color.setLocked(!1),n.buffers.depth.setLocked(!1),n.buffers.color.setMask(!0),n.buffers.depth.setMask(!0),n.buffers.stencil.setLocked(!1),n.buffers.stencil.setFunc(a.EQUAL,1,4294967295),n.buffers.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),n.buffers.stencil.setLocked(!0)}}class Le extends A{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class Fe{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){const o=e.getSize(new s.Vector2);this._width=o.width,this._height=o.height,t=new s.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:s.HalfFloatType}),t.texture.name="EffectComposer.rt1"}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new Pe(I),this.copyPass.material.blending=s.NoBlending,this.clock=new s.Clock}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){e===void 0&&(e=this.clock.getDelta());const t=this.renderer.getRenderTarget();let o=!1;for(let a=0,n=this.passes.length;a<n;a++){const l=this.passes[a];if(l.enabled!==!1){if(l.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(a),l.render(this.renderer,this.writeBuffer,this.readBuffer,e,o),l.needsSwap){if(o){const c=this.renderer.getContext(),f=this.renderer.state.buffers.stencil;f.setFunc(c.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),f.setFunc(c.EQUAL,1,4294967295)}this.swapBuffers()}j!==void 0&&(l instanceof j?o=!0:l instanceof Le&&(o=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(e===void 0){const t=this.renderer.getSize(new s.Vector2);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,e=this.renderTarget1.clone(),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;const o=this._width*this._pixelRatio,a=this._height*this._pixelRatio;this.renderTarget1.setSize(o,a),this.renderTarget2.setSize(o,a);for(let n=0;n<this.passes.length;n++)this.passes[n].setSize(o,a)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}}class Re extends A{constructor(e,t,o=null,a=null,n=null){super(),this.scene=e,this.camera=t,this.overrideMaterial=o,this.clearColor=a,this.clearAlpha=n,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new s.Color}render(e,t,o){const a=e.autoClear;e.autoClear=!1;let n,l;this.overrideMaterial!==null&&(l=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(e.getClearColor(this._oldClearColor),e.setClearColor(this.clearColor,e.getClearAlpha())),this.clearAlpha!==null&&(n=e.getClearAlpha(),e.setClearAlpha(this.clearAlpha)),this.clearDepth==!0&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:o),this.clear===!0&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor!==null&&e.setClearColor(this._oldClearColor),this.clearAlpha!==null&&e.setClearAlpha(n),this.overrideMaterial!==null&&(this.scene.overrideMaterial=l),e.autoClear=a}}const Y=Symbol("effectComposerThree"),Oe=r.defineComponent({__name:"EffectComposer",props:{enabled:{type:Boolean,default:!0},withoutRenderPass:{type:Boolean}},setup(i,{expose:e}){const t=i,o=r.shallowRef(null);r.provide(Y,o),e({composer:o});const{renderer:a,sizes:n,scene:l,camera:c,render:f}=x.useTresContext(),p=()=>{var h;(h=o.value)==null||h.dispose(),o.value=new Fe(a.value)};r.watchEffect(p),r.watchEffect(()=>{var y;const{width:h,height:S}=n;S.value&&h.value&&((y=o.value)==null||y.setSize(h.value,S.value))});const{pixelRatio:g}=N.useDevicePixelRatio();r.watchEffect(()=>{var h;(h=o.value)==null||h.setPixelRatio(g.value)}),t.withoutRenderPass||r.watchEffect(()=>{c.value&&l.value&&o.value&&o.value.addPass(new Re(l.value,c.value))});const{render:b}=x.useLoop();return b(()=>{f.frames.value>0&&o.value&&t.enabled&&o.value.render(),f.frames.value=f.mode.value==="always"?1:Math.max(0,f.frames.value-1)}),r.onUnmounted(()=>{var h;(h=o.value)==null||h.dispose()}),(h,S)=>r.renderSlot(h.$slots,"default")}}),T=(i,e,t)=>{if(!e&&t)throw new Error("passDependencies is required when dependencyFieldsTriggeringRecreation is provided");const o=r.inject(Y),a=r.shallowRef(i()),{sizes:n,invalidate:l}=x.useTresContext();e&&r.watch(e,()=>l());const c=()=>{var p;(p=o==null?void 0:o.value)==null||p.removePass(a.value),a.value.dispose()},f=r.watchEffect(()=>{!(o!=null&&o.value)||!n.height.value||!n.width.value||(o.value.addPass(a.value),r.nextTick(()=>f()))});return t&&r.watch(()=>t.map(p=>e==null?void 0:e[p]),()=>{if(!(o!=null&&o.value))return;const p=o.value.passes.findIndex(g=>g===a.value);~p&&(c(),a.value=i(),o.value.insertPass(a.value,p))}),r.onUnmounted(()=>{c()}),{pass:a}},Be={uniforms:{tDiffuse:{value:null},tDisp:{value:null},byp:{value:0},amount:{value:.08},angle:{value:.02},seed:{value:.02},seed_x:{value:.02},seed_y:{value:.02},distortion_x:{value:.5},distortion_y:{value:.6},col_s:{value:.05}},vertexShader:`
249
+ }`};class A{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const Ce=new s.OrthographicCamera(-1,1,1,-1,0,1);class Ee extends s.BufferGeometry{constructor(){super(),this.setAttribute("position",new s.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new s.Float32BufferAttribute([0,2,0,0,2,0],2))}}const Pe=new Ee;class M{constructor(e){this._mesh=new s.Mesh(Pe,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,Ce)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class De extends A{constructor(e,t){super(),this.textureID=t!==void 0?t:"tDiffuse",e instanceof s.ShaderMaterial?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=s.UniformsUtils.clone(e.uniforms),this.material=new s.ShaderMaterial({name:e.name!==void 0?e.name:"unspecified",defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this.fsQuad=new M(this.material)}render(e,t,o){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=o.texture),this.fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this.fsQuad.render(e))}dispose(){this.material.dispose(),this.fsQuad.dispose()}}class j extends A{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,o){const a=e.getContext(),n=e.state;n.buffers.color.setMask(!1),n.buffers.depth.setMask(!1),n.buffers.color.setLocked(!0),n.buffers.depth.setLocked(!0);let l,c;this.inverse?(l=0,c=1):(l=1,c=0),n.buffers.stencil.setTest(!0),n.buffers.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),n.buffers.stencil.setFunc(a.ALWAYS,l,4294967295),n.buffers.stencil.setClear(c),n.buffers.stencil.setLocked(!0),e.setRenderTarget(o),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),n.buffers.color.setLocked(!1),n.buffers.depth.setLocked(!1),n.buffers.color.setMask(!0),n.buffers.depth.setMask(!0),n.buffers.stencil.setLocked(!1),n.buffers.stencil.setFunc(a.EQUAL,1,4294967295),n.buffers.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),n.buffers.stencil.setLocked(!0)}}class Le extends A{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class Fe{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){const o=e.getSize(new s.Vector2);this._width=o.width,this._height=o.height,t=new s.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:s.HalfFloatType}),t.texture.name="EffectComposer.rt1"}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new De(I),this.copyPass.material.blending=s.NoBlending,this.clock=new s.Clock}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){e===void 0&&(e=this.clock.getDelta());const t=this.renderer.getRenderTarget();let o=!1;for(let a=0,n=this.passes.length;a<n;a++){const l=this.passes[a];if(l.enabled!==!1){if(l.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(a),l.render(this.renderer,this.writeBuffer,this.readBuffer,e,o),l.needsSwap){if(o){const c=this.renderer.getContext(),f=this.renderer.state.buffers.stencil;f.setFunc(c.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),f.setFunc(c.EQUAL,1,4294967295)}this.swapBuffers()}j!==void 0&&(l instanceof j?o=!0:l instanceof Le&&(o=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(e===void 0){const t=this.renderer.getSize(new s.Vector2);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,e=this.renderTarget1.clone(),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;const o=this._width*this._pixelRatio,a=this._height*this._pixelRatio;this.renderTarget1.setSize(o,a),this.renderTarget2.setSize(o,a);for(let n=0;n<this.passes.length;n++)this.passes[n].setSize(o,a)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}}class Re extends A{constructor(e,t,o=null,a=null,n=null){super(),this.scene=e,this.camera=t,this.overrideMaterial=o,this.clearColor=a,this.clearAlpha=n,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new s.Color}render(e,t,o){const a=e.autoClear;e.autoClear=!1;let n,l;this.overrideMaterial!==null&&(l=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(e.getClearColor(this._oldClearColor),e.setClearColor(this.clearColor,e.getClearAlpha())),this.clearAlpha!==null&&(n=e.getClearAlpha(),e.setClearAlpha(this.clearAlpha)),this.clearDepth==!0&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:o),this.clear===!0&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor!==null&&e.setClearColor(this._oldClearColor),this.clearAlpha!==null&&e.setClearAlpha(n),this.overrideMaterial!==null&&(this.scene.overrideMaterial=l),e.autoClear=a}}const Y=Symbol("effectComposerThree"),Oe=r.defineComponent({__name:"EffectComposer",props:{enabled:{type:Boolean,default:!0},withoutRenderPass:{type:Boolean}},setup(i,{expose:e}){const t=i,o=r.shallowRef(null);r.provide(Y,o),e({composer:o});const{renderer:a,sizes:n,scene:l,camera:c,render:f}=x.useTresContext(),m=()=>{var h;(h=o.value)==null||h.dispose(),o.value=new Fe(a.value)};r.watchEffect(m),r.watchEffect(()=>{var y;const{width:h,height:S}=n;S.value&&h.value&&((y=o.value)==null||y.setSize(h.value,S.value))});const{pixelRatio:g}=N.useDevicePixelRatio();r.watchEffect(()=>{var h;(h=o.value)==null||h.setPixelRatio(g.value)}),t.withoutRenderPass||r.watchEffect(()=>{c.value&&l.value&&o.value&&o.value.addPass(new Re(l.value,c.value))});const{render:b}=x.useLoop();return b(()=>{f.frames.value>0&&o.value&&t.enabled&&o.value.render(),f.frames.value=f.mode.value==="always"?1:Math.max(0,f.frames.value-1)}),r.onUnmounted(()=>{var h;(h=o.value)==null||h.dispose()}),(h,S)=>r.renderSlot(h.$slots,"default")}}),T=(i,e,t)=>{if(!e&&t)throw new Error("passDependencies is required when dependencyFieldsTriggeringRecreation is provided");const o=r.inject(Y),a=r.shallowRef(i()),{sizes:n,invalidate:l}=x.useTresContext();e&&r.watch(e,()=>l());const c=()=>{var m;(m=o==null?void 0:o.value)==null||m.removePass(a.value),a.value.dispose()},f=r.watchEffect(()=>{!(o!=null&&o.value)||!n.height.value||!n.width.value||(o.value.addPass(a.value),r.nextTick(()=>f()))});return t&&r.watch(()=>t.map(m=>e==null?void 0:e[m]),()=>{if(!(o!=null&&o.value))return;const m=o.value.passes.findIndex(g=>g===a.value);~m&&(c(),a.value=i(),o.value.insertPass(a.value,m))}),r.onUnmounted(()=>{c()}),{pass:a}},Be={uniforms:{tDiffuse:{value:null},tDisp:{value:null},byp:{value:0},amount:{value:.08},angle:{value:.02},seed:{value:.02},seed_x:{value:.02},seed_y:{value:.02},distortion_x:{value:.5},distortion_y:{value:.6},col_s:{value:.05}},vertexShader:`
250
250
 
251
251
  varying vec2 vUv;
252
252
  void main() {
@@ -313,7 +313,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
313
313
  else {
314
314
  gl_FragColor=texture2D (tDiffuse, vUv);
315
315
  }
316
- }`};class k extends A{constructor(e=64){super();const t=Be;this.uniforms=s.UniformsUtils.clone(t.uniforms),this.heightMap=this.generateHeightmap(e),this.uniforms.tDisp.value=this.heightMap,this.material=new s.ShaderMaterial({uniforms:this.uniforms,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader}),this.fsQuad=new M(this.material),this.goWild=!1,this.curF=0,this.generateTrigger()}render(e,t,o){this.uniforms.tDiffuse.value=o.texture,this.uniforms.seed.value=Math.random(),this.uniforms.byp.value=0,this.curF%this.randX==0||this.goWild==!0?(this.uniforms.amount.value=Math.random()/30,this.uniforms.angle.value=s.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.seed_x.value=s.MathUtils.randFloat(-1,1),this.uniforms.seed_y.value=s.MathUtils.randFloat(-1,1),this.uniforms.distortion_x.value=s.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=s.MathUtils.randFloat(0,1),this.curF=0,this.generateTrigger()):this.curF%this.randX<this.randX/5?(this.uniforms.amount.value=Math.random()/90,this.uniforms.angle.value=s.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.distortion_x.value=s.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=s.MathUtils.randFloat(0,1),this.uniforms.seed_x.value=s.MathUtils.randFloat(-.3,.3),this.uniforms.seed_y.value=s.MathUtils.randFloat(-.3,.3)):this.goWild==!1&&(this.uniforms.byp.value=1),this.curF++,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}generateTrigger(){this.randX=s.MathUtils.randInt(120,240)}generateHeightmap(e){const t=new Float32Array(e*e),o=e*e;for(let n=0;n<o;n++){const l=s.MathUtils.randFloat(0,1);t[n]=l}const a=new s.DataTexture(t,e,e,s.RedFormat,s.FloatType);return a.needsUpdate=!0,a}dispose(){this.material.dispose(),this.heightMap.dispose(),this.fsQuad.dispose()}}const Ne=r.defineComponent({__name:"Glitch",props:{dtSize:{},goWild:{type:Boolean}},setup(i,{expose:e}){const t=i,{pass:o}=T(()=>new k(t.dtSize),t,["dtSize"]);e({pass:o});const{onBeforeRender:a}=x.useLoop();return a(({invalidate:n})=>n()),v([[()=>t.goWild,"goWild"]],o,()=>new k),()=>{}}}),P={name:"HalftoneShader",uniforms:{tDiffuse:{value:null},shape:{value:1},radius:{value:4},rotateR:{value:Math.PI/12*1},rotateG:{value:Math.PI/12*2},rotateB:{value:Math.PI/12*3},scatter:{value:0},width:{value:1},height:{value:1},blending:{value:1},blendingMode:{value:1},greyscale:{value:!1},disable:{value:!1}},vertexShader:`
316
+ }`};class k extends A{constructor(e=64){super();const t=Be;this.uniforms=s.UniformsUtils.clone(t.uniforms),this.heightMap=this.generateHeightmap(e),this.uniforms.tDisp.value=this.heightMap,this.material=new s.ShaderMaterial({uniforms:this.uniforms,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader}),this.fsQuad=new M(this.material),this.goWild=!1,this.curF=0,this.generateTrigger()}render(e,t,o){this.uniforms.tDiffuse.value=o.texture,this.uniforms.seed.value=Math.random(),this.uniforms.byp.value=0,this.curF%this.randX==0||this.goWild==!0?(this.uniforms.amount.value=Math.random()/30,this.uniforms.angle.value=s.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.seed_x.value=s.MathUtils.randFloat(-1,1),this.uniforms.seed_y.value=s.MathUtils.randFloat(-1,1),this.uniforms.distortion_x.value=s.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=s.MathUtils.randFloat(0,1),this.curF=0,this.generateTrigger()):this.curF%this.randX<this.randX/5?(this.uniforms.amount.value=Math.random()/90,this.uniforms.angle.value=s.MathUtils.randFloat(-Math.PI,Math.PI),this.uniforms.distortion_x.value=s.MathUtils.randFloat(0,1),this.uniforms.distortion_y.value=s.MathUtils.randFloat(0,1),this.uniforms.seed_x.value=s.MathUtils.randFloat(-.3,.3),this.uniforms.seed_y.value=s.MathUtils.randFloat(-.3,.3)):this.goWild==!1&&(this.uniforms.byp.value=1),this.curF++,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}generateTrigger(){this.randX=s.MathUtils.randInt(120,240)}generateHeightmap(e){const t=new Float32Array(e*e),o=e*e;for(let n=0;n<o;n++){const l=s.MathUtils.randFloat(0,1);t[n]=l}const a=new s.DataTexture(t,e,e,s.RedFormat,s.FloatType);return a.needsUpdate=!0,a}dispose(){this.material.dispose(),this.heightMap.dispose(),this.fsQuad.dispose()}}const Ne=r.defineComponent({__name:"Glitch",props:{dtSize:{},goWild:{type:Boolean}},setup(i,{expose:e}){const t=i,{pass:o}=T(()=>new k(t.dtSize),t,["dtSize"]);e({pass:o});const{onBeforeRender:a}=x.useLoop();return a(({invalidate:n})=>n()),v([[()=>t.goWild,"goWild"]],o,()=>new k),()=>{}}}),D={name:"HalftoneShader",uniforms:{tDiffuse:{value:null},shape:{value:1},radius:{value:4},rotateR:{value:Math.PI/12*1},rotateG:{value:Math.PI/12*2},rotateB:{value:Math.PI/12*3},scatter:{value:0},width:{value:1},height:{value:1},blending:{value:1},blendingMode:{value:1},greyscale:{value:!1},disable:{value:!1}},vertexShader:`
317
317
 
318
318
  varying vec2 vUV;
319
319
 
@@ -591,7 +591,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
591
591
 
592
592
  }
593
593
 
594
- }`};class ze extends A{constructor(e,t,o){super(),this.uniforms=s.UniformsUtils.clone(P.uniforms),this.material=new s.ShaderMaterial({uniforms:this.uniforms,fragmentShader:P.fragmentShader,vertexShader:P.vertexShader}),this.uniforms.width.value=e,this.uniforms.height.value=t;for(const a in o)o.hasOwnProperty(a)&&this.uniforms.hasOwnProperty(a)&&(this.uniforms[a].value=o[a]);this.fsQuad=new M(this.material)}render(e,t,o){this.material.uniforms.tDiffuse.value=o.texture,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}setSize(e,t){this.uniforms.width.value=e,this.uniforms.height.value=t}dispose(){this.material.dispose(),this.fsQuad.dispose()}}const Ue=r.defineComponent({__name:"Halftone",props:{shape:{},radius:{},rotateR:{},rotateG:{},rotateB:{},scatter:{},blending:{},greyscale:{type:Boolean},blendingMode:{}},setup(i,{expose:e}){const t=i,{sizes:o}=x.useTresContext(),a=r.computed(()=>Object.fromEntries(Object.entries(t).filter(([l,c])=>c!==void 0))),{pass:n}=T(()=>new ze(o.width.value,o.height.value,a.value),t);return e({pass:n}),r.watchEffect(()=>{n.value.setSize(o.width.value,o.height.value)}),r.watchEffect(()=>{Object.entries(t).forEach(([l,c])=>{l in n.value.uniforms&&(n.value.uniforms[l].value=c??P.uniforms[l].value)})}),()=>{}}});class q extends A{constructor(e,t,o,a={}){super(),this.pixelSize=e,this.resolution=new s.Vector2,this.renderResolution=new s.Vector2,this.pixelatedMaterial=this.createPixelatedMaterial(),this.normalMaterial=new s.MeshNormalMaterial,this.fsQuad=new M(this.pixelatedMaterial),this.scene=t,this.camera=o,this.normalEdgeStrength=a.normalEdgeStrength||.3,this.depthEdgeStrength=a.depthEdgeStrength||.4,this.beautyRenderTarget=new s.WebGLRenderTarget,this.beautyRenderTarget.texture.minFilter=s.NearestFilter,this.beautyRenderTarget.texture.magFilter=s.NearestFilter,this.beautyRenderTarget.texture.type=s.HalfFloatType,this.beautyRenderTarget.depthTexture=new s.DepthTexture,this.normalRenderTarget=new s.WebGLRenderTarget,this.normalRenderTarget.texture.minFilter=s.NearestFilter,this.normalRenderTarget.texture.magFilter=s.NearestFilter,this.normalRenderTarget.texture.type=s.HalfFloatType}dispose(){this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.pixelatedMaterial.dispose(),this.normalMaterial.dispose(),this.fsQuad.dispose()}setSize(e,t){this.resolution.set(e,t),this.renderResolution.set(e/this.pixelSize|0,t/this.pixelSize|0);const{x:o,y:a}=this.renderResolution;this.beautyRenderTarget.setSize(o,a),this.normalRenderTarget.setSize(o,a),this.fsQuad.material.uniforms.resolution.value.set(o,a,1/o,1/a)}setPixelSize(e){this.pixelSize=e,this.setSize(this.resolution.x,this.resolution.y)}render(e,t){const o=this.fsQuad.material.uniforms;o.normalEdgeStrength.value=this.normalEdgeStrength,o.depthEdgeStrength.value=this.depthEdgeStrength,e.setRenderTarget(this.beautyRenderTarget),e.render(this.scene,this.camera);const a=this.scene.overrideMaterial;e.setRenderTarget(this.normalRenderTarget),this.scene.overrideMaterial=this.normalMaterial,e.render(this.scene,this.camera),this.scene.overrideMaterial=a,o.tDiffuse.value=this.beautyRenderTarget.texture,o.tDepth.value=this.beautyRenderTarget.depthTexture,o.tNormal.value=this.normalRenderTarget.texture,this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),this.clear&&e.clear()),this.fsQuad.render(e)}createPixelatedMaterial(){return new s.ShaderMaterial({uniforms:{tDiffuse:{value:null},tDepth:{value:null},tNormal:{value:null},resolution:{value:new s.Vector4(this.renderResolution.x,this.renderResolution.y,1/this.renderResolution.x,1/this.renderResolution.y)},normalEdgeStrength:{value:0},depthEdgeStrength:{value:0}},vertexShader:`
594
+ }`};class ze extends A{constructor(e,t,o){super(),this.uniforms=s.UniformsUtils.clone(D.uniforms),this.material=new s.ShaderMaterial({uniforms:this.uniforms,fragmentShader:D.fragmentShader,vertexShader:D.vertexShader}),this.uniforms.width.value=e,this.uniforms.height.value=t;for(const a in o)o.hasOwnProperty(a)&&this.uniforms.hasOwnProperty(a)&&(this.uniforms[a].value=o[a]);this.fsQuad=new M(this.material)}render(e,t,o){this.material.uniforms.tDiffuse.value=o.texture,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}setSize(e,t){this.uniforms.width.value=e,this.uniforms.height.value=t}dispose(){this.material.dispose(),this.fsQuad.dispose()}}const Ue=r.defineComponent({__name:"Halftone",props:{shape:{},radius:{},rotateR:{},rotateG:{},rotateB:{},scatter:{},blending:{},greyscale:{type:Boolean},blendingMode:{}},setup(i,{expose:e}){const t=i,{sizes:o}=x.useTresContext(),a=r.computed(()=>Object.fromEntries(Object.entries(t).filter(([l,c])=>c!==void 0))),{pass:n}=T(()=>new ze(o.width.value,o.height.value,a.value),t);return e({pass:n}),r.watchEffect(()=>{n.value.setSize(o.width.value,o.height.value)}),r.watchEffect(()=>{Object.entries(t).forEach(([l,c])=>{l in n.value.uniforms&&(n.value.uniforms[l].value=c??D.uniforms[l].value)})}),()=>{}}});class q extends A{constructor(e,t,o,a={}){super(),this.pixelSize=e,this.resolution=new s.Vector2,this.renderResolution=new s.Vector2,this.pixelatedMaterial=this.createPixelatedMaterial(),this.normalMaterial=new s.MeshNormalMaterial,this.fsQuad=new M(this.pixelatedMaterial),this.scene=t,this.camera=o,this.normalEdgeStrength=a.normalEdgeStrength||.3,this.depthEdgeStrength=a.depthEdgeStrength||.4,this.beautyRenderTarget=new s.WebGLRenderTarget,this.beautyRenderTarget.texture.minFilter=s.NearestFilter,this.beautyRenderTarget.texture.magFilter=s.NearestFilter,this.beautyRenderTarget.texture.type=s.HalfFloatType,this.beautyRenderTarget.depthTexture=new s.DepthTexture,this.normalRenderTarget=new s.WebGLRenderTarget,this.normalRenderTarget.texture.minFilter=s.NearestFilter,this.normalRenderTarget.texture.magFilter=s.NearestFilter,this.normalRenderTarget.texture.type=s.HalfFloatType}dispose(){this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.pixelatedMaterial.dispose(),this.normalMaterial.dispose(),this.fsQuad.dispose()}setSize(e,t){this.resolution.set(e,t),this.renderResolution.set(e/this.pixelSize|0,t/this.pixelSize|0);const{x:o,y:a}=this.renderResolution;this.beautyRenderTarget.setSize(o,a),this.normalRenderTarget.setSize(o,a),this.fsQuad.material.uniforms.resolution.value.set(o,a,1/o,1/a)}setPixelSize(e){this.pixelSize=e,this.setSize(this.resolution.x,this.resolution.y)}render(e,t){const o=this.fsQuad.material.uniforms;o.normalEdgeStrength.value=this.normalEdgeStrength,o.depthEdgeStrength.value=this.depthEdgeStrength,e.setRenderTarget(this.beautyRenderTarget),e.render(this.scene,this.camera);const a=this.scene.overrideMaterial;e.setRenderTarget(this.normalRenderTarget),this.scene.overrideMaterial=this.normalMaterial,e.render(this.scene,this.camera),this.scene.overrideMaterial=a,o.tDiffuse.value=this.beautyRenderTarget.texture,o.tDepth.value=this.beautyRenderTarget.depthTexture,o.tNormal.value=this.normalRenderTarget.texture,this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),this.clear&&e.clear()),this.fsQuad.render(e)}createPixelatedMaterial(){return new s.ShaderMaterial({uniforms:{tDiffuse:{value:null},tDepth:{value:null},tNormal:{value:null},resolution:{value:new s.Vector4(this.renderResolution.x,this.renderResolution.y,1/this.renderResolution.x,1/this.renderResolution.y)},normalEdgeStrength:{value:0},depthEdgeStrength:{value:0}},vertexShader:`
595
595
  varying vec2 vUv;
596
596
 
597
597
  void main() {
@@ -1178,7 +1178,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
1178
1178
 
1179
1179
  gl_FragColor = mix( outputColor, texel, alpha );
1180
1180
 
1181
- }`};class C extends A{constructor(e,t,o,a){super(),this.strength=t!==void 0?t:1,this.radius=o,this.threshold=a,this.resolution=e!==void 0?new s.Vector2(e.x,e.y):new s.Vector2(256,256),this.clearColor=new s.Color(0,0,0),this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let n=Math.round(this.resolution.x/2),l=Math.round(this.resolution.y/2);this.renderTargetBright=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType}),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let b=0;b<this.nMips;b++){const h=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType});h.texture.name="UnrealBloomPass.h"+b,h.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(h);const S=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType});S.texture.name="UnrealBloomPass.v"+b,S.texture.generateMipmaps=!1,this.renderTargetsVertical.push(S),n=Math.round(n/2),l=Math.round(l/2)}const c=Q;this.highPassUniforms=s.UniformsUtils.clone(c.uniforms),this.highPassUniforms.luminosityThreshold.value=a,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new s.ShaderMaterial({uniforms:this.highPassUniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader}),this.separableBlurMaterials=[];const f=[3,5,7,9,11];n=Math.round(this.resolution.x/2),l=Math.round(this.resolution.y/2);for(let b=0;b<this.nMips;b++)this.separableBlurMaterials.push(this.getSeparableBlurMaterial(f[b])),this.separableBlurMaterials[b].uniforms.invSize.value=new s.Vector2(1/n,1/l),n=Math.round(n/2),l=Math.round(l/2);this.compositeMaterial=this.getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=t,this.compositeMaterial.uniforms.bloomRadius.value=.1;const p=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=p,this.bloomTintColors=[new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors;const g=I;this.copyUniforms=s.UniformsUtils.clone(g.uniforms),this.blendMaterial=new s.ShaderMaterial({uniforms:this.copyUniforms,vertexShader:g.vertexShader,fragmentShader:g.fragmentShader,blending:s.AdditiveBlending,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new s.Color,this.oldClearAlpha=1,this.basic=new s.MeshBasicMaterial,this.fsQuad=new M(null)}dispose(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose();for(let e=0;e<this.separableBlurMaterials.length;e++)this.separableBlurMaterials[e].dispose();this.compositeMaterial.dispose(),this.blendMaterial.dispose(),this.basic.dispose(),this.fsQuad.dispose()}setSize(e,t){let o=Math.round(e/2),a=Math.round(t/2);this.renderTargetBright.setSize(o,a);for(let n=0;n<this.nMips;n++)this.renderTargetsHorizontal[n].setSize(o,a),this.renderTargetsVertical[n].setSize(o,a),this.separableBlurMaterials[n].uniforms.invSize.value=new s.Vector2(1/o,1/a),o=Math.round(o/2),a=Math.round(a/2)}render(e,t,o,a,n){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();const l=e.autoClear;e.autoClear=!1,e.setClearColor(this.clearColor,0),n&&e.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=o.texture,e.setRenderTarget(null),e.clear(),this.fsQuad.render(e)),this.highPassUniforms.tDiffuse.value=o.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this.fsQuad.material=this.materialHighPassFilter,e.setRenderTarget(this.renderTargetBright),e.clear(),this.fsQuad.render(e);let c=this.renderTargetBright;for(let f=0;f<this.nMips;f++)this.fsQuad.material=this.separableBlurMaterials[f],this.separableBlurMaterials[f].uniforms.colorTexture.value=c.texture,this.separableBlurMaterials[f].uniforms.direction.value=C.BlurDirectionX,e.setRenderTarget(this.renderTargetsHorizontal[f]),e.clear(),this.fsQuad.render(e),this.separableBlurMaterials[f].uniforms.colorTexture.value=this.renderTargetsHorizontal[f].texture,this.separableBlurMaterials[f].uniforms.direction.value=C.BlurDirectionY,e.setRenderTarget(this.renderTargetsVertical[f]),e.clear(),this.fsQuad.render(e),c=this.renderTargetsVertical[f];this.fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,e.setRenderTarget(this.renderTargetsHorizontal[0]),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.blendMaterial,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,n&&e.state.buffers.stencil.setTest(!0),this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(o),this.fsQuad.render(e)),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=l}getSeparableBlurMaterial(e){const t=[];for(let o=0;o<e;o++)t.push(.39894*Math.exp(-.5*o*o/(e*e))/e);return new s.ShaderMaterial({defines:{KERNEL_RADIUS:e},uniforms:{colorTexture:{value:null},invSize:{value:new s.Vector2(.5,.5)},direction:{value:new s.Vector2(.5,.5)},gaussianCoefficients:{value:t}},vertexShader:`varying vec2 vUv;
1181
+ }`};class C extends A{constructor(e,t,o,a){super(),this.strength=t!==void 0?t:1,this.radius=o,this.threshold=a,this.resolution=e!==void 0?new s.Vector2(e.x,e.y):new s.Vector2(256,256),this.clearColor=new s.Color(0,0,0),this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let n=Math.round(this.resolution.x/2),l=Math.round(this.resolution.y/2);this.renderTargetBright=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType}),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let b=0;b<this.nMips;b++){const h=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType});h.texture.name="UnrealBloomPass.h"+b,h.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(h);const S=new s.WebGLRenderTarget(n,l,{type:s.HalfFloatType});S.texture.name="UnrealBloomPass.v"+b,S.texture.generateMipmaps=!1,this.renderTargetsVertical.push(S),n=Math.round(n/2),l=Math.round(l/2)}const c=Q;this.highPassUniforms=s.UniformsUtils.clone(c.uniforms),this.highPassUniforms.luminosityThreshold.value=a,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new s.ShaderMaterial({uniforms:this.highPassUniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader}),this.separableBlurMaterials=[];const f=[3,5,7,9,11];n=Math.round(this.resolution.x/2),l=Math.round(this.resolution.y/2);for(let b=0;b<this.nMips;b++)this.separableBlurMaterials.push(this.getSeparableBlurMaterial(f[b])),this.separableBlurMaterials[b].uniforms.invSize.value=new s.Vector2(1/n,1/l),n=Math.round(n/2),l=Math.round(l/2);this.compositeMaterial=this.getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=t,this.compositeMaterial.uniforms.bloomRadius.value=.1;const m=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=m,this.bloomTintColors=[new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1),new s.Vector3(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors;const g=I;this.copyUniforms=s.UniformsUtils.clone(g.uniforms),this.blendMaterial=new s.ShaderMaterial({uniforms:this.copyUniforms,vertexShader:g.vertexShader,fragmentShader:g.fragmentShader,blending:s.AdditiveBlending,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new s.Color,this.oldClearAlpha=1,this.basic=new s.MeshBasicMaterial,this.fsQuad=new M(null)}dispose(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose();for(let e=0;e<this.separableBlurMaterials.length;e++)this.separableBlurMaterials[e].dispose();this.compositeMaterial.dispose(),this.blendMaterial.dispose(),this.basic.dispose(),this.fsQuad.dispose()}setSize(e,t){let o=Math.round(e/2),a=Math.round(t/2);this.renderTargetBright.setSize(o,a);for(let n=0;n<this.nMips;n++)this.renderTargetsHorizontal[n].setSize(o,a),this.renderTargetsVertical[n].setSize(o,a),this.separableBlurMaterials[n].uniforms.invSize.value=new s.Vector2(1/o,1/a),o=Math.round(o/2),a=Math.round(a/2)}render(e,t,o,a,n){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();const l=e.autoClear;e.autoClear=!1,e.setClearColor(this.clearColor,0),n&&e.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=o.texture,e.setRenderTarget(null),e.clear(),this.fsQuad.render(e)),this.highPassUniforms.tDiffuse.value=o.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this.fsQuad.material=this.materialHighPassFilter,e.setRenderTarget(this.renderTargetBright),e.clear(),this.fsQuad.render(e);let c=this.renderTargetBright;for(let f=0;f<this.nMips;f++)this.fsQuad.material=this.separableBlurMaterials[f],this.separableBlurMaterials[f].uniforms.colorTexture.value=c.texture,this.separableBlurMaterials[f].uniforms.direction.value=C.BlurDirectionX,e.setRenderTarget(this.renderTargetsHorizontal[f]),e.clear(),this.fsQuad.render(e),this.separableBlurMaterials[f].uniforms.colorTexture.value=this.renderTargetsHorizontal[f].texture,this.separableBlurMaterials[f].uniforms.direction.value=C.BlurDirectionY,e.setRenderTarget(this.renderTargetsVertical[f]),e.clear(),this.fsQuad.render(e),c=this.renderTargetsVertical[f];this.fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,e.setRenderTarget(this.renderTargetsHorizontal[0]),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.blendMaterial,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,n&&e.state.buffers.stencil.setTest(!0),this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(o),this.fsQuad.render(e)),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=l}getSeparableBlurMaterial(e){const t=[];for(let o=0;o<e;o++)t.push(.39894*Math.exp(-.5*o*o/(e*e))/e);return new s.ShaderMaterial({defines:{KERNEL_RADIUS:e},uniforms:{colorTexture:{value:null},invSize:{value:new s.Vector2(.5,.5)},direction:{value:new s.Vector2(.5,.5)},gaussianCoefficients:{value:t}},vertexShader:`varying vec2 vUv;
1182
1182
  void main() {
1183
1183
  vUv = uv;
1184
1184
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
@@ -1228,4 +1228,4 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
1228
1228
  lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +
1229
1229
  lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +
1230
1230
  lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );
1231
- }`})}}C.BlurDirectionX=new s.Vector2(1,0),C.BlurDirectionY=new s.Vector2(0,1);const je=r.defineComponent({__name:"UnrealBloom",props:{radius:{default:0},strength:{default:1},threshold:{default:0}},setup(i,{expose:e}){const t=i,{sizes:o}=x.useTresContext(),{pass:a}=T(()=>new C(new s.Vector2(o.width.value,o.height.value),t.radius,t.strength,t.threshold),t);return e({pass:a}),r.watchEffect(()=>{var n;a.value.radius=t.radius??((n=a.value.getCompositeMaterial().uniforms.bloomRadius)==null?void 0:n.value)??.1}),r.watchEffect(()=>{var n;a.value.strength=t.strength??((n=a.value.getCompositeMaterial().uniforms.bloomStrength)==null?void 0:n.value)??1}),r.watchEffect(()=>{var n;a.value.threshold=t.threshold??((n=Q.uniforms.luminosityThreshold)==null?void 0:n.value)??1}),()=>{}}});d.BarrelBlurPmndrs=ie,d.BloomPmndrs=$,d.BrightnessContrastPmndrs=Te,d.ChromaticAberrationPmndrs=le,d.ColorAveragePmndrs=he,d.ColorDepthPmndrs=Ae,d.DepthOfFieldPmndrs=ee,d.DepthPickingPassPmndrs=we,d.DotScreenPmndrs=ve,d.EffectComposer=Oe,d.EffectComposerPmndrs=J,d.FishEyePmndrs=Me,d.Glitch=Ne,d.GlitchPmndrs=te,d.GodRaysPmndrs=Se,d.GridPmndrs=ye,d.Halftone=Ue,d.HueSaturationPmndrs=ce,d.KuwaharaPmndrs=fe,d.LensDistortionPmndrs=me,d.LinocutPmndrs=be,d.NoisePmndrs=oe,d.OutlinePmndrs=ae,d.Output=Ve,d.Pixelation=We,d.PixelationPmndrs=ne,d.SMAA=Ie,d.ScanlinePmndrs=ue,d.SepiaPmndrs=xe,d.ShockWavePmndrs=pe,d.TiltShiftPmndrs=ge,d.ToneMappingPmndrs=re,d.UnrealBloom=je,d.VignettePmndrs=se,d.useEffect=T,d.useEffectPmndrs=m,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
1231
+ }`})}}C.BlurDirectionX=new s.Vector2(1,0),C.BlurDirectionY=new s.Vector2(0,1);const je=r.defineComponent({__name:"UnrealBloom",props:{radius:{default:0},strength:{default:1},threshold:{default:0}},setup(i,{expose:e}){const t=i,{sizes:o}=x.useTresContext(),{pass:a}=T(()=>new C(new s.Vector2(o.width.value,o.height.value),t.radius,t.strength,t.threshold),t);return e({pass:a}),r.watchEffect(()=>{var n;a.value.radius=t.radius??((n=a.value.getCompositeMaterial().uniforms.bloomRadius)==null?void 0:n.value)??.1}),r.watchEffect(()=>{var n;a.value.strength=t.strength??((n=a.value.getCompositeMaterial().uniforms.bloomStrength)==null?void 0:n.value)??1}),r.watchEffect(()=>{var n;a.value.threshold=t.threshold??((n=Q.uniforms.luminosityThreshold)==null?void 0:n.value)??1}),()=>{}}});d.BarrelBlurPmndrs=ie,d.BloomPmndrs=$,d.BrightnessContrastPmndrs=Te,d.ChromaticAberrationPmndrs=le,d.ColorAveragePmndrs=he,d.ColorDepthPmndrs=Ae,d.DepthOfFieldPmndrs=ee,d.DepthPickingPassPmndrs=we,d.DotScreenPmndrs=ve,d.EffectComposer=Oe,d.EffectComposerPmndrs=J,d.FishEyePmndrs=Me,d.Glitch=Ne,d.GlitchPmndrs=te,d.GodRaysPmndrs=Se,d.GridPmndrs=ye,d.Halftone=Ue,d.HueSaturationPmndrs=ce,d.KuwaharaPmndrs=fe,d.LensDistortionPmndrs=me,d.LinocutPmndrs=be,d.NoisePmndrs=oe,d.OutlinePmndrs=ae,d.Output=Ve,d.Pixelation=We,d.PixelationPmndrs=ne,d.SMAA=Ie,d.ScanlinePmndrs=ue,d.SepiaPmndrs=xe,d.ShockWavePmndrs=pe,d.TiltShiftPmndrs=ge,d.ToneMappingPmndrs=re,d.UnrealBloom=je,d.VignettePmndrs=se,d.useEffect=T,d.useEffectPmndrs=p,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tresjs/post-processing",
3
3
  "type": "module",
4
- "version": "2.3.0",
4
+ "version": "2.3.1",
5
5
  "packageManager": "pnpm@10.6.3",
6
6
  "description": "Post-processing library for TresJS",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",