@tresjs/post-processing 2.2.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,58 +1,28 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v2.2.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
- import { watch as w, defineComponent as u, shallowRef as z, provide as Ne, computed as L, onUnmounted as W, renderSlot as ze, inject as oe, watchEffect as v, nextTick as se, toRaw as ne } from "vue";
9
- import { EffectComposer as le, RenderPass as je, NormalPass as Ve, DepthDownsamplingPass as Ye, EffectPass as ke, BloomEffect as ue, DepthOfFieldEffect as ce, GlitchEffect as K, GlitchMode as qe, NoiseEffect as de, OutlineEffect as fe, PixelationEffect as he, VignetteEffect as pe, Effect as k, BlendFunction as q, ToneMappingEffect as me, ChromaticAberrationEffect as J, HueSaturationEffect as ge, ScanlineEffect as Z, ColorAverageEffect as _, LensDistortionEffect as ve, ShockWaveEffect as xe, TiltShiftEffect as be, DotScreenEffect as Se, SepiaEffect as we, DepthPickingPass as Qe, GodRaysEffect as $, ColorDepthEffect as X, GridEffect as Ae, BrightnessContrastEffect as ye } from "postprocessing";
10
- import { useTresContext as A, useLoop as U, normalizeColor as ee } from "@tresjs/core";
11
- import { HalfFloatType as M, Uniform as y, Vector2 as c, Vector3 as P, OrthographicCamera as Ke, BufferGeometry as Je, Float32BufferAttribute as Me, Mesh as Ze, ShaderMaterial as S, UniformsUtils as E, WebGLRenderTarget as D, NoBlending as _e, Clock as $e, Color as Y, MathUtils as b, DataTexture as et, RedFormat as tt, FloatType as ot, MeshNormalMaterial as st, NearestFilter as R, DepthTexture as at, Vector4 as rt, RawShaderMaterial as it, ColorManagement as nt, SRGBTransfer as lt, LinearToneMapping as ut, ReinhardToneMapping as ct, CineonToneMapping as dt, ACESFilmicToneMapping as ft, AgXToneMapping as ht, NeutralToneMapping as pt, CustomToneMapping as mt, Texture as Te, LinearFilter as gt, AdditiveBlending as vt, MeshBasicMaterial as xt } from "three";
12
- import { useDevicePixelRatio as We } from "@vueuse/core";
13
- const Ue = /([^[.\]])+/g, bt = (r, t) => {
14
- if (!t)
15
- return;
16
- const e = Array.isArray(t) ? t : t.match(Ue);
17
- return e == null ? void 0 : e.reduce((o, s) => o && o[s], r);
18
- }, Ce = (r, t, e) => {
19
- const o = Array.isArray(t) ? t : t.match(Ue);
20
- o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = e), s[a]), r);
21
- }, ae = (r, t) => {
22
- const e = { ...r };
23
- return t.forEach((o) => delete e[o]), e;
24
- }, Q = (r, t, e, o, s = {}) => w(r, (a) => {
25
- var i;
26
- if (t.value)
27
- if (a === void 0) {
28
- const n = o();
29
- Ce(t.value, e, bt(n, e)), (i = n.dispose) == null || i.call(n);
30
- } else
31
- Ce(t.value, e, r());
32
- }, s), p = (r, t, e) => r.map(([o, s]) => Q(
33
- o,
34
- t,
35
- s,
36
- e
37
- )), G = (r, t, e) => Object.keys(r).map((o) => Q(
38
- () => r[o],
39
- t,
40
- o,
41
- e
42
- ));
43
- class Ee {
8
+ import { defineComponent as u, shallowRef as W, provide as Be, computed as L, watch as S, onUnmounted as U, renderSlot as Ne, inject as te, watchEffect as x, nextTick as oe, toRaw as ie } from "vue";
9
+ import { EffectComposer as ne, RenderPass as Ve, NormalPass as Ye, DepthDownsamplingPass as ke, EffectPass as qe, BloomEffect as le, DepthOfFieldEffect as ue, GlitchEffect as X, GlitchMode as Qe, NoiseEffect as ce, OutlineEffect as de, PixelationEffect as fe, VignetteEffect as he, Effect as q, BlendFunction as Q, ToneMappingEffect as pe, ChromaticAberrationEffect as K, HueSaturationEffect as me, ScanlineEffect as J, ColorAverageEffect as Z, LensDistortionEffect as ve, ShockWaveEffect as ge, TiltShiftEffect as xe, DotScreenEffect as be, SepiaEffect as Se, DepthPickingPass as Ke, GodRaysEffect as _, ColorDepthEffect as I, GridEffect as we, BrightnessContrastEffect as Ae } from "postprocessing";
10
+ import { useTresContext as y, useLoop as G, normalizeColor as $ } from "@tresjs/core";
11
+ import { HalfFloatType as T, Uniform as M, Vector2 as d, Vector3 as O, Mesh as ze, SphereGeometry as Je, MeshBasicMaterial as We, OrthographicCamera as Ze, BufferGeometry as _e, Float32BufferAttribute as ye, ShaderMaterial as A, UniformsUtils as P, WebGLRenderTarget as D, NoBlending as $e, Clock as et, Color as k, MathUtils as w, DataTexture as tt, RedFormat as ot, FloatType as st, MeshNormalMaterial as at, NearestFilter as F, DepthTexture as rt, Vector4 as it, RawShaderMaterial as nt, ColorManagement as lt, SRGBTransfer as ut, LinearToneMapping as ct, ReinhardToneMapping as dt, CineonToneMapping as ft, ACESFilmicToneMapping as ht, AgXToneMapping as pt, NeutralToneMapping as mt, CustomToneMapping as vt, Texture as Me, LinearFilter as gt, AdditiveBlending as xt } from "three";
12
+ import { useDevicePixelRatio as Ue } from "@vueuse/core";
13
+ class Te {
44
14
  static isWebGL2Available() {
45
15
  try {
46
- const t = document.createElement("canvas");
47
- return !!(window.WebGL2RenderingContext && t.getContext("webgl2"));
16
+ const e = document.createElement("canvas");
17
+ return !!(window.WebGL2RenderingContext && e.getContext("webgl2"));
48
18
  } catch {
49
19
  return !1;
50
20
  }
51
21
  }
52
- static isColorSpaceAvailable(t) {
22
+ static isColorSpaceAvailable(e) {
53
23
  try {
54
- const e = document.createElement("canvas"), o = window.WebGL2RenderingContext && e.getContext("webgl2");
55
- return o.drawingBufferColorSpace = t, o.drawingBufferColorSpace === t;
24
+ const t = document.createElement("canvas"), o = window.WebGL2RenderingContext && t.getContext("webgl2");
25
+ return o.drawingBufferColorSpace = e, o.drawingBufferColorSpace === e;
56
26
  } catch {
57
27
  return !1;
58
28
  }
@@ -60,8 +30,8 @@ class Ee {
60
30
  static getWebGL2ErrorMessage() {
61
31
  return this.getErrorMessage(2);
62
32
  }
63
- static getErrorMessage(t) {
64
- const e = {
33
+ static getErrorMessage(e) {
34
+ const t = {
65
35
  1: "WebGL",
66
36
  2: "WebGL 2"
67
37
  }, o = {
@@ -70,14 +40,14 @@ class Ee {
70
40
  };
71
41
  let s = 'Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';
72
42
  const a = document.createElement("div");
73
- return a.id = "webglmessage", a.style.fontFamily = "monospace", a.style.fontSize = "13px", a.style.fontWeight = "normal", a.style.textAlign = "center", a.style.background = "#fff", a.style.color = "#000", a.style.padding = "1.5em", a.style.width = "400px", a.style.margin = "5em auto 0", o[t] ? s = s.replace("$0", "graphics card") : s = s.replace("$0", "browser"), s = s.replace("$1", e[t]), a.innerHTML = s, a;
43
+ return a.id = "webglmessage", a.style.fontFamily = "monospace", a.style.fontSize = "13px", a.style.fontWeight = "normal", a.style.textAlign = "center", a.style.background = "#fff", a.style.color = "#000", a.style.padding = "1.5em", a.style.width = "400px", a.style.margin = "5em auto 0", o[e] ? s = s.replace("$0", "graphics card") : s = s.replace("$0", "browser"), s = s.replace("$1", t[e]), a.innerHTML = s, a;
74
44
  }
75
45
  // @deprecated, r168
76
46
  static isWebGLAvailable() {
77
47
  console.warn("isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.");
78
48
  try {
79
- const t = document.createElement("canvas");
80
- return !!(window.WebGLRenderingContext && (t.getContext("webgl") || t.getContext("experimental-webgl")));
49
+ const e = document.createElement("canvas");
50
+ return !!(window.WebGLRenderingContext && (e.getContext("webgl") || e.getContext("experimental-webgl")));
81
51
  } catch {
82
52
  return !1;
83
53
  }
@@ -86,7 +56,7 @@ class Ee {
86
56
  return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."), this.getErrorMessage(1);
87
57
  }
88
58
  }
89
- const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
59
+ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
90
60
  __name: "EffectComposerPmndrs",
91
61
  props: {
92
62
  enabled: { type: Boolean, default: !0 },
@@ -96,65 +66,109 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
96
66
  resolutionScale: {},
97
67
  autoClear: { type: Boolean, default: !0 },
98
68
  multisampling: { default: 0 },
99
- frameBufferType: { default: M }
69
+ frameBufferType: { default: T }
100
70
  },
101
71
  emits: ["render"],
102
- setup(r, { expose: t, emit: e }) {
103
- const o = r, s = e, { scene: a, camera: i, renderer: n, sizes: l, render: x } = A(), d = z(null);
104
- let m = null, h = null;
105
- Ne(re, d), t({ composer: d });
106
- const C = () => {
107
- d.value && (h = new Ve(a.value, i.value), h.enabled = !1, d.value.addPass(h), o.resolutionScale !== void 0 && Ee.isWebGL2Available() && (m = new Ye({
108
- normalBuffer: h.texture,
72
+ setup(r, { expose: e, emit: t }) {
73
+ const o = r, s = t, { scene: a, camera: i, renderer: n, sizes: l, render: f } = y(), h = W(null);
74
+ let v = null, c = null;
75
+ Be(se, h), e({ composer: h });
76
+ const b = () => {
77
+ h.value && (c = new Ye(a.value, i.value), c.enabled = !1, h.value.addPass(c), o.resolutionScale !== void 0 && Te.isWebGL2Available() && (v = new ke({
78
+ normalBuffer: c.texture,
109
79
  resolutionScale: o.resolutionScale
110
- }), m.enabled = !1, d.value.addPass(m)));
111
- }, H = L(() => {
112
- const g = new le(), N = {
80
+ }), v.enabled = !1, h.value.addPass(v)));
81
+ }, E = L(() => {
82
+ const g = new ne(), z = {
113
83
  depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : g.inputBuffer.depthBuffer,
114
84
  stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : g.inputBuffer.stencilBuffer,
115
- multisampling: Ee.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : g.multisampling : 0,
116
- frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : M
85
+ multisampling: Te.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : g.multisampling : 0,
86
+ frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : T
117
87
  };
118
- return g.dispose(), N;
119
- }), ie = () => {
88
+ return g.dispose(), z;
89
+ }), re = () => {
120
90
  var g;
121
- !n.value && !a.value && !i.value || ((g = d.value) == null || g.dispose(), d.value = new le(n.value, H.value), d.value.addPass(new je(a.value, i.value)), o.disableNormalPass || C());
91
+ !n.value && !a.value && !i.value || ((g = h.value) == null || g.dispose(), h.value = new ne(n.value, E.value), h.value.addPass(new Ve(a.value, i.value)), o.disableNormalPass || b());
122
92
  };
123
- w([n, a, i, () => o.disableNormalPass], () => {
124
- !l.width.value || !l.height.value || ie();
125
- }), w(() => [l.width.value, l.height.value], ([g, N]) => {
126
- !g && !N || (d.value ? d.value.setSize(g, N) : ie());
93
+ S([n, a, i, () => o.disableNormalPass], () => {
94
+ !l.width.value || !l.height.value || re();
95
+ }), S(() => [l.width.value, l.height.value], ([g, z]) => {
96
+ !g && !z || (h.value ? h.value.setSize(g, z) : re());
127
97
  }, {
128
98
  immediate: !0
129
99
  });
130
- const { render: Ie } = U();
131
- return Ie(() => {
132
- if (o.enabled && n.value && d.value && l.width.value && l.height.value && x.frames.value > 0) {
100
+ const { render: je } = G();
101
+ return je(() => {
102
+ if (o.enabled && n.value && h.value && l.width.value && l.height.value && f.frames.value > 0) {
133
103
  const g = n.value.autoClear;
134
- n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), d.value.render(), s("render", d.value), n.value.autoClear = g;
104
+ n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), h.value.render(), s("render", h.value), n.value.autoClear = g;
135
105
  }
136
- x.frames.value = x.mode.value === "always" ? 1 : Math.max(0, x.frames.value - 1);
137
- }), W(() => {
106
+ f.frames.value = f.mode.value === "always" ? 1 : Math.max(0, f.frames.value - 1);
107
+ }), U(() => {
138
108
  var g;
139
- (g = d.value) == null || g.dispose();
140
- }), (g, N) => ze(g.$slots, "default");
141
- }
142
- }), f = (r, t) => {
143
- const e = oe(re), o = z(null), s = z(null), { scene: a, camera: i, invalidate: n } = A();
144
- t && w(t, () => n()), v(() => {
145
- !i.value || !(s != null && s.value) || (s.value.mainCamera = i.value);
109
+ (g = h.value) == null || g.dispose();
110
+ }), (g, z) => Ne(g.$slots, "default");
111
+ }
112
+ }), p = (r, e, t) => {
113
+ const o = te(se), s = W(null), a = W(null), { scene: i, camera: n, invalidate: l } = y();
114
+ S(e, () => l());
115
+ const f = () => {
116
+ var c, b, E;
117
+ s.value && ((c = o == null ? void 0 : o.value) == null || c.removePass(s.value)), (b = a.value) == null || b.dispose(), (E = s.value) == null || E.dispose();
118
+ }, h = (c) => {
119
+ !n.value || !(o != null && o.value) || !i.value || (a.value = r(), s.value = new qe(n.value, a.value), o.value.addPass(s.value, c));
120
+ };
121
+ t && S(
122
+ () => t.map((c) => e[c]),
123
+ () => {
124
+ var b;
125
+ if (!(o != null && o.value))
126
+ return;
127
+ const c = (b = o.value) == null ? void 0 : b.passes.findIndex((E) => E === s.value);
128
+ ~c && (f(), h(c));
129
+ }
130
+ ), x(() => {
131
+ !n.value || !(a != null && a.value) || (a.value.mainCamera = n.value);
146
132
  });
147
- const l = v(() => {
148
- !i.value || !(e != null && e.value) || !a.value || (se(() => l()), !s.value && (s.value = r(), o.value = new ke(i.value, s.value), e.value.addPass(o.value)));
133
+ const v = x(() => {
134
+ !n.value || !(o != null && o.value) || !i.value || (oe(() => v()), !a.value && h());
149
135
  });
150
- return W(() => {
151
- var x, d, m;
152
- o.value && ((x = e == null ? void 0 : e.value) == null || x.removePass(o.value)), (d = s.value) == null || d.dispose(), (m = o.value) == null || m.dispose();
136
+ return U(() => {
137
+ f();
153
138
  }), {
154
- pass: o,
155
- effect: s
139
+ pass: s,
140
+ effect: a
156
141
  };
157
- }, Gt = /* @__PURE__ */ u({
142
+ }, Ge = /([^[.\]])+/g, bt = (r, e) => {
143
+ if (!e)
144
+ return;
145
+ const t = Array.isArray(e) ? e : e.match(Ge);
146
+ return t == null ? void 0 : t.reduce((o, s) => o && o[s], r);
147
+ }, Ce = (r, e, t) => {
148
+ const o = Array.isArray(e) ? e : e.match(Ge);
149
+ o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = t), s[a]), r);
150
+ }, St = (r, e) => {
151
+ const t = { ...r };
152
+ return e.forEach((o) => delete t[o]), t;
153
+ }, H = (r, e, t, o, s = {}) => S(r, (a) => {
154
+ var i;
155
+ if (e.value)
156
+ if (a === void 0) {
157
+ const n = o();
158
+ Ce(e.value, t, bt(n, t)), (i = n.dispose) == null || i.call(n);
159
+ } else
160
+ Ce(e.value, t, r());
161
+ }, s), m = (r, e, t) => r.map(([o, s]) => H(
162
+ o,
163
+ e,
164
+ s,
165
+ t
166
+ )), ae = (r, e, t) => Object.keys(r).map((o) => H(
167
+ () => r[o],
168
+ e,
169
+ o,
170
+ t
171
+ )), Ht = /* @__PURE__ */ u({
158
172
  __name: "BloomPmndrs",
159
173
  props: {
160
174
  blendFunction: {},
@@ -164,22 +178,22 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
164
178
  luminanceSmoothing: {},
165
179
  mipmapBlur: { type: Boolean, default: void 0 }
166
180
  },
167
- setup(r, { expose: t }) {
168
- const e = r, { pass: o, effect: s } = f(() => new ue(e), e);
169
- return t({ pass: o, effect: s }), p(
181
+ setup(r, { expose: e }) {
182
+ const t = r, { pass: o, effect: s } = p(() => new le(t), t, ["mipmapBlur"]);
183
+ return e({ pass: o, effect: s }), m(
170
184
  [
171
- // blendFunction is not updated, because it has no setter in BloomEffect
172
- [() => e.intensity, "intensity"],
173
- [() => e.kernelSize, "kernelSize"],
174
- [() => e.luminanceSmoothing, "luminanceMaterial.smoothing"],
175
- [() => e.luminanceThreshold, "luminanceMaterial.threshold"]
185
+ [() => t.blendFunction, "blendMode.blendFunction"],
186
+ [() => t.intensity, "intensity"],
187
+ [() => t.kernelSize, "kernelSize"],
188
+ [() => t.luminanceSmoothing, "luminanceMaterial.smoothing"],
189
+ [() => t.luminanceThreshold, "luminanceMaterial.threshold"]
176
190
  ],
177
191
  s,
178
- () => new ue()
192
+ () => new le()
179
193
  ), () => {
180
194
  };
181
195
  }
182
- }), Ht = /* @__PURE__ */ u({
196
+ }), Xt = /* @__PURE__ */ u({
183
197
  __name: "DepthOfFieldPmndrs",
184
198
  props: {
185
199
  blendFunction: {},
@@ -192,26 +206,26 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
192
206
  resolutionX: {},
193
207
  resolutionY: {}
194
208
  },
195
- setup(r, { expose: t }) {
196
- const e = r, { camera: o } = A(), { pass: s, effect: a } = f(() => new ce(o.value, e), e);
197
- return t({ pass: s, effect: a }), p(
209
+ setup(r, { expose: e }) {
210
+ const t = r, { camera: o } = y(), { pass: s, effect: a } = p(() => new ue(o.value, t), t);
211
+ return e({ pass: s, effect: a }), m(
198
212
  [
199
- // blendFunction is not updated, because it has no setter in BloomEffect
200
- [() => e.worldFocusDistance, "circleOfConfusionMaterial.worldFocusDistance"],
201
- [() => e.focusDistance, "circleOfConfusionMaterial.focusDistance"],
202
- [() => e.worldFocusRange, "circleOfConfusionMaterial.worldFocusRange"],
203
- [() => e.focusRange, "circleOfConfusionMaterial.focusRange"],
204
- [() => e.bokehScale, "bokehScale"],
205
- [() => e.resolutionScale, "blurPass.resolution.scale"],
206
- [() => e.resolutionX, "resolution.width"],
207
- [() => e.resolutionY, "resolution.height"]
213
+ [() => t.blendFunction, "blendMode.blendFunction"],
214
+ [() => t.worldFocusDistance, "circleOfConfusionMaterial.worldFocusDistance"],
215
+ [() => t.focusDistance, "circleOfConfusionMaterial.focusDistance"],
216
+ [() => t.worldFocusRange, "circleOfConfusionMaterial.worldFocusRange"],
217
+ [() => t.focusRange, "circleOfConfusionMaterial.focusRange"],
218
+ [() => t.bokehScale, "bokehScale"],
219
+ [() => t.resolutionScale, "blurPass.resolution.scale"],
220
+ [() => t.resolutionX, "resolution.width"],
221
+ [() => t.resolutionY, "resolution.height"]
208
222
  ],
209
223
  a,
210
- () => new ce()
224
+ () => new ue()
211
225
  ), () => {
212
226
  };
213
227
  }
214
- }), Xt = /* @__PURE__ */ u({
228
+ }), It = /* @__PURE__ */ u({
215
229
  __name: "GlitchPmndrs",
216
230
  props: {
217
231
  blendFunction: {},
@@ -226,43 +240,51 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
226
240
  perturbationMap: {},
227
241
  dtSize: {}
228
242
  },
229
- setup(r, { expose: t }) {
230
- const e = r, { pass: o, effect: s } = f(() => new K(e), e);
231
- t({ pass: o, effect: s });
232
- const { onBeforeRender: a } = U();
233
- return a(({ invalidate: i }) => i()), v(() => {
243
+ setup(r, { expose: e }) {
244
+ const t = r, { pass: o, effect: s } = p(() => new X(t), t, ["dtSize"]);
245
+ e({ pass: o, effect: s });
246
+ const { onBeforeRender: a } = G();
247
+ return a(({ invalidate: i }) => i()), x(() => {
234
248
  const i = () => {
235
- if (e.mode !== void 0)
236
- return e.active === !1 ? qe.DISABLED : e.mode;
237
- const n = new K(), l = n.mode;
249
+ if (t.mode !== void 0)
250
+ return t.active === !1 ? Qe.DISABLED : t.mode;
251
+ const n = new X(), l = n.mode;
238
252
  return n.dispose(), l;
239
253
  };
240
254
  s.value && (s.value.mode = i());
241
- }), G(
242
- ae(e, ["active", "mode", "blendFunction"]),
255
+ }), H(
256
+ () => t.blendFunction,
243
257
  s,
244
- () => new K()
258
+ "blendMode.blendFunction",
259
+ () => new X()
260
+ ), ae(
261
+ St(t, ["active", "blendFunction"]),
262
+ s,
263
+ () => new X()
245
264
  ), () => {
246
265
  };
247
266
  }
248
- }), It = /* @__PURE__ */ u({
267
+ }), jt = /* @__PURE__ */ u({
249
268
  __name: "NoisePmndrs",
250
269
  props: {
251
270
  premultiply: { type: Boolean, default: void 0 },
252
271
  blendFunction: {}
253
272
  },
254
- setup(r, { expose: t }) {
255
- const e = r, { pass: o, effect: s } = f(() => new de(e), e);
256
- t({ pass: o, effect: s });
257
- const { onBeforeRender: a } = U();
258
- return a(({ invalidate: i }) => i()), G(
259
- ae(e, ["blendFunction"]),
273
+ setup(r, { expose: e }) {
274
+ const t = r, { pass: o, effect: s } = p(() => new ce(t), t);
275
+ e({ pass: o, effect: s });
276
+ const { onBeforeRender: a } = G();
277
+ return a(({ invalidate: i }) => i()), m(
278
+ [
279
+ [() => t.blendFunction, "blendMode.blendFunction"],
280
+ [() => t.premultiply, "premultiply"]
281
+ ],
260
282
  s,
261
- () => new de()
283
+ () => new ce()
262
284
  ), () => {
263
285
  };
264
286
  }
265
- }), jt = /* @__PURE__ */ u({
287
+ }), Vt = /* @__PURE__ */ u({
266
288
  __name: "OutlinePmndrs",
267
289
  props: {
268
290
  outlinedObjects: {},
@@ -281,77 +303,83 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
281
303
  hiddenEdgeColor: {},
282
304
  visibleEdgeColor: {}
283
305
  },
284
- setup(r, { expose: t }) {
285
- const e = r, o = (d) => d !== void 0 ? ee(d).getHex() : void 0, { camera: s, scene: a } = A(), i = {
286
- blur: e.blur,
287
- xRay: e.xRay,
288
- kernelSize: e.kernelSize,
289
- pulseSpeed: e.pulseSpeed,
290
- resolutionX: e.resolutionX,
291
- resolutionY: e.resolutionY,
292
- patternScale: e.patternScale,
293
- edgeStrength: e.edgeStrength,
294
- blendFunction: e.blendFunction,
295
- multisampling: e.multisampling,
296
- patternTexture: e.patternTexture,
297
- resolutionScale: e.resolutionScale,
298
- hiddenEdgeColor: o(e.hiddenEdgeColor),
299
- visibleEdgeColor: o(e.visibleEdgeColor)
300
- }, { pass: n, effect: l } = f(() => new fe(a.value, s.value, i), e);
301
- t({ pass: n, effect: l }), w(
302
- [() => e.outlinedObjects, l],
306
+ setup(r, { expose: e }) {
307
+ const t = r, o = (f) => f !== void 0 ? $(f).getHex() : void 0, { camera: s, scene: a } = y(), { pass: i, effect: n } = p(
308
+ () => new de(
309
+ a.value,
310
+ s.value,
311
+ {
312
+ blur: t.blur,
313
+ xRay: t.xRay,
314
+ kernelSize: t.kernelSize,
315
+ pulseSpeed: t.pulseSpeed,
316
+ resolutionX: t.resolutionX,
317
+ resolutionY: t.resolutionY,
318
+ patternScale: t.patternScale,
319
+ edgeStrength: t.edgeStrength,
320
+ blendFunction: t.blendFunction,
321
+ multisampling: t.multisampling,
322
+ patternTexture: t.patternTexture,
323
+ resolutionScale: t.resolutionScale,
324
+ hiddenEdgeColor: o(t.hiddenEdgeColor),
325
+ visibleEdgeColor: o(t.visibleEdgeColor)
326
+ // width and height are explicitly omitted, because they are deprecated in postprocessing's OutlineEffect
327
+ }
328
+ ),
329
+ t
330
+ );
331
+ e({ pass: i, effect: n }), S(
332
+ [() => t.outlinedObjects, n],
303
333
  // watchEffect is intentionally not used here as it would result in an endless loop
304
334
  () => {
305
- var d;
306
- (d = l.value) == null || d.selection.set(e.outlinedObjects || []);
335
+ var f;
336
+ (f = n.value) == null || f.selection.set(t.outlinedObjects || []);
307
337
  },
308
338
  {
309
339
  immediate: !0
310
340
  }
311
341
  );
312
- const x = L(() => ({
313
- hiddenEdgeColor: e.hiddenEdgeColor ? ee(e.hiddenEdgeColor) : void 0,
314
- visibleEdgeColor: e.visibleEdgeColor ? ee(e.visibleEdgeColor) : void 0
342
+ const l = L(() => ({
343
+ hiddenEdgeColor: t.hiddenEdgeColor ? $(t.hiddenEdgeColor) : void 0,
344
+ visibleEdgeColor: t.visibleEdgeColor ? $(t.visibleEdgeColor) : void 0
315
345
  }));
316
- return p(
346
+ return m(
317
347
  [
318
- /* some properties are not updated because of different reasons:
319
- resolutionX - has no setter in OutlineEffect
320
- resolutionY - has no setter in OutlineEffect
321
- blendFunction - has no setter in OutlineEffect
322
- patternTexture - different type in constructor and in setter
323
- resolutionScale - has no setter in OutlineEffect
324
- */
325
- [() => e.blur, "blur"],
326
- [() => e.xRay, "xRay"],
327
- [() => e.pulseSpeed, "pulseSpeed"],
328
- [() => e.kernelSize, "kernelSize"],
329
- [() => e.edgeStrength, "edgeStrength"],
330
- [() => e.patternScale, "patternScale"],
331
- [() => e.multisampling, "multisampling"],
332
- [() => x.value.hiddenEdgeColor, "hiddenEdgeColor"],
333
- [() => x.value.visibleEdgeColor, "visibleEdgeColor"]
348
+ [() => t.blendFunction, "blendMode.blendFunction"],
349
+ [() => t.blur, "blur"],
350
+ [() => t.xRay, "xRay"],
351
+ [() => t.pulseSpeed, "pulseSpeed"],
352
+ [() => t.kernelSize, "kernelSize"],
353
+ [() => t.edgeStrength, "edgeStrength"],
354
+ [() => t.patternScale, "patternScale"],
355
+ [() => t.multisampling, "multisampling"],
356
+ [() => t.resolutionX, "resolution.width"],
357
+ [() => t.resolutionY, "resolution.height"],
358
+ [() => t.patternTexture, "patternTexture"],
359
+ [() => t.resolutionScale, "resolution.scale"],
360
+ [() => l.value.hiddenEdgeColor, "hiddenEdgeColor"],
361
+ [() => l.value.visibleEdgeColor, "visibleEdgeColor"]
334
362
  ],
335
- l,
336
- () => new fe()
363
+ n,
364
+ () => new de()
337
365
  ), () => {
338
366
  };
339
367
  }
340
- }), Vt = /* @__PURE__ */ u({
368
+ }), Yt = /* @__PURE__ */ u({
341
369
  __name: "PixelationPmndrs",
342
370
  props: {
343
371
  granularity: {}
344
372
  },
345
- setup(r, { expose: t }) {
346
- const e = r, { pass: o, effect: s } = f(() => new he(e.granularity), e);
347
- return t({ pass: o, effect: s }), G(
348
- e,
373
+ setup(r, { expose: e }) {
374
+ const t = r, { pass: o, effect: s } = p(() => new fe(t.granularity), t);
375
+ return e({ pass: o, effect: s }), ae(
376
+ t,
349
377
  s,
350
- () => new he()
378
+ () => new fe()
351
379
  ), () => {
352
380
  };
353
381
  }
354
- }), Yt = /* @__PURE__ */ u({
382
+ }), kt = /* @__PURE__ */ u({
355
383
  __name: "VignettePmndrs",
356
384
  props: {
357
385
  technique: {},
@@ -359,17 +387,22 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
359
387
  offset: {},
360
388
  darkness: {}
361
389
  },
362
- setup(r, { expose: t }) {
363
- const e = r, { pass: o, effect: s } = f(() => new pe(e), e);
364
- return t({ pass: o, effect: s }), G(
365
- ae(e, ["blendFunction"]),
390
+ setup(r, { expose: e }) {
391
+ const t = r, { pass: o, effect: s } = p(() => new he(t), t);
392
+ return e({ pass: o, effect: s }), m(
393
+ [
394
+ [() => t.blendFunction, "blendMode.blendFunction"],
395
+ [() => t.offset, "offset"],
396
+ [() => t.darkness, "darkness"],
397
+ [() => t.technique, "technique"]
398
+ ],
366
399
  s,
367
- () => new pe()
400
+ () => new he()
368
401
  ), () => {
369
402
  };
370
403
  }
371
404
  });
372
- class De extends k {
405
+ class Ee extends q {
373
406
  /**
374
407
  * Creates a new BarrelBlurEffect instance.
375
408
  *
@@ -379,7 +412,7 @@ class De extends k {
379
412
  * @param {Vector2} [options.offset] - Offset of the barrel distortion center (0 to 1 for both x and y). This allows you to change the position of the distortion effect.
380
413
  *
381
414
  */
382
- constructor({ blendFunction: t = q.NORMAL, amount: e = 0.15, offset: o = new c(0.5, 0.5) } = {}) {
415
+ constructor({ blendFunction: e = Q.NORMAL, amount: t = 0.15, offset: o = new d(0.5, 0.5) } = {}) {
383
416
  super("BarrelBlurEffect", `
384
417
  uniform float amount;
385
418
  uniform vec2 offset;
@@ -425,11 +458,11 @@ class De extends k {
425
458
  outputColor = vec4(outcol, inputColor.a); // Preserves original alpha
426
459
  }
427
460
  `, {
428
- blendFunction: t,
461
+ blendFunction: e,
429
462
  uniforms: /* @__PURE__ */ new Map([
430
- ["amount", new y(e)],
463
+ ["amount", new M(t)],
431
464
  // Uniform controlling the intensity of distortion
432
- ["offset", new y(o)]
465
+ ["offset", new M(o)]
433
466
  // Uniform controlling the offset of distortion
434
467
  ])
435
468
  });
@@ -440,11 +473,11 @@ class De extends k {
440
473
  * @type {number}
441
474
  */
442
475
  get amount() {
443
- var t;
444
- return (t = this.uniforms.get("amount")) == null ? void 0 : t.value;
476
+ var e;
477
+ return (e = this.uniforms.get("amount")) == null ? void 0 : e.value;
445
478
  }
446
- set amount(t) {
447
- this.uniforms.get("amount").value = t;
479
+ set amount(e) {
480
+ this.uniforms.get("amount").value = e;
448
481
  }
449
482
  /**
450
483
  * The offset.
@@ -452,40 +485,40 @@ class De extends k {
452
485
  * @type {Vector2}
453
486
  */
454
487
  get offset() {
455
- var t;
456
- return (t = this.uniforms.get("offset")) == null ? void 0 : t.value;
488
+ var e;
489
+ return (e = this.uniforms.get("offset")) == null ? void 0 : e.value;
457
490
  }
458
- set offset(t) {
459
- this.uniforms.get("offset").value = t;
491
+ set offset(e) {
492
+ this.uniforms.get("offset").value = e;
460
493
  }
461
494
  }
462
- const kt = /* @__PURE__ */ u({
495
+ const qt = /* @__PURE__ */ u({
463
496
  __name: "BarrelBlurPmndrs",
464
497
  props: {
465
498
  blendFunction: {},
466
499
  amount: {},
467
500
  offset: {}
468
501
  },
469
- setup(r, { expose: t }) {
470
- const e = r, { pass: o, effect: s } = f(
471
- () => new De({
472
- ...e,
473
- offset: Array.isArray(e.offset) ? new c(...e.offset) : e.offset
502
+ setup(r, { expose: e }) {
503
+ const t = r, { pass: o, effect: s } = p(
504
+ () => new Ee({
505
+ ...t,
506
+ offset: Array.isArray(t.offset) ? new d(...t.offset) : t.offset
474
507
  }),
475
- e
508
+ t
476
509
  );
477
- return t({ pass: o, effect: s }), p(
510
+ return e({ pass: o, effect: s }), m(
478
511
  [
479
- [() => e.blendFunction, "blendMode.blendFunction"],
480
- [() => e.amount, "amount"],
481
- [() => e.offset, "offset"]
512
+ [() => t.blendFunction, "blendMode.blendFunction"],
513
+ [() => t.amount, "amount"],
514
+ [() => t.offset, "offset"]
482
515
  ],
483
516
  s,
484
- () => new De()
517
+ () => new Ee()
485
518
  ), () => {
486
519
  };
487
520
  }
488
- }), qt = /* @__PURE__ */ u({
521
+ }), Qt = /* @__PURE__ */ u({
489
522
  __name: "ToneMappingPmndrs",
490
523
  props: {
491
524
  mode: {},
@@ -496,24 +529,24 @@ const kt = /* @__PURE__ */ u({
496
529
  minLuminance: {},
497
530
  whitePoint: {}
498
531
  },
499
- setup(r, { expose: t }) {
500
- const e = r, { pass: o, effect: s } = f(() => new me(e), e);
501
- return t({ pass: o, effect: s }), p(
532
+ setup(r, { expose: e }) {
533
+ const t = r, { pass: o, effect: s } = p(() => new pe(t), t);
534
+ return e({ pass: o, effect: s }), m(
502
535
  [
503
- [() => e.mode, "mode"],
504
- [() => e.blendFunction, "blendMode.blendFunction"],
505
- [() => e.resolution, "resolution"],
506
- [() => e.averageLuminance, "averageLuminance"],
507
- [() => e.middleGrey, "middleGrey"],
508
- [() => e.minLuminance, "adaptiveLuminanceMaterial.minLuminance"],
509
- [() => e.whitePoint, "whitePoint"]
536
+ [() => t.mode, "mode"],
537
+ [() => t.blendFunction, "blendMode.blendFunction"],
538
+ [() => t.resolution, "resolution"],
539
+ [() => t.averageLuminance, "averageLuminance"],
540
+ [() => t.middleGrey, "middleGrey"],
541
+ [() => t.minLuminance, "adaptiveLuminanceMaterial.minLuminance"],
542
+ [() => t.whitePoint, "whitePoint"]
510
543
  ],
511
544
  s,
512
- () => new me()
545
+ () => new pe()
513
546
  ), () => {
514
547
  };
515
548
  }
516
- }), Qt = /* @__PURE__ */ u({
549
+ }), Kt = /* @__PURE__ */ u({
517
550
  __name: "ChromaticAberrationPmndrs",
518
551
  props: {
519
552
  blendFunction: {},
@@ -521,47 +554,47 @@ const kt = /* @__PURE__ */ u({
521
554
  radialModulation: { type: Boolean, default: void 0 },
522
555
  modulationOffset: {}
523
556
  },
524
- setup(r, { expose: t }) {
525
- const e = r, o = new J(), { pass: s, effect: a } = f(() => new J({
526
- ...e,
557
+ setup(r, { expose: e }) {
558
+ const t = r, o = new K(), { pass: s, effect: a } = p(() => new K({
559
+ ...t,
527
560
  // Unfortunately, these defaults must be set this way as the type in postprocessing is not correct.
528
561
  // The arguments are optional in the actual constructor, but not in the type.
529
- radialModulation: e.radialModulation ?? o.radialModulation,
530
- modulationOffset: e.modulationOffset ?? o.modulationOffset
531
- }), e);
532
- return o.dispose(), t({ pass: s, effect: a }), p(
562
+ radialModulation: t.radialModulation ?? o.radialModulation,
563
+ modulationOffset: t.modulationOffset ?? o.modulationOffset
564
+ }), t);
565
+ return o.dispose(), e({ pass: s, effect: a }), m(
533
566
  [
534
- [() => e.blendFunction, "blendMode.blendFunction"],
535
- [() => e.offset, "offset"],
536
- [() => e.radialModulation, "radialModulation"],
537
- [() => e.modulationOffset, "modulationOffset"]
567
+ [() => t.blendFunction, "blendMode.blendFunction"],
568
+ [() => t.offset, "offset"],
569
+ [() => t.radialModulation, "radialModulation"],
570
+ [() => t.modulationOffset, "modulationOffset"]
538
571
  ],
539
572
  a,
540
- () => new J()
573
+ () => new K()
541
574
  ), () => {
542
575
  };
543
576
  }
544
- }), Kt = /* @__PURE__ */ u({
577
+ }), Jt = /* @__PURE__ */ u({
545
578
  __name: "HueSaturationPmndrs",
546
579
  props: {
547
580
  saturation: {},
548
581
  hue: {},
549
582
  blendFunction: {}
550
583
  },
551
- setup(r, { expose: t }) {
552
- const e = r, { pass: o, effect: s } = f(() => new ge(e), e);
553
- return t({ pass: o, effect: s }), p(
584
+ setup(r, { expose: e }) {
585
+ const t = r, { pass: o, effect: s } = p(() => new me(t), t);
586
+ return e({ pass: o, effect: s }), m(
554
587
  [
555
- [() => e.blendFunction, "blendMode.blendFunction"],
556
- [() => e.hue, "hue"],
557
- [() => e.saturation, "saturation"]
588
+ [() => t.blendFunction, "blendMode.blendFunction"],
589
+ [() => t.hue, "hue"],
590
+ [() => t.saturation, "saturation"]
558
591
  ],
559
592
  s,
560
- () => new ge()
593
+ () => new me()
561
594
  ), () => {
562
595
  };
563
596
  }
564
- }), Jt = /* @__PURE__ */ u({
597
+ }), Zt = /* @__PURE__ */ u({
565
598
  __name: "ScanlinePmndrs",
566
599
  props: {
567
600
  blendFunction: {},
@@ -569,24 +602,24 @@ const kt = /* @__PURE__ */ u({
569
602
  scrollSpeed: {},
570
603
  opacity: {}
571
604
  },
572
- setup(r, { expose: t }) {
573
- const e = r, { pass: o, effect: s } = f(() => new Z(e), e);
574
- return t({ pass: o, effect: s }), p(
605
+ setup(r, { expose: e }) {
606
+ const t = r, { pass: o, effect: s } = p(() => new J(t), t);
607
+ return e({ pass: o, effect: s }), m(
575
608
  [
576
- [() => e.blendFunction, "blendMode.blendFunction"],
577
- [() => e.density, "density"],
578
- [() => e.scrollSpeed, "scrollSpeed"]
609
+ [() => t.blendFunction, "blendMode.blendFunction"],
610
+ [() => t.density, "density"],
611
+ [() => t.scrollSpeed, "scrollSpeed"]
579
612
  ],
580
613
  s,
581
- () => new Z()
582
- ), w(
583
- [() => e.opacity],
614
+ () => new J()
615
+ ), S(
616
+ [() => t.opacity],
584
617
  () => {
585
618
  var a, i;
586
- if (e.opacity !== void 0)
587
- (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
619
+ if (t.opacity !== void 0)
620
+ (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
588
621
  else {
589
- const n = new Z();
622
+ const n = new J();
590
623
  (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
591
624
  }
592
625
  },
@@ -596,7 +629,7 @@ const kt = /* @__PURE__ */ u({
596
629
  ), () => {
597
630
  };
598
631
  }
599
- }), St = `
632
+ }), wt = `
600
633
  uniform float radius;
601
634
  uniform int sectorCount;
602
635
 
@@ -693,7 +726,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
693
726
  outputColor = vec4(finalColor, inputColor.a);
694
727
  }
695
728
  `;
696
- class Pe extends k {
729
+ class Pe extends q {
697
730
  /**
698
731
  * Creates a new KuwaharaEffect instance.
699
732
  *
@@ -703,12 +736,12 @@ class Pe extends k {
703
736
  * @param {number} [options.sectorCount] - Number of sectors.
704
737
  *
705
738
  */
706
- constructor({ blendFunction: t = q.NORMAL, radius: e = 1, sectorCount: o = 4 } = {}) {
707
- super("KuwaharaEffect", St, {
708
- blendFunction: t,
739
+ constructor({ blendFunction: e = Q.NORMAL, radius: t = 1, sectorCount: o = 4 } = {}) {
740
+ super("KuwaharaEffect", wt, {
741
+ blendFunction: e,
709
742
  uniforms: /* @__PURE__ */ new Map([
710
- ["radius", new y(e)],
711
- ["sectorCount", new y(o)]
743
+ ["radius", new M(t)],
744
+ ["sectorCount", new M(o)]
712
745
  ])
713
746
  });
714
747
  }
@@ -718,11 +751,11 @@ class Pe extends k {
718
751
  * @type {number}
719
752
  */
720
753
  get radius() {
721
- var t;
722
- return (t = this.uniforms.get("radius")) == null ? void 0 : t.value;
754
+ var e;
755
+ return (e = this.uniforms.get("radius")) == null ? void 0 : e.value;
723
756
  }
724
- set radius(t) {
725
- this.uniforms.get("radius").value = t;
757
+ set radius(e) {
758
+ this.uniforms.get("radius").value = e;
726
759
  }
727
760
  /**
728
761
  * The sector count.
@@ -730,65 +763,65 @@ class Pe extends k {
730
763
  * @type {number}
731
764
  */
732
765
  get sectorCount() {
733
- var t;
734
- return (t = this.uniforms.get("sectorCount")) == null ? void 0 : t.value;
766
+ var e;
767
+ return (e = this.uniforms.get("sectorCount")) == null ? void 0 : e.value;
735
768
  }
736
- set sectorCount(t) {
737
- this.uniforms.get("sectorCount").value = t;
769
+ set sectorCount(e) {
770
+ this.uniforms.get("sectorCount").value = e;
738
771
  }
739
772
  }
740
- const Zt = /* @__PURE__ */ u({
773
+ const _t = /* @__PURE__ */ u({
741
774
  __name: "KuwaharaPmndrs",
742
775
  props: {
743
776
  blendFunction: {},
744
777
  radius: {},
745
778
  sectorCount: {}
746
779
  },
747
- setup(r, { expose: t }) {
748
- const e = r, { pass: o, effect: s } = f(
749
- () => new Pe(e),
750
- e
780
+ setup(r, { expose: e }) {
781
+ const t = r, { pass: o, effect: s } = p(
782
+ () => new Pe(t),
783
+ t
751
784
  );
752
- return t({ pass: o, effect: s }), p(
785
+ return e({ pass: o, effect: s }), m(
753
786
  [
754
- [() => e.blendFunction, "blendMode.blendFunction"],
755
- [() => e.radius, "radius"],
756
- [() => e.sectorCount, "sectorCount"]
787
+ [() => t.blendFunction, "blendMode.blendFunction"],
788
+ [() => t.radius, "radius"],
789
+ [() => t.sectorCount, "sectorCount"]
757
790
  ],
758
791
  s,
759
792
  () => new Pe()
760
793
  ), () => {
761
794
  };
762
795
  }
763
- }), _t = /* @__PURE__ */ u({
796
+ }), $t = /* @__PURE__ */ u({
764
797
  __name: "ColorAveragePmndrs",
765
798
  props: {
766
799
  blendFunction: {},
767
800
  opacity: {}
768
801
  },
769
- setup(r, { expose: t }) {
770
- const e = r, { pass: o, effect: s } = f(() => new _(e.blendFunction), e);
771
- return t({ pass: o, effect: s }), Q(
772
- () => e.blendFunction,
802
+ setup(r, { expose: e }) {
803
+ const t = r, { pass: o, effect: s } = p(() => new Z(t.blendFunction), t);
804
+ return e({ pass: o, effect: s }), H(
805
+ () => t.blendFunction,
773
806
  s,
774
807
  "blendMode.blendFunction",
775
- () => new _()
776
- ), w(
777
- [s, () => e.opacity],
808
+ () => new Z()
809
+ ), S(
810
+ [s, () => t.opacity],
778
811
  () => {
779
812
  var a, i;
780
813
  if (s.value)
781
- if (e.opacity !== void 0)
782
- (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
814
+ if (t.opacity !== void 0)
815
+ (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
783
816
  else {
784
- const n = new _();
817
+ const n = new Z();
785
818
  (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
786
819
  }
787
820
  }
788
821
  ), () => {
789
822
  };
790
823
  }
791
- }), $t = /* @__PURE__ */ u({
824
+ }), eo = /* @__PURE__ */ u({
792
825
  __name: "LensDistortionPmndrs",
793
826
  props: {
794
827
  distortion: {},
@@ -796,24 +829,24 @@ const Zt = /* @__PURE__ */ u({
796
829
  focalLength: {},
797
830
  skew: {}
798
831
  },
799
- setup(r, { expose: t }) {
800
- const e = r, { pass: o, effect: s } = f(
832
+ setup(r, { expose: e }) {
833
+ const t = r, { pass: o, effect: s } = p(
801
834
  () => new ve({
802
- ...e,
803
- distortion: e.distortion ? Array.isArray(e.distortion) ? new c(...e.distortion) : e.distortion : new c(),
804
- principalPoint: e.principalPoint ? Array.isArray(e.principalPoint) ? new c(...e.principalPoint) : e.principalPoint : new c(),
805
- focalLength: e.focalLength ? Array.isArray(e.focalLength) ? new c(...e.focalLength) : e.focalLength : new c()
835
+ ...t,
836
+ distortion: t.distortion ? Array.isArray(t.distortion) ? new d(...t.distortion) : t.distortion : new d(),
837
+ principalPoint: t.principalPoint ? Array.isArray(t.principalPoint) ? new d(...t.principalPoint) : t.principalPoint : new d(),
838
+ focalLength: t.focalLength ? Array.isArray(t.focalLength) ? new d(...t.focalLength) : t.focalLength : new d()
806
839
  }),
807
- e
840
+ t
808
841
  );
809
- return t({ pass: o, effect: s }), G(
810
- e,
842
+ return e({ pass: o, effect: s }), ae(
843
+ t,
811
844
  s,
812
845
  () => new ve()
813
846
  ), () => {
814
847
  };
815
848
  }
816
- }), eo = /* @__PURE__ */ u({
849
+ }), to = /* @__PURE__ */ u({
817
850
  __name: "ShockWavePmndrs",
818
851
  props: {
819
852
  position: {},
@@ -822,30 +855,30 @@ const Zt = /* @__PURE__ */ u({
822
855
  maxRadius: {},
823
856
  waveSize: {}
824
857
  },
825
- setup(r, { expose: t }) {
826
- const e = r, { camera: o } = A(), { pass: s, effect: a } = f(
827
- () => new xe(o.value, Array.isArray(e.position) ? new P(...e.position) : e.position, e),
828
- e
858
+ setup(r, { expose: e }) {
859
+ const t = r, { camera: o } = y(), { pass: s, effect: a } = p(
860
+ () => new ge(o.value, Array.isArray(t.position) ? new O(...t.position) : t.position, t),
861
+ t
829
862
  );
830
- return t({ pass: s, effect: a }), w(
831
- () => e.position,
863
+ return e({ pass: s, effect: a }), S(
864
+ () => t.position,
832
865
  (i) => {
833
- a.value && (Array.isArray(i) ? a.value.position.set(...i) : i instanceof P && a.value.position.copy(i));
866
+ a.value && (Array.isArray(i) ? a.value.position.set(...i) : i instanceof O && a.value.position.copy(i));
834
867
  },
835
868
  { immediate: !0 }
836
- ), p(
869
+ ), m(
837
870
  [
838
- [() => e.amplitude, "amplitude"],
839
- [() => e.waveSize, "waveSize"],
840
- [() => e.maxRadius, "maxRadius"],
841
- [() => e.speed, "speed"]
871
+ [() => t.amplitude, "amplitude"],
872
+ [() => t.waveSize, "waveSize"],
873
+ [() => t.maxRadius, "maxRadius"],
874
+ [() => t.speed, "speed"]
842
875
  ],
843
876
  a,
844
- () => new xe()
877
+ () => new ge()
845
878
  ), () => {
846
879
  };
847
880
  }
848
- }), to = /* @__PURE__ */ u({
881
+ }), oo = /* @__PURE__ */ u({
849
882
  __name: "TiltShiftPmndrs",
850
883
  props: {
851
884
  blendFunction: {},
@@ -858,73 +891,73 @@ const Zt = /* @__PURE__ */ u({
858
891
  resolutionX: {},
859
892
  resolutionY: {}
860
893
  },
861
- setup(r, { expose: t }) {
862
- const e = r, { pass: o, effect: s } = f(() => new be(e), e);
863
- return t({ pass: o, effect: s }), p(
894
+ setup(r, { expose: e }) {
895
+ const t = r, { pass: o, effect: s } = p(() => new xe(t), t);
896
+ return e({ pass: o, effect: s }), m(
864
897
  [
865
- [() => e.blendFunction, "blendMode.blendFunction"],
866
- [() => e.offset, "offset"],
867
- [() => e.rotation, "rotation"],
868
- [() => e.focusArea, "focusArea"],
869
- [() => e.feather, "feather"],
870
- [() => e.kernelSize, "kernelSize"],
871
- [() => e.resolutionScale, "resolution.scale"],
872
- [() => e.resolutionX, "resolution.width"],
873
- [() => e.resolutionY, "resolution.height"]
898
+ [() => t.blendFunction, "blendMode.blendFunction"],
899
+ [() => t.offset, "offset"],
900
+ [() => t.rotation, "rotation"],
901
+ [() => t.focusArea, "focusArea"],
902
+ [() => t.feather, "feather"],
903
+ [() => t.kernelSize, "kernelSize"],
904
+ [() => t.resolutionScale, "resolution.scale"],
905
+ [() => t.resolutionX, "resolution.width"],
906
+ [() => t.resolutionY, "resolution.height"]
874
907
  ],
875
908
  s,
876
- () => new be()
909
+ () => new xe()
877
910
  ), () => {
878
911
  };
879
912
  }
880
- }), oo = /* @__PURE__ */ u({
913
+ }), so = /* @__PURE__ */ u({
881
914
  __name: "DotScreenPmndrs",
882
915
  props: {
883
916
  angle: {},
884
917
  scale: {},
885
918
  blendFunction: {}
886
919
  },
887
- setup(r, { expose: t }) {
888
- const e = r, { pass: o, effect: s } = f(() => new Se(e), e);
889
- return t({ pass: o, effect: s }), p(
920
+ setup(r, { expose: e }) {
921
+ const t = r, { pass: o, effect: s } = p(() => new be(t), t);
922
+ return e({ pass: o, effect: s }), m(
890
923
  [
891
- [() => e.blendFunction, "blendMode.blendFunction"],
892
- [() => e.angle, "angle"],
893
- [() => e.scale, "scale"]
924
+ [() => t.blendFunction, "blendMode.blendFunction"],
925
+ [() => t.angle, "angle"],
926
+ [() => t.scale, "scale"]
894
927
  ],
895
928
  s,
896
- () => new Se()
929
+ () => new be()
897
930
  ), () => {
898
931
  };
899
932
  }
900
- }), so = /* @__PURE__ */ u({
933
+ }), ao = /* @__PURE__ */ u({
901
934
  __name: "SepiaPmndrs",
902
935
  props: {
903
936
  blendFunction: {},
904
937
  intensity: {}
905
938
  },
906
- setup(r, { expose: t }) {
907
- const e = r, { pass: o, effect: s } = f(() => new we(e), e);
908
- return t({ pass: o, effect: s }), p(
939
+ setup(r, { expose: e }) {
940
+ const t = r, { pass: o, effect: s } = p(() => new Se(t), t);
941
+ return e({ pass: o, effect: s }), m(
909
942
  [
910
- [() => e.blendFunction, "blendMode.blendFunction"],
911
- [() => e.intensity, "intensity"]
943
+ [() => t.blendFunction, "blendMode.blendFunction"],
944
+ [() => t.intensity, "intensity"]
912
945
  ],
913
946
  s,
914
- () => new we()
947
+ () => new Se()
915
948
  ), () => {
916
949
  };
917
950
  }
918
951
  });
919
- class Le extends k {
952
+ class De extends q {
920
953
  /**
921
954
  * Creates a new LinocutEffect instance.
922
955
  *
923
956
  * @param {LinocutPmndrsProps} [options] - Configuration options for the effect.
924
957
  *
925
958
  */
926
- constructor({ blendFunction: t = q.NORMAL, scale: e = 0.85, noiseScale: o = 0, center: s = [0.5, 0.5], rotation: a = 0 } = {}) {
927
- const i = Array.isArray(s) ? new c().fromArray(s) : s;
959
+ constructor({ blendFunction: e = Q.NORMAL, scale: t = 0.85, noiseScale: o = 0, center: s = [0.5, 0.5], rotation: a = 0 } = {}) {
960
+ const i = Array.isArray(s) ? new d().fromArray(s) : s;
928
961
  super("LinocutEffect", `
929
962
  uniform float scale;
930
963
  uniform float noiseScale;
@@ -986,45 +1019,45 @@ class Le extends k {
986
1019
  outputColor = vec4(vec3(f), 1.0);
987
1020
  }
988
1021
  `, {
989
- blendFunction: t,
1022
+ blendFunction: e,
990
1023
  uniforms: /* @__PURE__ */ new Map([
991
- ["scale", new y(e)],
992
- ["noiseScale", new y(o)],
993
- ["center", new y(i)],
994
- ["rotation", new y(a)]
1024
+ ["scale", new M(t)],
1025
+ ["noiseScale", new M(o)],
1026
+ ["center", new M(i)],
1027
+ ["rotation", new M(a)]
995
1028
  ])
996
1029
  });
997
1030
  }
998
1031
  get scale() {
999
- var t;
1000
- return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1032
+ var e;
1033
+ return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
1001
1034
  }
1002
- set scale(t) {
1003
- this.uniforms.get("scale").value = t;
1035
+ set scale(e) {
1036
+ this.uniforms.get("scale").value = e;
1004
1037
  }
1005
1038
  get noiseScale() {
1006
- var t;
1007
- return (t = this.uniforms.get("noiseScale")) == null ? void 0 : t.value;
1039
+ var e;
1040
+ return (e = this.uniforms.get("noiseScale")) == null ? void 0 : e.value;
1008
1041
  }
1009
- set noiseScale(t) {
1010
- this.uniforms.get("noiseScale").value = t;
1042
+ set noiseScale(e) {
1043
+ this.uniforms.get("noiseScale").value = e;
1011
1044
  }
1012
1045
  get center() {
1013
- var t;
1014
- return (t = this.uniforms.get("center")) == null ? void 0 : t.value;
1046
+ var e;
1047
+ return (e = this.uniforms.get("center")) == null ? void 0 : e.value;
1015
1048
  }
1016
- set center(t) {
1017
- this.uniforms.get("center").value = Array.isArray(t) ? new c().fromArray(t) : t;
1049
+ set center(e) {
1050
+ this.uniforms.get("center").value = Array.isArray(e) ? new d().fromArray(e) : e;
1018
1051
  }
1019
1052
  get rotation() {
1020
- var t;
1021
- return (t = this.uniforms.get("rotation")) == null ? void 0 : t.value;
1053
+ var e;
1054
+ return (e = this.uniforms.get("rotation")) == null ? void 0 : e.value;
1022
1055
  }
1023
- set rotation(t) {
1024
- this.uniforms.get("rotation").value = t;
1056
+ set rotation(e) {
1057
+ this.uniforms.get("rotation").value = e;
1025
1058
  }
1026
1059
  }
1027
- const ao = /* @__PURE__ */ u({
1060
+ const ro = /* @__PURE__ */ u({
1028
1061
  __name: "LinocutPmndrs",
1029
1062
  props: {
1030
1063
  blendFunction: {},
@@ -1033,44 +1066,44 @@ const ao = /* @__PURE__ */ u({
1033
1066
  center: {},
1034
1067
  rotation: {}
1035
1068
  },
1036
- setup(r, { expose: t }) {
1037
- const e = r, { pass: o, effect: s } = f(
1038
- () => new Le({
1039
- ...e,
1040
- center: e.center instanceof c ? [e.center.x, e.center.y] : e.center
1069
+ setup(r, { expose: e }) {
1070
+ const t = r, { pass: o, effect: s } = p(
1071
+ () => new De({
1072
+ ...t,
1073
+ center: t.center instanceof d ? [t.center.x, t.center.y] : t.center
1041
1074
  }),
1042
- e
1075
+ t
1043
1076
  );
1044
- return t({ pass: o, effect: s }), p(
1077
+ return e({ pass: o, effect: s }), m(
1045
1078
  [
1046
- [() => e.blendFunction, "blendMode.blendFunction"],
1047
- [() => e.scale, "scale"],
1048
- [() => e.noiseScale, "noiseScale"],
1049
- [() => e.center, "center"],
1050
- [() => e.rotation, "rotation"]
1079
+ [() => t.blendFunction, "blendMode.blendFunction"],
1080
+ [() => t.scale, "scale"],
1081
+ [() => t.noiseScale, "noiseScale"],
1082
+ [() => t.center, "center"],
1083
+ [() => t.rotation, "rotation"]
1051
1084
  ],
1052
1085
  s,
1053
- () => new Le()
1086
+ () => new De()
1054
1087
  ), () => {
1055
1088
  };
1056
1089
  }
1057
- }), ro = /* @__PURE__ */ u({
1090
+ }), io = /* @__PURE__ */ u({
1058
1091
  __name: "DepthPickingPassPmndrs",
1059
1092
  props: {
1060
1093
  depthPacking: {},
1061
1094
  mode: {}
1062
1095
  },
1063
- setup(r, { expose: t }) {
1064
- const e = r, o = oe(re), s = new Qe(e), a = v(() => {
1065
- o != null && o.value && (se(() => a()), o.value.addPass(s));
1096
+ setup(r, { expose: e }) {
1097
+ const t = r, o = te(se), s = new Ke(t), a = x(() => {
1098
+ o != null && o.value && (oe(() => a()), o.value.addPass(s));
1066
1099
  });
1067
- return W(() => {
1100
+ return U(() => {
1068
1101
  var i;
1069
1102
  !(o != null && o.value) || !s || ((i = o == null ? void 0 : o.value) == null || i.removePass(s), s.dispose());
1070
- }), t({ pass: s }), () => {
1103
+ }), e({ pass: s }), () => {
1071
1104
  };
1072
1105
  }
1073
- }), io = /* @__PURE__ */ u({
1106
+ }), no = /* @__PURE__ */ u({
1074
1107
  __name: "GodRaysPmndrs",
1075
1108
  props: {
1076
1109
  blendFunction: {},
@@ -1088,37 +1121,51 @@ const ao = /* @__PURE__ */ u({
1088
1121
  samples: {},
1089
1122
  clampMax: {}
1090
1123
  },
1091
- setup(r, { expose: t }) {
1092
- const e = r, { camera: o } = A(), { pass: s, effect: a } = f(
1093
- () => new $(o.value, ne(e.lightSource), e),
1094
- e
1124
+ setup(r, { expose: e }) {
1125
+ const t = r, { camera: o } = y(), s = L(
1126
+ () => t.lightSource ?? new ze(
1127
+ new Je(1e-5),
1128
+ new We({ visible: !1 })
1129
+ )
1130
+ ), { pass: a, effect: i } = p(
1131
+ () => new _(o.value, s.value, t),
1132
+ t
1095
1133
  );
1096
- return t({ pass: s, effect: a }), p(
1134
+ return e({ pass: a, effect: i }), m(
1097
1135
  [
1098
- [() => e.blendFunction, "blendMode.blendFunction"],
1099
- [() => e.density, "godRaysMaterial.density"],
1100
- [() => e.decay, "godRaysMaterial.decay"],
1101
- [() => e.weight, "godRaysMaterial.weight"],
1102
- [() => e.exposure, "godRaysMaterial.exposure"],
1103
- [() => e.samples, "godRaysMaterial.samples"],
1104
- [() => e.clampMax, "godRaysMaterial.maxIntensity"],
1105
- [() => e.resolutionScale, "resolution.scale"],
1106
- [() => e.resolutionX, "resolution.width"],
1107
- [() => e.resolutionY, "resolution.height"],
1108
- [() => e.kernelSize, "kernelSize"],
1109
- [() => e.blur, "blur"]
1136
+ [() => t.blendFunction, "blendMode.blendFunction"],
1137
+ [() => t.density, "godRaysMaterial.density"],
1138
+ [() => t.decay, "godRaysMaterial.decay"],
1139
+ [() => t.weight, "godRaysMaterial.weight"],
1140
+ [() => t.exposure, "godRaysMaterial.exposure"],
1141
+ [() => t.samples, "godRaysMaterial.samples"],
1142
+ [() => t.clampMax, "godRaysMaterial.maxIntensity"],
1143
+ [() => t.resolutionScale, "resolution.scale"],
1144
+ [() => t.resolutionX, "resolution.width"],
1145
+ [() => t.resolutionY, "resolution.height"],
1146
+ [() => t.kernelSize, "blurPass.kernelSize"],
1147
+ [() => t.blur, "blurPass.enabled"]
1110
1148
  ],
1111
- a,
1112
- () => new $()
1113
- ), w(
1114
- [() => e.opacity],
1149
+ i,
1150
+ () => new _()
1151
+ ), S(
1152
+ [() => t.lightSource, i],
1153
+ () => {
1154
+ i.value && (i.value.lightSource = ie(s.value));
1155
+ },
1156
+ { immediate: !0 }
1157
+ ), S(
1158
+ [() => t.opacity],
1115
1159
  () => {
1116
- var i, n;
1117
- if (e.opacity !== void 0)
1118
- (i = a.value) == null || i.blendMode.setOpacity(e.opacity);
1160
+ var n, l;
1161
+ if (t.opacity !== void 0)
1162
+ (n = i.value) == null || n.blendMode.setOpacity(t.opacity);
1119
1163
  else {
1120
- const l = new $(o.value, ne(e.lightSource));
1121
- (n = a.value) == null || n.blendMode.setOpacity(l.blendMode.getOpacity()), l.dispose();
1164
+ const f = new _(
1165
+ o.value,
1166
+ ie(s.value)
1167
+ );
1168
+ (l = i.value) == null || l.blendMode.setOpacity(f.blendMode.getOpacity()), f.dispose();
1122
1169
  }
1123
1170
  },
1124
1171
  {
@@ -1127,69 +1174,69 @@ const ao = /* @__PURE__ */ u({
1127
1174
  ), () => {
1128
1175
  };
1129
1176
  }
1130
- }), no = /* @__PURE__ */ u({
1177
+ }), lo = /* @__PURE__ */ u({
1131
1178
  __name: "ColorDepthPmndrs",
1132
1179
  props: {
1133
1180
  blendFunction: {},
1134
1181
  bits: {},
1135
1182
  opacity: {}
1136
1183
  },
1137
- setup(r, { expose: t }) {
1138
- const e = r, { pass: o, effect: s } = f(() => new X(e), e);
1139
- return t({ pass: o, effect: s }), Q(
1140
- () => e.blendFunction,
1184
+ setup(r, { expose: e }) {
1185
+ const t = r, { pass: o, effect: s } = p(() => new I(t), t);
1186
+ return e({ pass: o, effect: s }), H(
1187
+ () => t.blendFunction,
1141
1188
  s,
1142
1189
  "blendMode.blendFunction",
1143
- () => new X()
1144
- ), w(
1145
- [s, () => e.bits],
1190
+ () => new I()
1191
+ ), S(
1192
+ [s, () => t.bits],
1146
1193
  () => {
1147
1194
  var a, i;
1148
1195
  if (s.value)
1149
- if (e.bits !== void 0)
1150
- (a = s.value) == null || a.setBitDepth(e.bits);
1196
+ if (t.bits !== void 0)
1197
+ (a = s.value) == null || a.setBitDepth(t.bits);
1151
1198
  else {
1152
- const n = new X();
1199
+ const n = new I();
1153
1200
  (i = s.value) == null || i.setBitDepth(n.getBitDepth()), n.dispose();
1154
1201
  }
1155
1202
  }
1156
- ), w(
1157
- [s, () => e.opacity],
1203
+ ), S(
1204
+ [s, () => t.opacity],
1158
1205
  () => {
1159
1206
  var a, i;
1160
1207
  if (s.value)
1161
- if (e.opacity !== void 0)
1162
- (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1208
+ if (t.opacity !== void 0)
1209
+ (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
1163
1210
  else {
1164
- const n = new X();
1211
+ const n = new I();
1165
1212
  (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1166
1213
  }
1167
1214
  }
1168
1215
  ), () => {
1169
1216
  };
1170
1217
  }
1171
- }), lo = /* @__PURE__ */ u({
1218
+ }), uo = /* @__PURE__ */ u({
1172
1219
  __name: "GridPmndrs",
1173
1220
  props: {
1174
1221
  blendFunction: {},
1175
1222
  scale: {},
1176
1223
  lineWidth: {}
1177
1224
  },
1178
- setup(r, { expose: t }) {
1179
- const e = r, { pass: o, effect: s } = f(() => new Ae(e), e);
1180
- return t({ pass: o, effect: s }), p(
1225
+ setup(r, { expose: e }) {
1226
+ const t = r, { pass: o, effect: s } = p(() => new we(t), t);
1227
+ return e({ pass: o, effect: s }), m(
1181
1228
  [
1182
- [() => e.blendFunction, "blendMode.blendFunction"],
1183
- [() => e.scale, "scale"],
1184
- [() => e.lineWidth, "lineWidth"]
1229
+ [() => t.blendFunction, "blendMode.blendFunction"],
1230
+ [() => t.scale, "scale"],
1231
+ [() => t.lineWidth, "lineWidth"]
1185
1232
  ],
1186
1233
  s,
1187
- () => new Ae()
1234
+ () => new we()
1188
1235
  ), () => {
1189
1236
  };
1190
1237
  }
1191
1238
  });
1192
- class Oe extends k {
1239
+ class Le extends q {
1193
1240
  /**
1194
1241
  * Creates a new FishEyeEffect instance.
1195
1242
  *
@@ -1200,7 +1247,7 @@ class Oe extends k {
1200
1247
  * @param {number} [options.scale] - Scale.
1201
1248
  *
1202
1249
  */
1203
- constructor({ blendFunction: t = q.NORMAL, lensS: e = new c(1, 1), lensF: o = new c(0, 1), scale: s = 1 } = {}) {
1250
+ constructor({ blendFunction: e = Q.NORMAL, lensS: t = new d(1, 1), lensF: o = new d(0, 1), scale: s = 1 } = {}) {
1204
1251
  super("FishEyeEffect", `
1205
1252
  uniform vec2 lensS;
1206
1253
  uniform vec2 lensF;
@@ -1220,11 +1267,11 @@ class Oe extends k {
1220
1267
  outputColor = vec4(inputColor.rgb, inputColor.a); // Preserves original alpha
1221
1268
  }
1222
1269
  `, {
1223
- blendFunction: t,
1270
+ blendFunction: e,
1224
1271
  uniforms: /* @__PURE__ */ new Map([
1225
- ["lensS", new y(e)],
1226
- ["lensF", new y(o)],
1227
- ["scale", new y(s)]
1272
+ ["lensS", new M(t)],
1273
+ ["lensF", new M(o)],
1274
+ ["scale", new M(s)]
1228
1275
  ])
1229
1276
  });
1230
1277
  }
@@ -1234,11 +1281,11 @@ class Oe extends k {
1234
1281
  * @type {Vector2}
1235
1282
  */
1236
1283
  get lensS() {
1237
- var t;
1238
- return (t = this.uniforms.get("lensS")) == null ? void 0 : t.value;
1284
+ var e;
1285
+ return (e = this.uniforms.get("lensS")) == null ? void 0 : e.value;
1239
1286
  }
1240
- set lensS(t) {
1241
- this.uniforms.get("lensS").value = t;
1287
+ set lensS(e) {
1288
+ this.uniforms.get("lensS").value = e;
1242
1289
  }
1243
1290
  /**
1244
1291
  * The lensF.
@@ -1246,11 +1293,11 @@ class Oe extends k {
1246
1293
  * @type {Vector2}
1247
1294
  */
1248
1295
  get lensF() {
1249
- var t;
1250
- return (t = this.uniforms.get("lensF")) == null ? void 0 : t.value;
1296
+ var e;
1297
+ return (e = this.uniforms.get("lensF")) == null ? void 0 : e.value;
1251
1298
  }
1252
- set lensF(t) {
1253
- this.uniforms.get("lensF").value = t;
1299
+ set lensF(e) {
1300
+ this.uniforms.get("lensF").value = e;
1254
1301
  }
1255
1302
  /**
1256
1303
  * The scale.
@@ -1258,14 +1305,14 @@ class Oe extends k {
1258
1305
  * @type {number}
1259
1306
  */
1260
1307
  get scale() {
1261
- var t;
1262
- return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1308
+ var e;
1309
+ return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
1263
1310
  }
1264
- set scale(t) {
1265
- this.uniforms.get("scale").value = t;
1311
+ set scale(e) {
1312
+ this.uniforms.get("scale").value = e;
1266
1313
  }
1267
1314
  }
1268
- const uo = /* @__PURE__ */ u({
1315
+ const co = /* @__PURE__ */ u({
1269
1316
  __name: "FishEyePmndrs",
1270
1317
  props: {
1271
1318
  blendFunction: {},
@@ -1273,52 +1320,52 @@ const uo = /* @__PURE__ */ u({
1273
1320
  lensF: {},
1274
1321
  scale: {}
1275
1322
  },
1276
- setup(r, { expose: t }) {
1277
- const e = r, o = L(
1278
- () => Array.isArray(e.lensS) ? new c(...e.lensS) : e.lensS
1323
+ setup(r, { expose: e }) {
1324
+ const t = r, o = L(
1325
+ () => Array.isArray(t.lensS) ? new d(...t.lensS) : t.lensS
1279
1326
  ), s = L(
1280
- () => Array.isArray(e.lensF) ? new c(...e.lensF) : e.lensF
1281
- ), { pass: a, effect: i } = f(
1282
- () => new Oe({
1283
- ...e,
1327
+ () => Array.isArray(t.lensF) ? new d(...t.lensF) : t.lensF
1328
+ ), { pass: a, effect: i } = p(
1329
+ () => new Le({
1330
+ ...t,
1284
1331
  lensS: o.value,
1285
1332
  lensF: s.value
1286
1333
  }),
1287
- e
1334
+ t
1288
1335
  );
1289
- return t({ pass: a, effect: i }), p(
1336
+ return e({ pass: a, effect: i }), m(
1290
1337
  [
1291
- [() => e.blendFunction, "blendMode.blendFunction"],
1338
+ [() => t.blendFunction, "blendMode.blendFunction"],
1292
1339
  [() => o.value, "lensS"],
1293
1340
  [() => s.value, "lensF"],
1294
- [() => e.scale, "scale"]
1341
+ [() => t.scale, "scale"]
1295
1342
  ],
1296
1343
  i,
1297
- () => new Oe()
1344
+ () => new Le()
1298
1345
  ), () => {
1299
1346
  };
1300
1347
  }
1301
- }), co = /* @__PURE__ */ u({
1348
+ }), fo = /* @__PURE__ */ u({
1302
1349
  __name: "BrightnessContrastPmndrs",
1303
1350
  props: {
1304
1351
  blendFunction: {},
1305
1352
  brightness: {},
1306
1353
  contrast: {}
1307
1354
  },
1308
- setup(r, { expose: t }) {
1309
- const e = r, { pass: o, effect: s } = f(() => new ye(e), e);
1310
- return t({ pass: o, effect: s }), p(
1355
+ setup(r, { expose: e }) {
1356
+ const t = r, { pass: o, effect: s } = p(() => new Ae(t), t);
1357
+ return e({ pass: o, effect: s }), m(
1311
1358
  [
1312
- [() => e.blendFunction, "blendMode.blendFunction"],
1313
- [() => e.brightness, "brightness"],
1314
- [() => e.contrast, "contrast"]
1359
+ [() => t.blendFunction, "blendMode.blendFunction"],
1360
+ [() => t.brightness, "brightness"],
1361
+ [() => t.contrast, "contrast"]
1315
1362
  ],
1316
1363
  s,
1317
- () => new ye()
1364
+ () => new Ae()
1318
1365
  ), () => {
1319
1366
  };
1320
1367
  }
1321
- }), Ge = {
1368
+ }), He = {
1322
1369
  name: "CopyShader",
1323
1370
  uniforms: {
1324
1371
  tDiffuse: { value: null },
@@ -1356,7 +1403,7 @@ const uo = /* @__PURE__ */ u({
1356
1403
  }`
1357
1404
  )
1358
1405
  };
1359
- class T {
1406
+ class C {
1360
1407
  constructor() {
1361
1408
  this.isPass = !0, this.enabled = !0, this.needsSwap = !0, this.clear = !1, this.renderToScreen = !1;
1362
1409
  }
@@ -1368,189 +1415,201 @@ class T {
1368
1415
  dispose() {
1369
1416
  }
1370
1417
  }
1371
- const wt = new Ke(-1, 1, 1, -1, 0, 1);
1372
- class At extends Je {
1418
+ const At = new Ze(-1, 1, 1, -1, 0, 1);
1419
+ class yt extends _e {
1373
1420
  constructor() {
1374
- super(), this.setAttribute("position", new Me([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new Me([0, 2, 0, 0, 2, 0], 2));
1421
+ super(), this.setAttribute("position", new ye([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new ye([0, 2, 0, 0, 2, 0], 2));
1375
1422
  }
1376
1423
  }
1377
- const yt = new At();
1378
- class O {
1379
- constructor(t) {
1380
- this._mesh = new Ze(yt, t);
1424
+ const Mt = new yt();
1425
+ class R {
1426
+ constructor(e) {
1427
+ this._mesh = new ze(Mt, e);
1381
1428
  }
1382
1429
  dispose() {
1383
1430
  this._mesh.geometry.dispose();
1384
1431
  }
1385
- render(t) {
1386
- t.render(this._mesh, wt);
1432
+ render(e) {
1433
+ e.render(this._mesh, At);
1387
1434
  }
1388
1435
  get material() {
1389
1436
  return this._mesh.material;
1390
1437
  }
1391
- set material(t) {
1392
- this._mesh.material = t;
1438
+ set material(e) {
1439
+ this._mesh.material = e;
1393
1440
  }
1394
1441
  }
1395
- class Mt extends T {
1396
- constructor(t, e) {
1397
- super(), this.textureID = e !== void 0 ? e : "tDiffuse", t instanceof S ? (this.uniforms = t.uniforms, this.material = t) : t && (this.uniforms = E.clone(t.uniforms), this.material = new S({
1398
- name: t.name !== void 0 ? t.name : "unspecified",
1399
- defines: Object.assign({}, t.defines),
1442
+ class Tt extends C {
1443
+ constructor(e, t) {
1444
+ super(), this.textureID = t !== void 0 ? t : "tDiffuse", e instanceof A ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = P.clone(e.uniforms), this.material = new A({
1445
+ name: e.name !== void 0 ? e.name : "unspecified",
1446
+ defines: Object.assign({}, e.defines),
1400
1447
  uniforms: this.uniforms,
1401
- vertexShader: t.vertexShader,
1402
- fragmentShader: t.fragmentShader
1403
- })), this.fsQuad = new O(this.material);
1448
+ vertexShader: e.vertexShader,
1449
+ fragmentShader: e.fragmentShader
1450
+ })), this.fsQuad = new R(this.material);
1404
1451
  }
1405
- render(t, e, o) {
1406
- this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = o.texture), this.fsQuad.material = this.material, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), this.fsQuad.render(t));
1452
+ render(e, t, o) {
1453
+ 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));
1407
1454
  }
1408
1455
  dispose() {
1409
1456
  this.material.dispose(), this.fsQuad.dispose();
1410
1457
  }
1411
1458
  }
1412
- class Re extends T {
1413
- constructor(t, e) {
1414
- super(), this.scene = t, this.camera = e, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1459
+ class Oe extends C {
1460
+ constructor(e, t) {
1461
+ super(), this.scene = e, this.camera = t, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1415
1462
  }
1416
- render(t, e, o) {
1417
- const s = t.getContext(), a = t.state;
1463
+ render(e, t, o) {
1464
+ const s = e.getContext(), a = e.state;
1418
1465
  a.buffers.color.setMask(!1), a.buffers.depth.setMask(!1), a.buffers.color.setLocked(!0), a.buffers.depth.setLocked(!0);
1419
1466
  let i, n;
1420
- this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, i, 4294967295), a.buffers.stencil.setClear(n), a.buffers.stencil.setLocked(!0), t.setRenderTarget(o), this.clear && t.clear(), t.render(this.scene, this.camera), t.setRenderTarget(e), this.clear && t.clear(), t.render(this.scene, this.camera), a.buffers.color.setLocked(!1), a.buffers.depth.setLocked(!1), a.buffers.color.setMask(!0), a.buffers.depth.setMask(!0), a.buffers.stencil.setLocked(!1), a.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), a.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), a.buffers.stencil.setLocked(!0);
1467
+ this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, i, 4294967295), a.buffers.stencil.setClear(n), a.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), a.buffers.color.setLocked(!1), a.buffers.depth.setLocked(!1), a.buffers.color.setMask(!0), a.buffers.depth.setMask(!0), a.buffers.stencil.setLocked(!1), a.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), a.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), a.buffers.stencil.setLocked(!0);
1421
1468
  }
1422
1469
  }
1423
- class Tt extends T {
1470
+ class Ct extends C {
1424
1471
  constructor() {
1425
1472
  super(), this.needsSwap = !1;
1426
1473
  }
1427
- render(t) {
1428
- t.state.buffers.stencil.setLocked(!1), t.state.buffers.stencil.setTest(!1);
1474
+ render(e) {
1475
+ e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1429
1476
  }
1430
1477
  }
1431
- class Ct {
1432
- constructor(t, e) {
1433
- if (this.renderer = t, this._pixelRatio = t.getPixelRatio(), e === void 0) {
1434
- const o = t.getSize(new c());
1435
- this._width = o.width, this._height = o.height, e = new D(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: M }), e.texture.name = "EffectComposer.rt1";
1478
+ class Et {
1479
+ constructor(e, t) {
1480
+ if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1481
+ const o = e.getSize(new d());
1482
+ this._width = o.width, this._height = o.height, t = new D(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: T }), t.texture.name = "EffectComposer.rt1";
1436
1483
  } else
1437
- this._width = e.width, this._height = e.height;
1438
- this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Mt(Ge), this.copyPass.material.blending = _e, this.clock = new $e();
1484
+ this._width = t.width, this._height = t.height;
1485
+ 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 Tt(He), this.copyPass.material.blending = $e, this.clock = new et();
1439
1486
  }
1440
1487
  swapBuffers() {
1441
- const t = this.readBuffer;
1442
- this.readBuffer = this.writeBuffer, this.writeBuffer = t;
1488
+ const e = this.readBuffer;
1489
+ this.readBuffer = this.writeBuffer, this.writeBuffer = e;
1443
1490
  }
1444
- addPass(t) {
1445
- this.passes.push(t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1491
+ addPass(e) {
1492
+ this.passes.push(e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1446
1493
  }
1447
- insertPass(t, e) {
1448
- this.passes.splice(e, 0, t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1494
+ insertPass(e, t) {
1495
+ this.passes.splice(t, 0, e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1449
1496
  }
1450
- removePass(t) {
1451
- const e = this.passes.indexOf(t);
1452
- e !== -1 && this.passes.splice(e, 1);
1497
+ removePass(e) {
1498
+ const t = this.passes.indexOf(e);
1499
+ t !== -1 && this.passes.splice(t, 1);
1453
1500
  }
1454
- isLastEnabledPass(t) {
1455
- for (let e = t + 1; e < this.passes.length; e++)
1456
- if (this.passes[e].enabled)
1501
+ isLastEnabledPass(e) {
1502
+ for (let t = e + 1; t < this.passes.length; t++)
1503
+ if (this.passes[t].enabled)
1457
1504
  return !1;
1458
1505
  return !0;
1459
1506
  }
1460
- render(t) {
1461
- t === void 0 && (t = this.clock.getDelta());
1462
- const e = this.renderer.getRenderTarget();
1507
+ render(e) {
1508
+ e === void 0 && (e = this.clock.getDelta());
1509
+ const t = this.renderer.getRenderTarget();
1463
1510
  let o = !1;
1464
1511
  for (let s = 0, a = this.passes.length; s < a; s++) {
1465
1512
  const i = this.passes[s];
1466
1513
  if (i.enabled !== !1) {
1467
- if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, t, o), i.needsSwap) {
1514
+ if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, e, o), i.needsSwap) {
1468
1515
  if (o) {
1469
1516
  const n = this.renderer.getContext(), l = this.renderer.state.buffers.stencil;
1470
- l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, t), l.setFunc(n.EQUAL, 1, 4294967295);
1517
+ l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e), l.setFunc(n.EQUAL, 1, 4294967295);
1471
1518
  }
1472
1519
  this.swapBuffers();
1473
1520
  }
1474
- Re !== void 0 && (i instanceof Re ? o = !0 : i instanceof Tt && (o = !1));
1521
+ Oe !== void 0 && (i instanceof Oe ? o = !0 : i instanceof Ct && (o = !1));
1475
1522
  }
1476
1523
  }
1477
- this.renderer.setRenderTarget(e);
1524
+ this.renderer.setRenderTarget(t);
1478
1525
  }
1479
- reset(t) {
1480
- if (t === void 0) {
1481
- const e = this.renderer.getSize(new c());
1482
- this._pixelRatio = this.renderer.getPixelRatio(), this._width = e.width, this._height = e.height, t = this.renderTarget1.clone(), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1526
+ reset(e) {
1527
+ if (e === void 0) {
1528
+ const t = this.renderer.getSize(new d());
1529
+ 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);
1483
1530
  }
1484
- this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1531
+ this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1485
1532
  }
1486
- setSize(t, e) {
1487
- this._width = t, this._height = e;
1533
+ setSize(e, t) {
1534
+ this._width = e, this._height = t;
1488
1535
  const o = this._width * this._pixelRatio, s = this._height * this._pixelRatio;
1489
1536
  this.renderTarget1.setSize(o, s), this.renderTarget2.setSize(o, s);
1490
1537
  for (let a = 0; a < this.passes.length; a++)
1491
1538
  this.passes[a].setSize(o, s);
1492
1539
  }
1493
- setPixelRatio(t) {
1494
- this._pixelRatio = t, this.setSize(this._width, this._height);
1540
+ setPixelRatio(e) {
1541
+ this._pixelRatio = e, this.setSize(this._width, this._height);
1495
1542
  }
1496
1543
  dispose() {
1497
1544
  this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();
1498
1545
  }
1499
1546
  }
1500
- class Et extends T {
1501
- constructor(t, e, o = null, s = null, a = null) {
1502
- super(), this.scene = t, this.camera = e, this.overrideMaterial = o, this.clearColor = s, this.clearAlpha = a, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new Y();
1547
+ class Pt extends C {
1548
+ constructor(e, t, o = null, s = null, a = null) {
1549
+ super(), this.scene = e, this.camera = t, this.overrideMaterial = o, this.clearColor = s, this.clearAlpha = a, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new k();
1503
1550
  }
1504
- render(t, e, o) {
1505
- const s = t.autoClear;
1506
- t.autoClear = !1;
1551
+ render(e, t, o) {
1552
+ const s = e.autoClear;
1553
+ e.autoClear = !1;
1507
1554
  let a, i;
1508
- this.overrideMaterial !== null && (i = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (t.getClearColor(this._oldClearColor), t.setClearColor(this.clearColor, t.getClearAlpha())), this.clearAlpha !== null && (a = t.getClearAlpha(), t.setClearAlpha(this.clearAlpha)), this.clearDepth == !0 && t.clearDepth(), t.setRenderTarget(this.renderToScreen ? null : o), this.clear === !0 && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), t.render(this.scene, this.camera), this.clearColor !== null && t.setClearColor(this._oldClearColor), this.clearAlpha !== null && t.setClearAlpha(a), this.overrideMaterial !== null && (this.scene.overrideMaterial = i), t.autoClear = s;
1555
+ this.overrideMaterial !== null && (i = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (e.getClearColor(this._oldClearColor), e.setClearColor(this.clearColor, e.getClearAlpha())), this.clearAlpha !== null && (a = 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(a), this.overrideMaterial !== null && (this.scene.overrideMaterial = i), e.autoClear = s;
1509
1556
  }
1510
1557
  }
1511
- const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1558
+ const Xe = Symbol("effectComposerThree"), ho = /* @__PURE__ */ u({
1512
1559
  __name: "EffectComposer",
1513
1560
  props: {
1514
1561
  enabled: { type: Boolean, default: !0 },
1515
1562
  withoutRenderPass: { type: Boolean }
1516
1563
  },
1517
- setup(r, { expose: t }) {
1518
- const e = r, o = z(null);
1519
- Ne(He, o), t({ composer: o });
1520
- const { renderer: s, sizes: a, scene: i, camera: n, render: l } = A();
1521
- v(() => {
1522
- var h;
1523
- (h = o.value) == null || h.dispose(), o.value = new Ct(s.value);
1524
- }), v(() => {
1525
- var H;
1526
- const { width: h, height: C } = a;
1527
- C.value && h.value && ((H = o.value) == null || H.setSize(h.value, C.value));
1564
+ setup(r, { expose: e }) {
1565
+ const t = r, o = W(null);
1566
+ Be(Xe, o), e({ composer: o });
1567
+ const { renderer: s, sizes: a, scene: i, camera: n, render: l } = y();
1568
+ x(() => {
1569
+ var c;
1570
+ (c = o.value) == null || c.dispose(), o.value = new Et(s.value);
1571
+ }), x(() => {
1572
+ var E;
1573
+ const { width: c, height: b } = a;
1574
+ b.value && c.value && ((E = o.value) == null || E.setSize(c.value, b.value));
1528
1575
  });
1529
- const { pixelRatio: d } = We();
1530
- v(() => {
1531
- var h;
1532
- (h = o.value) == null || h.setPixelRatio(d.value);
1533
- }), e.withoutRenderPass || v(() => {
1534
- n.value && i.value && o.value && o.value.addPass(new Et(i.value, n.value));
1576
+ const { pixelRatio: h } = Ue();
1577
+ x(() => {
1578
+ var c;
1579
+ (c = o.value) == null || c.setPixelRatio(h.value);
1580
+ }), t.withoutRenderPass || x(() => {
1581
+ n.value && i.value && o.value && o.value.addPass(new Pt(i.value, n.value));
1535
1582
  });
1536
- const { render: m } = U();
1537
- return m(() => {
1538
- l.frames.value > 0 && o.value && e.enabled && o.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
1539
- }), W(() => {
1540
- var h;
1541
- (h = o.value) == null || h.dispose();
1542
- }), (h, C) => ze(h.$slots, "default");
1543
- }
1544
- }), F = (r, t) => {
1545
- const e = oe(He), o = z(r()), { sizes: s, invalidate: a } = A();
1546
- t && w(t, () => a());
1547
- const i = v(() => {
1548
- !(e != null && e.value) || !s.height.value || !s.width.value || (e.value.addPass(o.value), se(() => i()));
1583
+ const { render: v } = G();
1584
+ return v(() => {
1585
+ l.frames.value > 0 && o.value && t.enabled && o.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
1586
+ }), U(() => {
1587
+ var c;
1588
+ (c = o.value) == null || c.dispose();
1589
+ }), (c, b) => Ne(c.$slots, "default");
1590
+ }
1591
+ }), N = (r, e, t) => {
1592
+ if (!e && t)
1593
+ throw new Error("passDependencies is required when dependencyFieldsTriggeringRecreation is provided");
1594
+ const o = te(Xe), s = W(r()), { sizes: a, invalidate: i } = y();
1595
+ e && S(e, () => i());
1596
+ const n = () => {
1597
+ var f;
1598
+ (f = o == null ? void 0 : o.value) == null || f.removePass(s.value), s.value.dispose();
1599
+ }, l = x(() => {
1600
+ !(o != null && o.value) || !a.height.value || !a.width.value || (o.value.addPass(s.value), oe(() => l()));
1549
1601
  });
1550
- return W(() => {
1551
- var n;
1552
- (n = e == null ? void 0 : e.value) == null || n.removePass(o.value), o.value.dispose();
1553
- }), { pass: o };
1602
+ return t && S(
1603
+ () => t.map((f) => e == null ? void 0 : e[f]),
1604
+ () => {
1605
+ if (!(o != null && o.value))
1606
+ return;
1607
+ const f = o.value.passes.findIndex((h) => h === s.value);
1608
+ ~f && (n(), s.value = r(), o.value.insertPass(s.value, f));
1609
+ }
1610
+ ), U(() => {
1611
+ n();
1612
+ }), { pass: s };
1554
1613
  }, Dt = {
1555
1614
  uniforms: {
1556
1615
  tDiffuse: { value: null },
@@ -1646,53 +1705,53 @@ const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1646
1705
  }`
1647
1706
  )
1648
1707
  };
1649
- class Be extends T {
1650
- constructor(t = 64) {
1708
+ class Re extends C {
1709
+ constructor(e = 64) {
1651
1710
  super();
1652
- const e = Dt;
1653
- this.uniforms = E.clone(e.uniforms), this.heightMap = this.generateHeightmap(t), this.uniforms.tDisp.value = this.heightMap, this.material = new S({
1711
+ const t = Dt;
1712
+ this.uniforms = P.clone(t.uniforms), this.heightMap = this.generateHeightmap(e), this.uniforms.tDisp.value = this.heightMap, this.material = new A({
1654
1713
  uniforms: this.uniforms,
1655
- vertexShader: e.vertexShader,
1656
- fragmentShader: e.fragmentShader
1657
- }), this.fsQuad = new O(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1714
+ vertexShader: t.vertexShader,
1715
+ fragmentShader: t.fragmentShader
1716
+ }), this.fsQuad = new R(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1658
1717
  }
1659
- render(t, e, o) {
1660
- 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 = b.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = b.randFloat(-1, 1), this.uniforms.seed_y.value = b.randFloat(-1, 1), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.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 = b.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.randFloat(0, 1), this.uniforms.seed_x.value = b.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = b.randFloat(-0.3, 0.3)) : this.goWild == !1 && (this.uniforms.byp.value = 1), this.curF++, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
1718
+ render(e, t, o) {
1719
+ 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 = w.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = w.randFloat(-1, 1), this.uniforms.seed_y.value = w.randFloat(-1, 1), this.uniforms.distortion_x.value = w.randFloat(0, 1), this.uniforms.distortion_y.value = w.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 = w.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = w.randFloat(0, 1), this.uniforms.distortion_y.value = w.randFloat(0, 1), this.uniforms.seed_x.value = w.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = w.randFloat(-0.3, 0.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));
1661
1720
  }
1662
1721
  generateTrigger() {
1663
- this.randX = b.randInt(120, 240);
1722
+ this.randX = w.randInt(120, 240);
1664
1723
  }
1665
- generateHeightmap(t) {
1666
- const e = new Float32Array(t * t), o = t * t;
1724
+ generateHeightmap(e) {
1725
+ const t = new Float32Array(e * e), o = e * e;
1667
1726
  for (let a = 0; a < o; a++) {
1668
- const i = b.randFloat(0, 1);
1669
- e[a] = i;
1727
+ const i = w.randFloat(0, 1);
1728
+ t[a] = i;
1670
1729
  }
1671
- const s = new et(e, t, t, tt, ot);
1730
+ const s = new tt(t, e, e, ot, st);
1672
1731
  return s.needsUpdate = !0, s;
1673
1732
  }
1674
1733
  dispose() {
1675
1734
  this.material.dispose(), this.heightMap.dispose(), this.fsQuad.dispose();
1676
1735
  }
1677
1736
  }
1678
- const ho = /* @__PURE__ */ u({
1737
+ const po = /* @__PURE__ */ u({
1679
1738
  __name: "Glitch",
1680
1739
  props: {
1681
1740
  dtSize: {},
1682
1741
  goWild: { type: Boolean }
1683
1742
  },
1684
- setup(r, { expose: t }) {
1685
- const e = r, { pass: o } = F(() => new Be(e.dtSize), e);
1686
- t({ pass: o });
1687
- const { onBeforeRender: s } = U();
1688
- return s(({ invalidate: a }) => a()), p(
1689
- [[() => e.goWild, "goWild"]],
1743
+ setup(r, { expose: e }) {
1744
+ const t = r, { pass: o } = N(() => new Re(t.dtSize), t, ["dtSize"]);
1745
+ e({ pass: o });
1746
+ const { onBeforeRender: s } = G();
1747
+ return s(({ invalidate: a }) => a()), m(
1748
+ [[() => t.goWild, "goWild"]],
1690
1749
  o,
1691
- () => new Be()
1750
+ () => new Re()
1692
1751
  ), () => {
1693
1752
  };
1694
1753
  }
1695
- }), V = {
1754
+ }), Y = {
1696
1755
  name: "HalftoneShader",
1697
1756
  uniforms: {
1698
1757
  tDiffuse: { value: null },
@@ -1996,28 +2055,28 @@ const ho = /* @__PURE__ */ u({
1996
2055
  }`
1997
2056
  )
1998
2057
  };
1999
- class Pt extends T {
2000
- constructor(t, e, o) {
2001
- super(), this.uniforms = E.clone(V.uniforms), this.material = new S({
2058
+ class Lt extends C {
2059
+ constructor(e, t, o) {
2060
+ super(), this.uniforms = P.clone(Y.uniforms), this.material = new A({
2002
2061
  uniforms: this.uniforms,
2003
- fragmentShader: V.fragmentShader,
2004
- vertexShader: V.vertexShader
2005
- }), this.uniforms.width.value = t, this.uniforms.height.value = e;
2062
+ fragmentShader: Y.fragmentShader,
2063
+ vertexShader: Y.vertexShader
2064
+ }), this.uniforms.width.value = e, this.uniforms.height.value = t;
2006
2065
  for (const s in o)
2007
2066
  o.hasOwnProperty(s) && this.uniforms.hasOwnProperty(s) && (this.uniforms[s].value = o[s]);
2008
- this.fsQuad = new O(this.material);
2067
+ this.fsQuad = new R(this.material);
2009
2068
  }
2010
- render(t, e, o) {
2011
- this.material.uniforms.tDiffuse.value = o.texture, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
2069
+ render(e, t, o) {
2070
+ 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));
2012
2071
  }
2013
- setSize(t, e) {
2014
- this.uniforms.width.value = t, this.uniforms.height.value = e;
2072
+ setSize(e, t) {
2073
+ this.uniforms.width.value = e, this.uniforms.height.value = t;
2015
2074
  }
2016
2075
  dispose() {
2017
2076
  this.material.dispose(), this.fsQuad.dispose();
2018
2077
  }
2019
2078
  }
2020
- const po = /* @__PURE__ */ u({
2079
+ const mo = /* @__PURE__ */ u({
2021
2080
  __name: "Halftone",
2022
2081
  props: {
2023
2082
  shape: {},
@@ -2030,55 +2089,55 @@ const po = /* @__PURE__ */ u({
2030
2089
  greyscale: { type: Boolean },
2031
2090
  blendingMode: {}
2032
2091
  },
2033
- setup(r, { expose: t }) {
2034
- const e = r, { sizes: o } = A(), s = L(
2092
+ setup(r, { expose: e }) {
2093
+ const t = r, { sizes: o } = y(), s = L(
2035
2094
  () => Object.fromEntries(
2036
- Object.entries(e).filter(([i, n]) => n !== void 0)
2095
+ Object.entries(t).filter(([i, n]) => n !== void 0)
2037
2096
  )
2038
- ), { pass: a } = F(() => new Pt(
2097
+ ), { pass: a } = N(() => new Lt(
2039
2098
  o.width.value,
2040
2099
  o.height.value,
2041
2100
  s.value
2042
- ), e);
2043
- return t({ pass: a }), v(() => {
2101
+ ), t);
2102
+ return e({ pass: a }), x(() => {
2044
2103
  a.value.setSize(o.width.value, o.height.value);
2045
- }), v(() => {
2046
- Object.entries(e).forEach(([i, n]) => {
2047
- i in a.value.uniforms && (a.value.uniforms[i].value = n ?? V.uniforms[i].value);
2104
+ }), x(() => {
2105
+ Object.entries(t).forEach(([i, n]) => {
2106
+ i in a.value.uniforms && (a.value.uniforms[i].value = n ?? Y.uniforms[i].value);
2048
2107
  });
2049
2108
  }), () => {
2050
2109
  };
2051
2110
  }
2052
2111
  });
2053
- class Fe extends T {
2054
- constructor(t, e, o, s = {}) {
2055
- super(), this.pixelSize = t, this.resolution = new c(), this.renderResolution = new c(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new st(), this.fsQuad = new O(this.pixelatedMaterial), this.scene = e, this.camera = o, this.normalEdgeStrength = s.normalEdgeStrength || 0.3, this.depthEdgeStrength = s.depthEdgeStrength || 0.4, this.beautyRenderTarget = new D(), this.beautyRenderTarget.texture.minFilter = R, this.beautyRenderTarget.texture.magFilter = R, this.beautyRenderTarget.texture.type = M, this.beautyRenderTarget.depthTexture = new at(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = R, this.normalRenderTarget.texture.magFilter = R, this.normalRenderTarget.texture.type = M;
2112
+ class Fe extends C {
2113
+ constructor(e, t, o, s = {}) {
2114
+ super(), this.pixelSize = e, this.resolution = new d(), this.renderResolution = new d(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new at(), this.fsQuad = new R(this.pixelatedMaterial), this.scene = t, this.camera = o, this.normalEdgeStrength = s.normalEdgeStrength || 0.3, this.depthEdgeStrength = s.depthEdgeStrength || 0.4, this.beautyRenderTarget = new D(), this.beautyRenderTarget.texture.minFilter = F, this.beautyRenderTarget.texture.magFilter = F, this.beautyRenderTarget.texture.type = T, this.beautyRenderTarget.depthTexture = new rt(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = F, this.normalRenderTarget.texture.magFilter = F, this.normalRenderTarget.texture.type = T;
2056
2115
  }
2057
2116
  dispose() {
2058
2117
  this.beautyRenderTarget.dispose(), this.normalRenderTarget.dispose(), this.pixelatedMaterial.dispose(), this.normalMaterial.dispose(), this.fsQuad.dispose();
2059
2118
  }
2060
- setSize(t, e) {
2061
- this.resolution.set(t, e), this.renderResolution.set(t / this.pixelSize | 0, e / this.pixelSize | 0);
2119
+ setSize(e, t) {
2120
+ this.resolution.set(e, t), this.renderResolution.set(e / this.pixelSize | 0, t / this.pixelSize | 0);
2062
2121
  const { x: o, y: s } = this.renderResolution;
2063
2122
  this.beautyRenderTarget.setSize(o, s), this.normalRenderTarget.setSize(o, s), this.fsQuad.material.uniforms.resolution.value.set(o, s, 1 / o, 1 / s);
2064
2123
  }
2065
- setPixelSize(t) {
2066
- this.pixelSize = t, this.setSize(this.resolution.x, this.resolution.y);
2124
+ setPixelSize(e) {
2125
+ this.pixelSize = e, this.setSize(this.resolution.x, this.resolution.y);
2067
2126
  }
2068
- render(t, e) {
2127
+ render(e, t) {
2069
2128
  const o = this.fsQuad.material.uniforms;
2070
- o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, t.setRenderTarget(this.beautyRenderTarget), t.render(this.scene, this.camera);
2129
+ o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, e.setRenderTarget(this.beautyRenderTarget), e.render(this.scene, this.camera);
2071
2130
  const s = this.scene.overrideMaterial;
2072
- t.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, t.render(this.scene, this.camera), this.scene.overrideMaterial = s, o.tDiffuse.value = this.beautyRenderTarget.texture, o.tDepth.value = this.beautyRenderTarget.depthTexture, o.tNormal.value = this.normalRenderTarget.texture, this.renderToScreen ? t.setRenderTarget(null) : (t.setRenderTarget(e), this.clear && t.clear()), this.fsQuad.render(t);
2131
+ e.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, e.render(this.scene, this.camera), this.scene.overrideMaterial = s, 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);
2073
2132
  }
2074
2133
  createPixelatedMaterial() {
2075
- return new S({
2134
+ return new A({
2076
2135
  uniforms: {
2077
2136
  tDiffuse: { value: null },
2078
2137
  tDepth: { value: null },
2079
2138
  tNormal: { value: null },
2080
2139
  resolution: {
2081
- value: new rt(
2140
+ value: new it(
2082
2141
  this.renderResolution.x,
2083
2142
  this.renderResolution.y,
2084
2143
  1 / this.renderResolution.x,
@@ -2197,28 +2256,28 @@ class Fe extends T {
2197
2256
  });
2198
2257
  }
2199
2258
  }
2200
- const mo = /* @__PURE__ */ u({
2259
+ const vo = /* @__PURE__ */ u({
2201
2260
  __name: "Pixelation",
2202
2261
  props: {
2203
2262
  pixelSize: {},
2204
2263
  depthEdgeStrength: {},
2205
2264
  normalEdgeStrength: {}
2206
2265
  },
2207
- setup(r, { expose: t }) {
2208
- const e = r, { scene: o, camera: s } = A(), { pass: a } = F(() => new Fe(e.pixelSize, o.value, s.value), e);
2209
- return t({ pass: a }), v(() => {
2210
- a.value.setPixelSize(e.pixelSize);
2211
- }), p(
2266
+ setup(r, { expose: e }) {
2267
+ const t = r, { scene: o, camera: s } = y(), { pass: a } = N(() => new Fe(t.pixelSize, o.value, s.value), t);
2268
+ return e({ pass: a }), x(() => {
2269
+ a.value.setPixelSize(t.pixelSize);
2270
+ }), m(
2212
2271
  [
2213
- [() => e.depthEdgeStrength, "depthEdgeStrength"],
2214
- [() => e.normalEdgeStrength, "normalEdgeStrength"]
2272
+ [() => t.depthEdgeStrength, "depthEdgeStrength"],
2273
+ [() => t.normalEdgeStrength, "normalEdgeStrength"]
2215
2274
  ],
2216
2275
  a,
2217
2276
  () => new Fe(1, o.value, s.value)
2218
2277
  ), () => {
2219
2278
  };
2220
2279
  }
2221
- }), Lt = {
2280
+ }), Ot = {
2222
2281
  name: "OutputShader",
2223
2282
  uniforms: {
2224
2283
  tDiffuse: { value: null },
@@ -2304,19 +2363,19 @@ const mo = /* @__PURE__ */ u({
2304
2363
  }`
2305
2364
  )
2306
2365
  };
2307
- class Ot extends T {
2366
+ class Rt extends C {
2308
2367
  constructor() {
2309
2368
  super();
2310
- const t = Lt;
2311
- this.uniforms = E.clone(t.uniforms), this.material = new it({
2312
- name: t.name,
2369
+ const e = Ot;
2370
+ this.uniforms = P.clone(e.uniforms), this.material = new nt({
2371
+ name: e.name,
2313
2372
  uniforms: this.uniforms,
2314
- vertexShader: t.vertexShader,
2315
- fragmentShader: t.fragmentShader
2316
- }), this.fsQuad = new O(this.material), this._outputColorSpace = null, this._toneMapping = null;
2373
+ vertexShader: e.vertexShader,
2374
+ fragmentShader: e.fragmentShader
2375
+ }), this.fsQuad = new R(this.material), this._outputColorSpace = null, this._toneMapping = null;
2317
2376
  }
2318
- render(t, e, o) {
2319
- this.uniforms.tDiffuse.value = o.texture, this.uniforms.toneMappingExposure.value = t.toneMappingExposure, (this._outputColorSpace !== t.outputColorSpace || this._toneMapping !== t.toneMapping) && (this._outputColorSpace = t.outputColorSpace, this._toneMapping = t.toneMapping, this.material.defines = {}, nt.getTransfer(this._outputColorSpace) === lt && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === ut ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === ct ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === dt ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === ft ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === ht ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === pt ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === mt && (this.material.defines.CUSTOM_TONE_MAPPING = ""), this.material.needsUpdate = !0), this.renderToScreen === !0 ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), this.fsQuad.render(t));
2377
+ render(e, t, o) {
2378
+ this.uniforms.tDiffuse.value = o.texture, this.uniforms.toneMappingExposure.value = e.toneMappingExposure, (this._outputColorSpace !== e.outputColorSpace || this._toneMapping !== e.toneMapping) && (this._outputColorSpace = e.outputColorSpace, this._toneMapping = e.toneMapping, this.material.defines = {}, lt.getTransfer(this._outputColorSpace) === ut && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === ct ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === dt ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === ft ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === ht ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === pt ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === mt ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === vt && (this.material.defines.CUSTOM_TONE_MAPPING = ""), this.material.needsUpdate = !0), this.renderToScreen === !0 ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), this.fsQuad.render(e));
2320
2379
  }
2321
2380
  dispose() {
2322
2381
  this.material.dispose(), this.fsQuad.dispose();
@@ -2324,19 +2383,19 @@ class Ot extends T {
2324
2383
  }
2325
2384
  const go = /* @__PURE__ */ u({
2326
2385
  __name: "Output",
2327
- setup(r, { expose: t }) {
2328
- const { pass: e } = F(() => new Ot());
2329
- return t({ pass: e }), () => {
2386
+ setup(r, { expose: e }) {
2387
+ const { pass: t } = N(() => new Rt());
2388
+ return e({ pass: t }), () => {
2330
2389
  };
2331
2390
  }
2332
- }), I = {
2391
+ }), j = {
2333
2392
  name: "SMAAEdgesShader",
2334
2393
  defines: {
2335
2394
  SMAA_THRESHOLD: "0.1"
2336
2395
  },
2337
2396
  uniforms: {
2338
2397
  tDiffuse: { value: null },
2339
- resolution: { value: new c(1 / 1024, 1 / 512) }
2398
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2340
2399
  },
2341
2400
  vertexShader: (
2342
2401
  /* glsl */
@@ -2430,7 +2489,7 @@ const go = /* @__PURE__ */ u({
2430
2489
 
2431
2490
  }`
2432
2491
  )
2433
- }, j = {
2492
+ }, V = {
2434
2493
  name: "SMAAWeightsShader",
2435
2494
  defines: {
2436
2495
  SMAA_MAX_SEARCH_STEPS: "8",
@@ -2442,7 +2501,7 @@ const go = /* @__PURE__ */ u({
2442
2501
  tDiffuse: { value: null },
2443
2502
  tArea: { value: null },
2444
2503
  tSearch: { value: null },
2445
- resolution: { value: new c(1 / 1024, 1 / 512) }
2504
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2446
2505
  },
2447
2506
  vertexShader: (
2448
2507
  /* glsl */
@@ -2680,12 +2739,12 @@ const go = /* @__PURE__ */ u({
2680
2739
 
2681
2740
  }`
2682
2741
  )
2683
- }, te = {
2742
+ }, ee = {
2684
2743
  name: "SMAABlendShader",
2685
2744
  uniforms: {
2686
2745
  tDiffuse: { value: null },
2687
2746
  tColor: { value: null },
2688
- resolution: { value: new c(1 / 1024, 1 / 512) }
2747
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2689
2748
  },
2690
2749
  vertexShader: (
2691
2750
  /* glsl */
@@ -2770,43 +2829,43 @@ const go = /* @__PURE__ */ u({
2770
2829
  }`
2771
2830
  )
2772
2831
  };
2773
- class Rt extends T {
2774
- constructor(t, e) {
2775
- super(), this.edgesRT = new D(t, e, {
2832
+ class Ft extends C {
2833
+ constructor(e, t) {
2834
+ super(), this.edgesRT = new D(e, t, {
2776
2835
  depthBuffer: !1,
2777
- type: M
2778
- }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(t, e, {
2836
+ type: T
2837
+ }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(e, t, {
2779
2838
  depthBuffer: !1,
2780
- type: M
2839
+ type: T
2781
2840
  }), this.weightsRT.texture.name = "SMAAPass.weights";
2782
2841
  const o = this, s = new Image();
2783
2842
  s.src = this.getAreaTexture(), s.onload = function() {
2784
2843
  o.areaTexture.needsUpdate = !0;
2785
- }, this.areaTexture = new Te(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = gt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2844
+ }, this.areaTexture = new Me(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = gt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2786
2845
  const a = new Image();
2787
2846
  a.src = this.getSearchTexture(), a.onload = function() {
2788
2847
  o.searchTexture.needsUpdate = !0;
2789
- }, this.searchTexture = new Te(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = R, this.searchTexture.minFilter = R, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = E.clone(I.uniforms), this.uniformsEdges.resolution.value.set(1 / t, 1 / e), this.materialEdges = new S({
2790
- defines: Object.assign({}, I.defines),
2791
- uniforms: this.uniformsEdges,
2792
- vertexShader: I.vertexShader,
2793
- fragmentShader: I.fragmentShader
2794
- }), this.uniformsWeights = E.clone(j.uniforms), this.uniformsWeights.resolution.value.set(1 / t, 1 / e), this.uniformsWeights.tDiffuse.value = this.edgesRT.texture, this.uniformsWeights.tArea.value = this.areaTexture, this.uniformsWeights.tSearch.value = this.searchTexture, this.materialWeights = new S({
2848
+ }, this.searchTexture = new Me(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = F, this.searchTexture.minFilter = F, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = P.clone(j.uniforms), this.uniformsEdges.resolution.value.set(1 / e, 1 / t), this.materialEdges = new A({
2795
2849
  defines: Object.assign({}, j.defines),
2796
- uniforms: this.uniformsWeights,
2850
+ uniforms: this.uniformsEdges,
2797
2851
  vertexShader: j.vertexShader,
2798
2852
  fragmentShader: j.fragmentShader
2799
- }), this.uniformsBlend = E.clone(te.uniforms), this.uniformsBlend.resolution.value.set(1 / t, 1 / e), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new S({
2853
+ }), this.uniformsWeights = P.clone(V.uniforms), this.uniformsWeights.resolution.value.set(1 / e, 1 / t), this.uniformsWeights.tDiffuse.value = this.edgesRT.texture, this.uniformsWeights.tArea.value = this.areaTexture, this.uniformsWeights.tSearch.value = this.searchTexture, this.materialWeights = new A({
2854
+ defines: Object.assign({}, V.defines),
2855
+ uniforms: this.uniformsWeights,
2856
+ vertexShader: V.vertexShader,
2857
+ fragmentShader: V.fragmentShader
2858
+ }), this.uniformsBlend = P.clone(ee.uniforms), this.uniformsBlend.resolution.value.set(1 / e, 1 / t), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new A({
2800
2859
  uniforms: this.uniformsBlend,
2801
- vertexShader: te.vertexShader,
2802
- fragmentShader: te.fragmentShader
2803
- }), this.fsQuad = new O(null);
2860
+ vertexShader: ee.vertexShader,
2861
+ fragmentShader: ee.fragmentShader
2862
+ }), this.fsQuad = new R(null);
2804
2863
  }
2805
- render(t, e, o) {
2806
- this.uniformsEdges.tDiffuse.value = o.texture, this.fsQuad.material = this.materialEdges, t.setRenderTarget(this.edgesRT), this.clear && t.clear(), this.fsQuad.render(t), this.fsQuad.material = this.materialWeights, t.setRenderTarget(this.weightsRT), this.clear && t.clear(), this.fsQuad.render(t), this.uniformsBlend.tColor.value = o.texture, this.fsQuad.material = this.materialBlend, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
2864
+ render(e, t, o) {
2865
+ this.uniformsEdges.tDiffuse.value = o.texture, this.fsQuad.material = this.materialEdges, e.setRenderTarget(this.edgesRT), this.clear && e.clear(), this.fsQuad.render(e), this.fsQuad.material = this.materialWeights, e.setRenderTarget(this.weightsRT), this.clear && e.clear(), this.fsQuad.render(e), this.uniformsBlend.tColor.value = o.texture, this.fsQuad.material = this.materialBlend, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this.fsQuad.render(e));
2807
2866
  }
2808
- setSize(t, e) {
2809
- this.edgesRT.setSize(t, e), this.weightsRT.setSize(t, e), this.materialEdges.uniforms.resolution.value.set(1 / t, 1 / e), this.materialWeights.uniforms.resolution.value.set(1 / t, 1 / e), this.materialBlend.uniforms.resolution.value.set(1 / t, 1 / e);
2867
+ setSize(e, t) {
2868
+ this.edgesRT.setSize(e, t), this.weightsRT.setSize(e, t), this.materialEdges.uniforms.resolution.value.set(1 / e, 1 / t), this.materialWeights.uniforms.resolution.value.set(1 / e, 1 / t), this.materialBlend.uniforms.resolution.value.set(1 / e, 1 / t);
2810
2869
  }
2811
2870
  getAreaTexture() {
2812
2871
  return "data:image/png;base64,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";
@@ -2818,27 +2877,27 @@ class Rt extends T {
2818
2877
  this.edgesRT.dispose(), this.weightsRT.dispose(), this.areaTexture.dispose(), this.searchTexture.dispose(), this.materialEdges.dispose(), this.materialWeights.dispose(), this.materialBlend.dispose(), this.fsQuad.dispose();
2819
2878
  }
2820
2879
  }
2821
- const vo = /* @__PURE__ */ u({
2880
+ const xo = /* @__PURE__ */ u({
2822
2881
  __name: "SMAA",
2823
2882
  props: {
2824
2883
  width: {},
2825
2884
  height: {}
2826
2885
  },
2827
- setup(r, { expose: t }) {
2828
- const e = r, { sizes: o } = A(), { pixelRatio: s } = We(), a = L(() => e.width ?? o.width.value * s.value), i = L(() => e.height ?? o.height.value * s.value), { pass: n } = F(() => new Rt(a.value, i.value), e);
2829
- return t({ pass: n }), v(() => {
2886
+ setup(r, { expose: e }) {
2887
+ const t = r, { sizes: o } = y(), { pixelRatio: s } = Ue(), a = L(() => t.width ?? o.width.value * s.value), i = L(() => t.height ?? o.height.value * s.value), { pass: n } = N(() => new Ft(a.value, i.value), t);
2888
+ return e({ pass: n }), x(() => {
2830
2889
  n.value.setSize(a.value, i.value);
2831
2890
  }), () => {
2832
2891
  };
2833
2892
  }
2834
- }), Xe = {
2893
+ }), Ie = {
2835
2894
  name: "LuminosityHighPassShader",
2836
2895
  shaderID: "luminosityHighPass",
2837
2896
  uniforms: {
2838
2897
  tDiffuse: { value: null },
2839
2898
  luminosityThreshold: { value: 1 },
2840
2899
  smoothWidth: { value: 1 },
2841
- defaultColor: { value: new Y(0) },
2900
+ defaultColor: { value: new k(0) },
2842
2901
  defaultOpacity: { value: 0 }
2843
2902
  },
2844
2903
  vertexShader: (
@@ -2882,80 +2941,80 @@ const vo = /* @__PURE__ */ u({
2882
2941
  }`
2883
2942
  )
2884
2943
  };
2885
- class B extends T {
2886
- constructor(t, e, o, s) {
2887
- super(), this.strength = e !== void 0 ? e : 1, this.radius = o, this.threshold = s, this.resolution = t !== void 0 ? new c(t.x, t.y) : new c(256, 256), this.clearColor = new Y(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
2944
+ class B extends C {
2945
+ constructor(e, t, o, s) {
2946
+ super(), this.strength = t !== void 0 ? t : 1, this.radius = o, this.threshold = s, this.resolution = e !== void 0 ? new d(e.x, e.y) : new d(256, 256), this.clearColor = new k(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
2888
2947
  let a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2889
- this.renderTargetBright = new D(a, i, { type: M }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2890
- for (let m = 0; m < this.nMips; m++) {
2891
- const h = new D(a, i, { type: M });
2892
- h.texture.name = "UnrealBloomPass.h" + m, h.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(h);
2893
- const C = new D(a, i, { type: M });
2894
- C.texture.name = "UnrealBloomPass.v" + m, C.texture.generateMipmaps = !1, this.renderTargetsVertical.push(C), a = Math.round(a / 2), i = Math.round(i / 2);
2948
+ this.renderTargetBright = new D(a, i, { type: T }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2949
+ for (let v = 0; v < this.nMips; v++) {
2950
+ const c = new D(a, i, { type: T });
2951
+ c.texture.name = "UnrealBloomPass.h" + v, c.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(c);
2952
+ const b = new D(a, i, { type: T });
2953
+ b.texture.name = "UnrealBloomPass.v" + v, b.texture.generateMipmaps = !1, this.renderTargetsVertical.push(b), a = Math.round(a / 2), i = Math.round(i / 2);
2895
2954
  }
2896
- const n = Xe;
2897
- this.highPassUniforms = E.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new S({
2955
+ const n = Ie;
2956
+ this.highPassUniforms = P.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new A({
2898
2957
  uniforms: this.highPassUniforms,
2899
2958
  vertexShader: n.vertexShader,
2900
2959
  fragmentShader: n.fragmentShader
2901
2960
  }), this.separableBlurMaterials = [];
2902
2961
  const l = [3, 5, 7, 9, 11];
2903
2962
  a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2904
- for (let m = 0; m < this.nMips; m++)
2905
- this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[m])), this.separableBlurMaterials[m].uniforms.invSize.value = new c(1 / a, 1 / i), a = Math.round(a / 2), i = Math.round(i / 2);
2906
- 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 = e, this.compositeMaterial.uniforms.bloomRadius.value = 0.1;
2907
- const x = [1, 0.8, 0.6, 0.4, 0.2];
2908
- this.compositeMaterial.uniforms.bloomFactors.value = x, this.bloomTintColors = [new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2909
- const d = Ge;
2910
- this.copyUniforms = E.clone(d.uniforms), this.blendMaterial = new S({
2963
+ for (let v = 0; v < this.nMips; v++)
2964
+ this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[v])), this.separableBlurMaterials[v].uniforms.invSize.value = new d(1 / a, 1 / i), a = Math.round(a / 2), i = Math.round(i / 2);
2965
+ 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 = 0.1;
2966
+ const f = [1, 0.8, 0.6, 0.4, 0.2];
2967
+ this.compositeMaterial.uniforms.bloomFactors.value = f, this.bloomTintColors = [new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2968
+ const h = He;
2969
+ this.copyUniforms = P.clone(h.uniforms), this.blendMaterial = new A({
2911
2970
  uniforms: this.copyUniforms,
2912
- vertexShader: d.vertexShader,
2913
- fragmentShader: d.fragmentShader,
2914
- blending: vt,
2971
+ vertexShader: h.vertexShader,
2972
+ fragmentShader: h.fragmentShader,
2973
+ blending: xt,
2915
2974
  depthTest: !1,
2916
2975
  depthWrite: !1,
2917
2976
  transparent: !0
2918
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Y(), this.oldClearAlpha = 1, this.basic = new xt(), this.fsQuad = new O(null);
2977
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new k(), this.oldClearAlpha = 1, this.basic = new We(), this.fsQuad = new R(null);
2919
2978
  }
2920
2979
  dispose() {
2921
- for (let t = 0; t < this.renderTargetsHorizontal.length; t++)
2922
- this.renderTargetsHorizontal[t].dispose();
2923
- for (let t = 0; t < this.renderTargetsVertical.length; t++)
2924
- this.renderTargetsVertical[t].dispose();
2980
+ for (let e = 0; e < this.renderTargetsHorizontal.length; e++)
2981
+ this.renderTargetsHorizontal[e].dispose();
2982
+ for (let e = 0; e < this.renderTargetsVertical.length; e++)
2983
+ this.renderTargetsVertical[e].dispose();
2925
2984
  this.renderTargetBright.dispose();
2926
- for (let t = 0; t < this.separableBlurMaterials.length; t++)
2927
- this.separableBlurMaterials[t].dispose();
2985
+ for (let e = 0; e < this.separableBlurMaterials.length; e++)
2986
+ this.separableBlurMaterials[e].dispose();
2928
2987
  this.compositeMaterial.dispose(), this.blendMaterial.dispose(), this.basic.dispose(), this.fsQuad.dispose();
2929
2988
  }
2930
- setSize(t, e) {
2931
- let o = Math.round(t / 2), s = Math.round(e / 2);
2989
+ setSize(e, t) {
2990
+ let o = Math.round(e / 2), s = Math.round(t / 2);
2932
2991
  this.renderTargetBright.setSize(o, s);
2933
2992
  for (let a = 0; a < this.nMips; a++)
2934
- this.renderTargetsHorizontal[a].setSize(o, s), this.renderTargetsVertical[a].setSize(o, s), this.separableBlurMaterials[a].uniforms.invSize.value = new c(1 / o, 1 / s), o = Math.round(o / 2), s = Math.round(s / 2);
2993
+ this.renderTargetsHorizontal[a].setSize(o, s), this.renderTargetsVertical[a].setSize(o, s), this.separableBlurMaterials[a].uniforms.invSize.value = new d(1 / o, 1 / s), o = Math.round(o / 2), s = Math.round(s / 2);
2935
2994
  }
2936
- render(t, e, o, s, a) {
2937
- t.getClearColor(this._oldClearColor), this.oldClearAlpha = t.getClearAlpha();
2938
- const i = t.autoClear;
2939
- t.autoClear = !1, t.setClearColor(this.clearColor, 0), a && t.state.buffers.stencil.setTest(!1), this.renderToScreen && (this.fsQuad.material = this.basic, this.basic.map = o.texture, t.setRenderTarget(null), t.clear(), this.fsQuad.render(t)), this.highPassUniforms.tDiffuse.value = o.texture, this.highPassUniforms.luminosityThreshold.value = this.threshold, this.fsQuad.material = this.materialHighPassFilter, t.setRenderTarget(this.renderTargetBright), t.clear(), this.fsQuad.render(t);
2995
+ render(e, t, o, s, a) {
2996
+ e.getClearColor(this._oldClearColor), this.oldClearAlpha = e.getClearAlpha();
2997
+ const i = e.autoClear;
2998
+ e.autoClear = !1, e.setClearColor(this.clearColor, 0), a && 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);
2940
2999
  let n = this.renderTargetBright;
2941
3000
  for (let l = 0; l < this.nMips; l++)
2942
- this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionX, t.setRenderTarget(this.renderTargetsHorizontal[l]), t.clear(), this.fsQuad.render(t), this.separableBlurMaterials[l].uniforms.colorTexture.value = this.renderTargetsHorizontal[l].texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionY, t.setRenderTarget(this.renderTargetsVertical[l]), t.clear(), this.fsQuad.render(t), n = this.renderTargetsVertical[l];
2943
- 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, t.setRenderTarget(this.renderTargetsHorizontal[0]), t.clear(), this.fsQuad.render(t), this.fsQuad.material = this.blendMaterial, this.copyUniforms.tDiffuse.value = this.renderTargetsHorizontal[0].texture, a && t.state.buffers.stencil.setTest(!0), this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(o), this.fsQuad.render(t)), t.setClearColor(this._oldClearColor, this.oldClearAlpha), t.autoClear = i;
2944
- }
2945
- getSeparableBlurMaterial(t) {
2946
- const e = [];
2947
- for (let o = 0; o < t; o++)
2948
- e.push(0.39894 * Math.exp(-0.5 * o * o / (t * t)) / t);
2949
- return new S({
3001
+ this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionX, e.setRenderTarget(this.renderTargetsHorizontal[l]), e.clear(), this.fsQuad.render(e), this.separableBlurMaterials[l].uniforms.colorTexture.value = this.renderTargetsHorizontal[l].texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionY, e.setRenderTarget(this.renderTargetsVertical[l]), e.clear(), this.fsQuad.render(e), n = this.renderTargetsVertical[l];
3002
+ 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, a && 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 = i;
3003
+ }
3004
+ getSeparableBlurMaterial(e) {
3005
+ const t = [];
3006
+ for (let o = 0; o < e; o++)
3007
+ t.push(0.39894 * Math.exp(-0.5 * o * o / (e * e)) / e);
3008
+ return new A({
2950
3009
  defines: {
2951
- KERNEL_RADIUS: t
3010
+ KERNEL_RADIUS: e
2952
3011
  },
2953
3012
  uniforms: {
2954
3013
  colorTexture: { value: null },
2955
- invSize: { value: new c(0.5, 0.5) },
3014
+ invSize: { value: new d(0.5, 0.5) },
2956
3015
  // inverse texture size
2957
- direction: { value: new c(0.5, 0.5) },
2958
- gaussianCoefficients: { value: e }
3016
+ direction: { value: new d(0.5, 0.5) },
3017
+ gaussianCoefficients: { value: t }
2959
3018
  // precomputed Gaussian coefficients
2960
3019
  },
2961
3020
  vertexShader: `varying vec2 vUv;
@@ -2986,10 +3045,10 @@ class B extends T {
2986
3045
  }`
2987
3046
  });
2988
3047
  }
2989
- getCompositeMaterial(t) {
2990
- return new S({
3048
+ getCompositeMaterial(e) {
3049
+ return new A({
2991
3050
  defines: {
2992
- NUM_MIPS: t
3051
+ NUM_MIPS: e
2993
3052
  },
2994
3053
  uniforms: {
2995
3054
  blurTexture1: { value: null },
@@ -3033,70 +3092,70 @@ class B extends T {
3033
3092
  });
3034
3093
  }
3035
3094
  }
3036
- B.BlurDirectionX = new c(1, 0);
3037
- B.BlurDirectionY = new c(0, 1);
3038
- const xo = /* @__PURE__ */ u({
3095
+ B.BlurDirectionX = new d(1, 0);
3096
+ B.BlurDirectionY = new d(0, 1);
3097
+ const bo = /* @__PURE__ */ u({
3039
3098
  __name: "UnrealBloom",
3040
3099
  props: {
3041
3100
  radius: { default: 0 },
3042
3101
  strength: { default: 1 },
3043
3102
  threshold: { default: 0 }
3044
3103
  },
3045
- setup(r, { expose: t }) {
3046
- const e = r, { sizes: o } = A(), { pass: s } = F(() => new B(
3047
- new c(o.width.value, o.height.value),
3048
- e.radius,
3049
- e.strength,
3050
- e.threshold
3051
- ), e);
3052
- return t({ pass: s }), v(() => {
3104
+ setup(r, { expose: e }) {
3105
+ const t = r, { sizes: o } = y(), { pass: s } = N(() => new B(
3106
+ new d(o.width.value, o.height.value),
3107
+ t.radius,
3108
+ t.strength,
3109
+ t.threshold
3110
+ ), t);
3111
+ return e({ pass: s }), x(() => {
3053
3112
  var a;
3054
- s.value.radius = e.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3055
- }), v(() => {
3113
+ s.value.radius = t.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3114
+ }), x(() => {
3056
3115
  var a;
3057
- s.value.strength = e.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3058
- }), v(() => {
3116
+ s.value.strength = t.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3117
+ }), x(() => {
3059
3118
  var a;
3060
- s.value.threshold = e.threshold ?? ((a = Xe.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3119
+ s.value.threshold = t.threshold ?? ((a = Ie.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3061
3120
  }), () => {
3062
3121
  };
3063
3122
  }
3064
3123
  });
3065
3124
  export {
3066
- kt as BarrelBlurPmndrs,
3067
- Gt as BloomPmndrs,
3068
- co as BrightnessContrastPmndrs,
3069
- Qt as ChromaticAberrationPmndrs,
3070
- _t as ColorAveragePmndrs,
3071
- no as ColorDepthPmndrs,
3072
- Ht as DepthOfFieldPmndrs,
3073
- ro as DepthPickingPassPmndrs,
3074
- oo as DotScreenPmndrs,
3075
- fo as EffectComposer,
3076
- Ut as EffectComposerPmndrs,
3077
- uo as FishEyePmndrs,
3078
- ho as Glitch,
3079
- Xt as GlitchPmndrs,
3080
- io as GodRaysPmndrs,
3081
- lo as GridPmndrs,
3082
- po as Halftone,
3083
- Kt as HueSaturationPmndrs,
3084
- Zt as KuwaharaPmndrs,
3085
- $t as LensDistortionPmndrs,
3086
- ao as LinocutPmndrs,
3087
- It as NoisePmndrs,
3088
- jt as OutlinePmndrs,
3125
+ qt as BarrelBlurPmndrs,
3126
+ Ht as BloomPmndrs,
3127
+ fo as BrightnessContrastPmndrs,
3128
+ Kt as ChromaticAberrationPmndrs,
3129
+ $t as ColorAveragePmndrs,
3130
+ lo as ColorDepthPmndrs,
3131
+ Xt as DepthOfFieldPmndrs,
3132
+ io as DepthPickingPassPmndrs,
3133
+ so as DotScreenPmndrs,
3134
+ ho as EffectComposer,
3135
+ Gt as EffectComposerPmndrs,
3136
+ co as FishEyePmndrs,
3137
+ po as Glitch,
3138
+ It as GlitchPmndrs,
3139
+ no as GodRaysPmndrs,
3140
+ uo as GridPmndrs,
3141
+ mo as Halftone,
3142
+ Jt as HueSaturationPmndrs,
3143
+ _t as KuwaharaPmndrs,
3144
+ eo as LensDistortionPmndrs,
3145
+ ro as LinocutPmndrs,
3146
+ jt as NoisePmndrs,
3147
+ Vt as OutlinePmndrs,
3089
3148
  go as Output,
3090
- mo as Pixelation,
3091
- Vt as PixelationPmndrs,
3092
- vo as SMAA,
3093
- Jt as ScanlinePmndrs,
3094
- so as SepiaPmndrs,
3095
- eo as ShockWavePmndrs,
3096
- to as TiltShiftPmndrs,
3097
- qt as ToneMappingPmndrs,
3098
- xo as UnrealBloom,
3099
- Yt as VignettePmndrs,
3100
- F as useEffect,
3101
- f as useEffectPmndrs
3149
+ vo as Pixelation,
3150
+ Yt as PixelationPmndrs,
3151
+ xo as SMAA,
3152
+ Zt as ScanlinePmndrs,
3153
+ ao as SepiaPmndrs,
3154
+ to as ShockWavePmndrs,
3155
+ oo as TiltShiftPmndrs,
3156
+ Qt as ToneMappingPmndrs,
3157
+ bo as UnrealBloom,
3158
+ kt as VignettePmndrs,
3159
+ N as useEffect,
3160
+ p as useEffectPmndrs
3102
3161
  };