@tresjs/post-processing 2.2.0 → 2.3.0

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.0
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 O, 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 Ie, NormalPass as je, DepthDownsamplingPass as Ve, EffectPass as Ye, BloomEffect as le, DepthOfFieldEffect as ue, GlitchEffect as X, GlitchMode as ke, 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 ge, ShockWaveEffect as ve, TiltShiftEffect as xe, DotScreenEffect as be, SepiaEffect as Se, DepthPickingPass as qe, 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 L, OrthographicCamera as Qe, BufferGeometry as Ke, Float32BufferAttribute as ye, Mesh as Je, ShaderMaterial as A, UniformsUtils as P, WebGLRenderTarget as D, NoBlending as Ze, Clock as _e, Color as k, MathUtils as w, DataTexture as $e, RedFormat as et, FloatType as tt, MeshNormalMaterial as ot, NearestFilter as F, DepthTexture as st, Vector4 as at, RawShaderMaterial as rt, ColorManagement as it, SRGBTransfer as nt, LinearToneMapping as lt, ReinhardToneMapping as ut, CineonToneMapping as ct, ACESFilmicToneMapping as dt, AgXToneMapping as ft, NeutralToneMapping as ht, CustomToneMapping as pt, Texture as Me, LinearFilter as mt, AdditiveBlending as gt, MeshBasicMaterial as vt } from "three";
12
+ import { useDevicePixelRatio as ze } 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"), Ut = /* @__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: p } = y(), f = W(null);
74
+ let g = null, c = null;
75
+ Be(se, f), e({ composer: f });
76
+ const b = () => {
77
+ f.value && (c = new je(a.value, i.value), c.enabled = !1, f.value.addPass(c), o.resolutionScale !== void 0 && Te.isWebGL2Available() && (g = new Ve({
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 = {
113
- depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : g.inputBuffer.depthBuffer,
114
- 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
80
+ }), g.enabled = !1, f.value.addPass(g)));
81
+ }, E = O(() => {
82
+ const v = new ne(), z = {
83
+ depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : v.inputBuffer.depthBuffer,
84
+ stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : v.inputBuffer.stencilBuffer,
85
+ multisampling: Te.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : v.multisampling : 0,
86
+ frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : T
117
87
  };
118
- return g.dispose(), N;
119
- }), ie = () => {
120
- 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());
88
+ return v.dispose(), z;
89
+ }), re = () => {
90
+ var v;
91
+ !n.value && !a.value && !i.value || ((v = f.value) == null || v.dispose(), f.value = new ne(n.value, E.value), f.value.addPass(new Ie(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], ([v, z]) => {
96
+ !v && !z || (f.value ? f.value.setSize(v, 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) {
133
- 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;
100
+ const { render: Xe } = G();
101
+ return Xe(() => {
102
+ if (o.enabled && n.value && f.value && l.width.value && l.height.value && p.frames.value > 0) {
103
+ const v = n.value.autoClear;
104
+ n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), f.value.render(), s("render", f.value), n.value.autoClear = v;
135
105
  }
136
- x.frames.value = x.mode.value === "always" ? 1 : Math.max(0, x.frames.value - 1);
137
- }), W(() => {
138
- 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);
106
+ p.frames.value = p.mode.value === "always" ? 1 : Math.max(0, p.frames.value - 1);
107
+ }), U(() => {
108
+ var v;
109
+ (v = f.value) == null || v.dispose();
110
+ }), (v, z) => Ne(v.$slots, "default");
111
+ }
112
+ }), h = (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 p = () => {
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
+ }, f = (c) => {
119
+ !n.value || !(o != null && o.value) || !i.value || (a.value = r(), s.value = new Ye(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 && (p(), f(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 g = x(() => {
134
+ !n.value || !(o != null && o.value) || !i.value || (oe(() => g()), !a.value && f());
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
+ p();
153
138
  }), {
154
- pass: o,
155
- effect: s
139
+ pass: s,
140
+ effect: a
156
141
  };
157
- }, Gt = /* @__PURE__ */ u({
142
+ }, We = /([^[.\]])+/g, xt = (r, e) => {
143
+ if (!e)
144
+ return;
145
+ const t = Array.isArray(e) ? e : e.match(We);
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(We);
149
+ o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = t), s[a]), r);
150
+ }, bt = (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, xt(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
+ )), Gt = /* @__PURE__ */ u({
158
172
  __name: "BloomPmndrs",
159
173
  props: {
160
174
  blendFunction: {},
@@ -164,18 +178,18 @@ 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 } = h(() => 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
  }
@@ -192,22 +206,22 @@ 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 } = h(() => 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
  }
@@ -226,22 +240,27 @@ 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 } = h(() => 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 ? ke.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
+ bt(t, ["active", "blendFunction"]),
262
+ s,
263
+ () => new X()
245
264
  ), () => {
246
265
  };
247
266
  }
@@ -251,14 +270,17 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
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 } = h(() => 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
  }
@@ -281,59 +303,65 @@ 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 = (p) => p !== void 0 ? $(p).getHex() : void 0, { camera: s, scene: a } = y(), { pass: i, effect: n } = h(
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 p;
336
+ (p = n.value) == null || p.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 = O(() => ({
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
  }
@@ -342,12 +370,12 @@ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
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 } = h(() => 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
  }
@@ -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 } = h(() => 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,11 +485,11 @@ 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
495
  const kt = /* @__PURE__ */ u({
@@ -466,22 +499,22 @@ const kt = /* @__PURE__ */ u({
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 } = h(
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
  }
@@ -496,20 +529,20 @@ 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 } = h(() => 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
  }
@@ -521,23 +554,23 @@ 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 } = h(() => 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
  }
@@ -548,16 +581,16 @@ const kt = /* @__PURE__ */ u({
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 } = h(() => 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
  }
@@ -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 } = h(() => 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
  },
@@ -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 } = {}) {
739
+ constructor({ blendFunction: e = Q.NORMAL, radius: t = 1, sectorCount: o = 4 } = {}) {
707
740
  super("KuwaharaEffect", St, {
708
- blendFunction: t,
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,11 +763,11 @@ 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
773
  const Zt = /* @__PURE__ */ u({
@@ -744,16 +777,16 @@ const Zt = /* @__PURE__ */ u({
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 } = h(
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()
@@ -766,22 +799,22 @@ const Zt = /* @__PURE__ */ u({
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 } = h(() => 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
  }
@@ -796,20 +829,20 @@ 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(
801
- () => 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()
832
+ setup(r, { expose: e }) {
833
+ const t = r, { pass: o, effect: s } = h(
834
+ () => new ge({
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
- () => new ve()
845
+ () => new ge()
813
846
  ), () => {
814
847
  };
815
848
  }
@@ -822,26 +855,26 @@ 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 } = h(
860
+ () => new ve(o.value, Array.isArray(t.position) ? new L(...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 L && 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 ve()
845
878
  ), () => {
846
879
  };
847
880
  }
@@ -858,22 +891,22 @@ 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 } = h(() => 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
  }
@@ -884,16 +917,16 @@ const Zt = /* @__PURE__ */ u({
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 } = h(() => 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
  }
@@ -903,28 +936,28 @@ const Zt = /* @__PURE__ */ u({
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 } = h(() => 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,42 +1019,42 @@ 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
1060
  const ao = /* @__PURE__ */ u({
@@ -1033,24 +1066,24 @@ 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 } = h(
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
  }
@@ -1060,14 +1093,14 @@ const ao = /* @__PURE__ */ u({
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 qe(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
1106
  }), io = /* @__PURE__ */ u({
@@ -1088,36 +1121,36 @@ 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(), { pass: s, effect: a } = h(
1126
+ () => new _(o.value, ie(t.lightSource), t),
1127
+ t
1095
1128
  );
1096
- return t({ pass: s, effect: a }), p(
1129
+ return e({ pass: s, effect: a }), m(
1097
1130
  [
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"]
1131
+ [() => t.blendFunction, "blendMode.blendFunction"],
1132
+ [() => t.density, "godRaysMaterial.density"],
1133
+ [() => t.decay, "godRaysMaterial.decay"],
1134
+ [() => t.weight, "godRaysMaterial.weight"],
1135
+ [() => t.exposure, "godRaysMaterial.exposure"],
1136
+ [() => t.samples, "godRaysMaterial.samples"],
1137
+ [() => t.clampMax, "godRaysMaterial.maxIntensity"],
1138
+ [() => t.resolutionScale, "resolution.scale"],
1139
+ [() => t.resolutionX, "resolution.width"],
1140
+ [() => t.resolutionY, "resolution.height"],
1141
+ [() => t.kernelSize, "kernelSize"],
1142
+ [() => t.blur, "blur"]
1110
1143
  ],
1111
1144
  a,
1112
- () => new $()
1113
- ), w(
1114
- [() => e.opacity],
1145
+ () => new _()
1146
+ ), S(
1147
+ [() => t.opacity],
1115
1148
  () => {
1116
1149
  var i, n;
1117
- if (e.opacity !== void 0)
1118
- (i = a.value) == null || i.blendMode.setOpacity(e.opacity);
1150
+ if (t.opacity !== void 0)
1151
+ (i = a.value) == null || i.blendMode.setOpacity(t.opacity);
1119
1152
  else {
1120
- const l = new $(o.value, ne(e.lightSource));
1153
+ const l = new _(o.value, ie(t.lightSource));
1121
1154
  (n = a.value) == null || n.blendMode.setOpacity(l.blendMode.getOpacity()), l.dispose();
1122
1155
  }
1123
1156
  },
@@ -1134,34 +1167,34 @@ const ao = /* @__PURE__ */ u({
1134
1167
  bits: {},
1135
1168
  opacity: {}
1136
1169
  },
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,
1170
+ setup(r, { expose: e }) {
1171
+ const t = r, { pass: o, effect: s } = h(() => new I(t), t);
1172
+ return e({ pass: o, effect: s }), H(
1173
+ () => t.blendFunction,
1141
1174
  s,
1142
1175
  "blendMode.blendFunction",
1143
- () => new X()
1144
- ), w(
1145
- [s, () => e.bits],
1176
+ () => new I()
1177
+ ), S(
1178
+ [s, () => t.bits],
1146
1179
  () => {
1147
1180
  var a, i;
1148
1181
  if (s.value)
1149
- if (e.bits !== void 0)
1150
- (a = s.value) == null || a.setBitDepth(e.bits);
1182
+ if (t.bits !== void 0)
1183
+ (a = s.value) == null || a.setBitDepth(t.bits);
1151
1184
  else {
1152
- const n = new X();
1185
+ const n = new I();
1153
1186
  (i = s.value) == null || i.setBitDepth(n.getBitDepth()), n.dispose();
1154
1187
  }
1155
1188
  }
1156
- ), w(
1157
- [s, () => e.opacity],
1189
+ ), S(
1190
+ [s, () => t.opacity],
1158
1191
  () => {
1159
1192
  var a, i;
1160
1193
  if (s.value)
1161
- if (e.opacity !== void 0)
1162
- (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1194
+ if (t.opacity !== void 0)
1195
+ (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
1163
1196
  else {
1164
- const n = new X();
1197
+ const n = new I();
1165
1198
  (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1166
1199
  }
1167
1200
  }
@@ -1175,21 +1208,21 @@ const ao = /* @__PURE__ */ u({
1175
1208
  scale: {},
1176
1209
  lineWidth: {}
1177
1210
  },
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(
1211
+ setup(r, { expose: e }) {
1212
+ const t = r, { pass: o, effect: s } = h(() => new we(t), t);
1213
+ return e({ pass: o, effect: s }), m(
1181
1214
  [
1182
- [() => e.blendFunction, "blendMode.blendFunction"],
1183
- [() => e.scale, "scale"],
1184
- [() => e.lineWidth, "lineWidth"]
1215
+ [() => t.blendFunction, "blendMode.blendFunction"],
1216
+ [() => t.scale, "scale"],
1217
+ [() => t.lineWidth, "lineWidth"]
1185
1218
  ],
1186
1219
  s,
1187
- () => new Ae()
1220
+ () => new we()
1188
1221
  ), () => {
1189
1222
  };
1190
1223
  }
1191
1224
  });
1192
- class Oe extends k {
1225
+ class Le extends q {
1193
1226
  /**
1194
1227
  * Creates a new FishEyeEffect instance.
1195
1228
  *
@@ -1200,7 +1233,7 @@ class Oe extends k {
1200
1233
  * @param {number} [options.scale] - Scale.
1201
1234
  *
1202
1235
  */
1203
- constructor({ blendFunction: t = q.NORMAL, lensS: e = new c(1, 1), lensF: o = new c(0, 1), scale: s = 1 } = {}) {
1236
+ constructor({ blendFunction: e = Q.NORMAL, lensS: t = new d(1, 1), lensF: o = new d(0, 1), scale: s = 1 } = {}) {
1204
1237
  super("FishEyeEffect", `
1205
1238
  uniform vec2 lensS;
1206
1239
  uniform vec2 lensF;
@@ -1220,11 +1253,11 @@ class Oe extends k {
1220
1253
  outputColor = vec4(inputColor.rgb, inputColor.a); // Preserves original alpha
1221
1254
  }
1222
1255
  `, {
1223
- blendFunction: t,
1256
+ blendFunction: e,
1224
1257
  uniforms: /* @__PURE__ */ new Map([
1225
- ["lensS", new y(e)],
1226
- ["lensF", new y(o)],
1227
- ["scale", new y(s)]
1258
+ ["lensS", new M(t)],
1259
+ ["lensF", new M(o)],
1260
+ ["scale", new M(s)]
1228
1261
  ])
1229
1262
  });
1230
1263
  }
@@ -1234,11 +1267,11 @@ class Oe extends k {
1234
1267
  * @type {Vector2}
1235
1268
  */
1236
1269
  get lensS() {
1237
- var t;
1238
- return (t = this.uniforms.get("lensS")) == null ? void 0 : t.value;
1270
+ var e;
1271
+ return (e = this.uniforms.get("lensS")) == null ? void 0 : e.value;
1239
1272
  }
1240
- set lensS(t) {
1241
- this.uniforms.get("lensS").value = t;
1273
+ set lensS(e) {
1274
+ this.uniforms.get("lensS").value = e;
1242
1275
  }
1243
1276
  /**
1244
1277
  * The lensF.
@@ -1246,11 +1279,11 @@ class Oe extends k {
1246
1279
  * @type {Vector2}
1247
1280
  */
1248
1281
  get lensF() {
1249
- var t;
1250
- return (t = this.uniforms.get("lensF")) == null ? void 0 : t.value;
1282
+ var e;
1283
+ return (e = this.uniforms.get("lensF")) == null ? void 0 : e.value;
1251
1284
  }
1252
- set lensF(t) {
1253
- this.uniforms.get("lensF").value = t;
1285
+ set lensF(e) {
1286
+ this.uniforms.get("lensF").value = e;
1254
1287
  }
1255
1288
  /**
1256
1289
  * The scale.
@@ -1258,11 +1291,11 @@ class Oe extends k {
1258
1291
  * @type {number}
1259
1292
  */
1260
1293
  get scale() {
1261
- var t;
1262
- return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1294
+ var e;
1295
+ return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
1263
1296
  }
1264
- set scale(t) {
1265
- this.uniforms.get("scale").value = t;
1297
+ set scale(e) {
1298
+ this.uniforms.get("scale").value = e;
1266
1299
  }
1267
1300
  }
1268
1301
  const uo = /* @__PURE__ */ u({
@@ -1273,28 +1306,28 @@ const uo = /* @__PURE__ */ u({
1273
1306
  lensF: {},
1274
1307
  scale: {}
1275
1308
  },
1276
- setup(r, { expose: t }) {
1277
- const e = r, o = L(
1278
- () => Array.isArray(e.lensS) ? new c(...e.lensS) : e.lensS
1279
- ), s = L(
1280
- () => Array.isArray(e.lensF) ? new c(...e.lensF) : e.lensF
1281
- ), { pass: a, effect: i } = f(
1282
- () => new Oe({
1283
- ...e,
1309
+ setup(r, { expose: e }) {
1310
+ const t = r, o = O(
1311
+ () => Array.isArray(t.lensS) ? new d(...t.lensS) : t.lensS
1312
+ ), s = O(
1313
+ () => Array.isArray(t.lensF) ? new d(...t.lensF) : t.lensF
1314
+ ), { pass: a, effect: i } = h(
1315
+ () => new Le({
1316
+ ...t,
1284
1317
  lensS: o.value,
1285
1318
  lensF: s.value
1286
1319
  }),
1287
- e
1320
+ t
1288
1321
  );
1289
- return t({ pass: a, effect: i }), p(
1322
+ return e({ pass: a, effect: i }), m(
1290
1323
  [
1291
- [() => e.blendFunction, "blendMode.blendFunction"],
1324
+ [() => t.blendFunction, "blendMode.blendFunction"],
1292
1325
  [() => o.value, "lensS"],
1293
1326
  [() => s.value, "lensF"],
1294
- [() => e.scale, "scale"]
1327
+ [() => t.scale, "scale"]
1295
1328
  ],
1296
1329
  i,
1297
- () => new Oe()
1330
+ () => new Le()
1298
1331
  ), () => {
1299
1332
  };
1300
1333
  }
@@ -1305,20 +1338,20 @@ const uo = /* @__PURE__ */ u({
1305
1338
  brightness: {},
1306
1339
  contrast: {}
1307
1340
  },
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(
1341
+ setup(r, { expose: e }) {
1342
+ const t = r, { pass: o, effect: s } = h(() => new Ae(t), t);
1343
+ return e({ pass: o, effect: s }), m(
1311
1344
  [
1312
- [() => e.blendFunction, "blendMode.blendFunction"],
1313
- [() => e.brightness, "brightness"],
1314
- [() => e.contrast, "contrast"]
1345
+ [() => t.blendFunction, "blendMode.blendFunction"],
1346
+ [() => t.brightness, "brightness"],
1347
+ [() => t.contrast, "contrast"]
1315
1348
  ],
1316
1349
  s,
1317
- () => new ye()
1350
+ () => new Ae()
1318
1351
  ), () => {
1319
1352
  };
1320
1353
  }
1321
- }), Ge = {
1354
+ }), Ue = {
1322
1355
  name: "CopyShader",
1323
1356
  uniforms: {
1324
1357
  tDiffuse: { value: null },
@@ -1356,7 +1389,7 @@ const uo = /* @__PURE__ */ u({
1356
1389
  }`
1357
1390
  )
1358
1391
  };
1359
- class T {
1392
+ class C {
1360
1393
  constructor() {
1361
1394
  this.isPass = !0, this.enabled = !0, this.needsSwap = !0, this.clear = !1, this.renderToScreen = !1;
1362
1395
  }
@@ -1368,190 +1401,202 @@ class T {
1368
1401
  dispose() {
1369
1402
  }
1370
1403
  }
1371
- const wt = new Ke(-1, 1, 1, -1, 0, 1);
1372
- class At extends Je {
1404
+ const wt = new Qe(-1, 1, 1, -1, 0, 1);
1405
+ class At extends Ke {
1373
1406
  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));
1407
+ 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
1408
  }
1376
1409
  }
1377
1410
  const yt = new At();
1378
- class O {
1379
- constructor(t) {
1380
- this._mesh = new Ze(yt, t);
1411
+ class R {
1412
+ constructor(e) {
1413
+ this._mesh = new Je(yt, e);
1381
1414
  }
1382
1415
  dispose() {
1383
1416
  this._mesh.geometry.dispose();
1384
1417
  }
1385
- render(t) {
1386
- t.render(this._mesh, wt);
1418
+ render(e) {
1419
+ e.render(this._mesh, wt);
1387
1420
  }
1388
1421
  get material() {
1389
1422
  return this._mesh.material;
1390
1423
  }
1391
- set material(t) {
1392
- this._mesh.material = t;
1424
+ set material(e) {
1425
+ this._mesh.material = e;
1393
1426
  }
1394
1427
  }
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),
1428
+ class Mt extends C {
1429
+ constructor(e, t) {
1430
+ 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({
1431
+ name: e.name !== void 0 ? e.name : "unspecified",
1432
+ defines: Object.assign({}, e.defines),
1400
1433
  uniforms: this.uniforms,
1401
- vertexShader: t.vertexShader,
1402
- fragmentShader: t.fragmentShader
1403
- })), this.fsQuad = new O(this.material);
1434
+ vertexShader: e.vertexShader,
1435
+ fragmentShader: e.fragmentShader
1436
+ })), this.fsQuad = new R(this.material);
1404
1437
  }
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));
1438
+ render(e, t, o) {
1439
+ 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
1440
  }
1408
1441
  dispose() {
1409
1442
  this.material.dispose(), this.fsQuad.dispose();
1410
1443
  }
1411
1444
  }
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;
1445
+ class Oe extends C {
1446
+ constructor(e, t) {
1447
+ super(), this.scene = e, this.camera = t, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1415
1448
  }
1416
- render(t, e, o) {
1417
- const s = t.getContext(), a = t.state;
1449
+ render(e, t, o) {
1450
+ const s = e.getContext(), a = e.state;
1418
1451
  a.buffers.color.setMask(!1), a.buffers.depth.setMask(!1), a.buffers.color.setLocked(!0), a.buffers.depth.setLocked(!0);
1419
1452
  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);
1453
+ 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
1454
  }
1422
1455
  }
1423
- class Tt extends T {
1456
+ class Tt extends C {
1424
1457
  constructor() {
1425
1458
  super(), this.needsSwap = !1;
1426
1459
  }
1427
- render(t) {
1428
- t.state.buffers.stencil.setLocked(!1), t.state.buffers.stencil.setTest(!1);
1460
+ render(e) {
1461
+ e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1429
1462
  }
1430
1463
  }
1431
1464
  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";
1465
+ constructor(e, t) {
1466
+ if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1467
+ const o = e.getSize(new d());
1468
+ 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
1469
  } 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();
1470
+ this._width = t.width, this._height = t.height;
1471
+ 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 Mt(Ue), this.copyPass.material.blending = Ze, this.clock = new _e();
1439
1472
  }
1440
1473
  swapBuffers() {
1441
- const t = this.readBuffer;
1442
- this.readBuffer = this.writeBuffer, this.writeBuffer = t;
1474
+ const e = this.readBuffer;
1475
+ this.readBuffer = this.writeBuffer, this.writeBuffer = e;
1443
1476
  }
1444
- addPass(t) {
1445
- this.passes.push(t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1477
+ addPass(e) {
1478
+ this.passes.push(e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1446
1479
  }
1447
- insertPass(t, e) {
1448
- this.passes.splice(e, 0, t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1480
+ insertPass(e, t) {
1481
+ this.passes.splice(t, 0, e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1449
1482
  }
1450
- removePass(t) {
1451
- const e = this.passes.indexOf(t);
1452
- e !== -1 && this.passes.splice(e, 1);
1483
+ removePass(e) {
1484
+ const t = this.passes.indexOf(e);
1485
+ t !== -1 && this.passes.splice(t, 1);
1453
1486
  }
1454
- isLastEnabledPass(t) {
1455
- for (let e = t + 1; e < this.passes.length; e++)
1456
- if (this.passes[e].enabled)
1487
+ isLastEnabledPass(e) {
1488
+ for (let t = e + 1; t < this.passes.length; t++)
1489
+ if (this.passes[t].enabled)
1457
1490
  return !1;
1458
1491
  return !0;
1459
1492
  }
1460
- render(t) {
1461
- t === void 0 && (t = this.clock.getDelta());
1462
- const e = this.renderer.getRenderTarget();
1493
+ render(e) {
1494
+ e === void 0 && (e = this.clock.getDelta());
1495
+ const t = this.renderer.getRenderTarget();
1463
1496
  let o = !1;
1464
1497
  for (let s = 0, a = this.passes.length; s < a; s++) {
1465
1498
  const i = this.passes[s];
1466
1499
  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) {
1500
+ if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, e, o), i.needsSwap) {
1468
1501
  if (o) {
1469
1502
  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);
1503
+ l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e), l.setFunc(n.EQUAL, 1, 4294967295);
1471
1504
  }
1472
1505
  this.swapBuffers();
1473
1506
  }
1474
- Re !== void 0 && (i instanceof Re ? o = !0 : i instanceof Tt && (o = !1));
1507
+ Oe !== void 0 && (i instanceof Oe ? o = !0 : i instanceof Tt && (o = !1));
1475
1508
  }
1476
1509
  }
1477
- this.renderer.setRenderTarget(e);
1510
+ this.renderer.setRenderTarget(t);
1478
1511
  }
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);
1512
+ reset(e) {
1513
+ if (e === void 0) {
1514
+ const t = this.renderer.getSize(new d());
1515
+ 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
1516
  }
1484
- this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1517
+ this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1485
1518
  }
1486
- setSize(t, e) {
1487
- this._width = t, this._height = e;
1519
+ setSize(e, t) {
1520
+ this._width = e, this._height = t;
1488
1521
  const o = this._width * this._pixelRatio, s = this._height * this._pixelRatio;
1489
1522
  this.renderTarget1.setSize(o, s), this.renderTarget2.setSize(o, s);
1490
1523
  for (let a = 0; a < this.passes.length; a++)
1491
1524
  this.passes[a].setSize(o, s);
1492
1525
  }
1493
- setPixelRatio(t) {
1494
- this._pixelRatio = t, this.setSize(this._width, this._height);
1526
+ setPixelRatio(e) {
1527
+ this._pixelRatio = e, this.setSize(this._width, this._height);
1495
1528
  }
1496
1529
  dispose() {
1497
1530
  this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();
1498
1531
  }
1499
1532
  }
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();
1533
+ class Et extends C {
1534
+ constructor(e, t, o = null, s = null, a = null) {
1535
+ 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
1536
  }
1504
- render(t, e, o) {
1505
- const s = t.autoClear;
1506
- t.autoClear = !1;
1537
+ render(e, t, o) {
1538
+ const s = e.autoClear;
1539
+ e.autoClear = !1;
1507
1540
  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;
1541
+ 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
1542
  }
1510
1543
  }
1511
- const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1544
+ const Ge = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1512
1545
  __name: "EffectComposer",
1513
1546
  props: {
1514
1547
  enabled: { type: Boolean, default: !0 },
1515
1548
  withoutRenderPass: { type: Boolean }
1516
1549
  },
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));
1550
+ setup(r, { expose: e }) {
1551
+ const t = r, o = W(null);
1552
+ Be(Ge, o), e({ composer: o });
1553
+ const { renderer: s, sizes: a, scene: i, camera: n, render: l } = y();
1554
+ x(() => {
1555
+ var c;
1556
+ (c = o.value) == null || c.dispose(), o.value = new Ct(s.value);
1557
+ }), x(() => {
1558
+ var E;
1559
+ const { width: c, height: b } = a;
1560
+ b.value && c.value && ((E = o.value) == null || E.setSize(c.value, b.value));
1528
1561
  });
1529
- const { pixelRatio: d } = We();
1530
- v(() => {
1531
- var h;
1532
- (h = o.value) == null || h.setPixelRatio(d.value);
1533
- }), e.withoutRenderPass || v(() => {
1562
+ const { pixelRatio: f } = ze();
1563
+ x(() => {
1564
+ var c;
1565
+ (c = o.value) == null || c.setPixelRatio(f.value);
1566
+ }), t.withoutRenderPass || x(() => {
1534
1567
  n.value && i.value && o.value && o.value.addPass(new Et(i.value, n.value));
1535
1568
  });
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()));
1569
+ const { render: g } = G();
1570
+ return g(() => {
1571
+ 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);
1572
+ }), U(() => {
1573
+ var c;
1574
+ (c = o.value) == null || c.dispose();
1575
+ }), (c, b) => Ne(c.$slots, "default");
1576
+ }
1577
+ }), N = (r, e, t) => {
1578
+ if (!e && t)
1579
+ throw new Error("passDependencies is required when dependencyFieldsTriggeringRecreation is provided");
1580
+ const o = te(Ge), s = W(r()), { sizes: a, invalidate: i } = y();
1581
+ e && S(e, () => i());
1582
+ const n = () => {
1583
+ var p;
1584
+ (p = o == null ? void 0 : o.value) == null || p.removePass(s.value), s.value.dispose();
1585
+ }, l = x(() => {
1586
+ !(o != null && o.value) || !a.height.value || !a.width.value || (o.value.addPass(s.value), oe(() => l()));
1549
1587
  });
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 };
1554
- }, Dt = {
1588
+ return t && S(
1589
+ () => t.map((p) => e == null ? void 0 : e[p]),
1590
+ () => {
1591
+ if (!(o != null && o.value))
1592
+ return;
1593
+ const p = o.value.passes.findIndex((f) => f === s.value);
1594
+ ~p && (n(), s.value = r(), o.value.insertPass(s.value, p));
1595
+ }
1596
+ ), U(() => {
1597
+ n();
1598
+ }), { pass: s };
1599
+ }, Pt = {
1555
1600
  uniforms: {
1556
1601
  tDiffuse: { value: null },
1557
1602
  //diffuse texture
@@ -1646,29 +1691,29 @@ const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1646
1691
  }`
1647
1692
  )
1648
1693
  };
1649
- class Be extends T {
1650
- constructor(t = 64) {
1694
+ class Re extends C {
1695
+ constructor(e = 64) {
1651
1696
  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({
1697
+ const t = Pt;
1698
+ this.uniforms = P.clone(t.uniforms), this.heightMap = this.generateHeightmap(e), this.uniforms.tDisp.value = this.heightMap, this.material = new A({
1654
1699
  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();
1700
+ vertexShader: t.vertexShader,
1701
+ fragmentShader: t.fragmentShader
1702
+ }), this.fsQuad = new R(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1658
1703
  }
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));
1704
+ render(e, t, o) {
1705
+ 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
1706
  }
1662
1707
  generateTrigger() {
1663
- this.randX = b.randInt(120, 240);
1708
+ this.randX = w.randInt(120, 240);
1664
1709
  }
1665
- generateHeightmap(t) {
1666
- const e = new Float32Array(t * t), o = t * t;
1710
+ generateHeightmap(e) {
1711
+ const t = new Float32Array(e * e), o = e * e;
1667
1712
  for (let a = 0; a < o; a++) {
1668
- const i = b.randFloat(0, 1);
1669
- e[a] = i;
1713
+ const i = w.randFloat(0, 1);
1714
+ t[a] = i;
1670
1715
  }
1671
- const s = new et(e, t, t, tt, ot);
1716
+ const s = new $e(t, e, e, et, tt);
1672
1717
  return s.needsUpdate = !0, s;
1673
1718
  }
1674
1719
  dispose() {
@@ -1681,18 +1726,18 @@ const ho = /* @__PURE__ */ u({
1681
1726
  dtSize: {},
1682
1727
  goWild: { type: Boolean }
1683
1728
  },
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"]],
1729
+ setup(r, { expose: e }) {
1730
+ const t = r, { pass: o } = N(() => new Re(t.dtSize), t, ["dtSize"]);
1731
+ e({ pass: o });
1732
+ const { onBeforeRender: s } = G();
1733
+ return s(({ invalidate: a }) => a()), m(
1734
+ [[() => t.goWild, "goWild"]],
1690
1735
  o,
1691
- () => new Be()
1736
+ () => new Re()
1692
1737
  ), () => {
1693
1738
  };
1694
1739
  }
1695
- }), V = {
1740
+ }), Y = {
1696
1741
  name: "HalftoneShader",
1697
1742
  uniforms: {
1698
1743
  tDiffuse: { value: null },
@@ -1996,22 +2041,22 @@ const ho = /* @__PURE__ */ u({
1996
2041
  }`
1997
2042
  )
1998
2043
  };
1999
- class Pt extends T {
2000
- constructor(t, e, o) {
2001
- super(), this.uniforms = E.clone(V.uniforms), this.material = new S({
2044
+ class Dt extends C {
2045
+ constructor(e, t, o) {
2046
+ super(), this.uniforms = P.clone(Y.uniforms), this.material = new A({
2002
2047
  uniforms: this.uniforms,
2003
- fragmentShader: V.fragmentShader,
2004
- vertexShader: V.vertexShader
2005
- }), this.uniforms.width.value = t, this.uniforms.height.value = e;
2048
+ fragmentShader: Y.fragmentShader,
2049
+ vertexShader: Y.vertexShader
2050
+ }), this.uniforms.width.value = e, this.uniforms.height.value = t;
2006
2051
  for (const s in o)
2007
2052
  o.hasOwnProperty(s) && this.uniforms.hasOwnProperty(s) && (this.uniforms[s].value = o[s]);
2008
- this.fsQuad = new O(this.material);
2053
+ this.fsQuad = new R(this.material);
2009
2054
  }
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));
2055
+ render(e, t, o) {
2056
+ 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
2057
  }
2013
- setSize(t, e) {
2014
- this.uniforms.width.value = t, this.uniforms.height.value = e;
2058
+ setSize(e, t) {
2059
+ this.uniforms.width.value = e, this.uniforms.height.value = t;
2015
2060
  }
2016
2061
  dispose() {
2017
2062
  this.material.dispose(), this.fsQuad.dispose();
@@ -2030,55 +2075,55 @@ const po = /* @__PURE__ */ u({
2030
2075
  greyscale: { type: Boolean },
2031
2076
  blendingMode: {}
2032
2077
  },
2033
- setup(r, { expose: t }) {
2034
- const e = r, { sizes: o } = A(), s = L(
2078
+ setup(r, { expose: e }) {
2079
+ const t = r, { sizes: o } = y(), s = O(
2035
2080
  () => Object.fromEntries(
2036
- Object.entries(e).filter(([i, n]) => n !== void 0)
2081
+ Object.entries(t).filter(([i, n]) => n !== void 0)
2037
2082
  )
2038
- ), { pass: a } = F(() => new Pt(
2083
+ ), { pass: a } = N(() => new Dt(
2039
2084
  o.width.value,
2040
2085
  o.height.value,
2041
2086
  s.value
2042
- ), e);
2043
- return t({ pass: a }), v(() => {
2087
+ ), t);
2088
+ return e({ pass: a }), x(() => {
2044
2089
  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);
2090
+ }), x(() => {
2091
+ Object.entries(t).forEach(([i, n]) => {
2092
+ i in a.value.uniforms && (a.value.uniforms[i].value = n ?? Y.uniforms[i].value);
2048
2093
  });
2049
2094
  }), () => {
2050
2095
  };
2051
2096
  }
2052
2097
  });
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;
2098
+ class Fe extends C {
2099
+ constructor(e, t, o, s = {}) {
2100
+ super(), this.pixelSize = e, this.resolution = new d(), this.renderResolution = new d(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new ot(), 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 st(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = F, this.normalRenderTarget.texture.magFilter = F, this.normalRenderTarget.texture.type = T;
2056
2101
  }
2057
2102
  dispose() {
2058
2103
  this.beautyRenderTarget.dispose(), this.normalRenderTarget.dispose(), this.pixelatedMaterial.dispose(), this.normalMaterial.dispose(), this.fsQuad.dispose();
2059
2104
  }
2060
- setSize(t, e) {
2061
- this.resolution.set(t, e), this.renderResolution.set(t / this.pixelSize | 0, e / this.pixelSize | 0);
2105
+ setSize(e, t) {
2106
+ this.resolution.set(e, t), this.renderResolution.set(e / this.pixelSize | 0, t / this.pixelSize | 0);
2062
2107
  const { x: o, y: s } = this.renderResolution;
2063
2108
  this.beautyRenderTarget.setSize(o, s), this.normalRenderTarget.setSize(o, s), this.fsQuad.material.uniforms.resolution.value.set(o, s, 1 / o, 1 / s);
2064
2109
  }
2065
- setPixelSize(t) {
2066
- this.pixelSize = t, this.setSize(this.resolution.x, this.resolution.y);
2110
+ setPixelSize(e) {
2111
+ this.pixelSize = e, this.setSize(this.resolution.x, this.resolution.y);
2067
2112
  }
2068
- render(t, e) {
2113
+ render(e, t) {
2069
2114
  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);
2115
+ o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, e.setRenderTarget(this.beautyRenderTarget), e.render(this.scene, this.camera);
2071
2116
  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);
2117
+ 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
2118
  }
2074
2119
  createPixelatedMaterial() {
2075
- return new S({
2120
+ return new A({
2076
2121
  uniforms: {
2077
2122
  tDiffuse: { value: null },
2078
2123
  tDepth: { value: null },
2079
2124
  tNormal: { value: null },
2080
2125
  resolution: {
2081
- value: new rt(
2126
+ value: new at(
2082
2127
  this.renderResolution.x,
2083
2128
  this.renderResolution.y,
2084
2129
  1 / this.renderResolution.x,
@@ -2204,14 +2249,14 @@ const mo = /* @__PURE__ */ u({
2204
2249
  depthEdgeStrength: {},
2205
2250
  normalEdgeStrength: {}
2206
2251
  },
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(
2252
+ setup(r, { expose: e }) {
2253
+ const t = r, { scene: o, camera: s } = y(), { pass: a } = N(() => new Fe(t.pixelSize, o.value, s.value), t);
2254
+ return e({ pass: a }), x(() => {
2255
+ a.value.setPixelSize(t.pixelSize);
2256
+ }), m(
2212
2257
  [
2213
- [() => e.depthEdgeStrength, "depthEdgeStrength"],
2214
- [() => e.normalEdgeStrength, "normalEdgeStrength"]
2258
+ [() => t.depthEdgeStrength, "depthEdgeStrength"],
2259
+ [() => t.normalEdgeStrength, "normalEdgeStrength"]
2215
2260
  ],
2216
2261
  a,
2217
2262
  () => new Fe(1, o.value, s.value)
@@ -2304,19 +2349,19 @@ const mo = /* @__PURE__ */ u({
2304
2349
  }`
2305
2350
  )
2306
2351
  };
2307
- class Ot extends T {
2352
+ class Ot extends C {
2308
2353
  constructor() {
2309
2354
  super();
2310
- const t = Lt;
2311
- this.uniforms = E.clone(t.uniforms), this.material = new it({
2312
- name: t.name,
2355
+ const e = Lt;
2356
+ this.uniforms = P.clone(e.uniforms), this.material = new rt({
2357
+ name: e.name,
2313
2358
  uniforms: this.uniforms,
2314
- vertexShader: t.vertexShader,
2315
- fragmentShader: t.fragmentShader
2316
- }), this.fsQuad = new O(this.material), this._outputColorSpace = null, this._toneMapping = null;
2359
+ vertexShader: e.vertexShader,
2360
+ fragmentShader: e.fragmentShader
2361
+ }), this.fsQuad = new R(this.material), this._outputColorSpace = null, this._toneMapping = null;
2317
2362
  }
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));
2363
+ render(e, t, o) {
2364
+ 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 = {}, it.getTransfer(this._outputColorSpace) === nt && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === lt ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === ut ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === ct ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === dt ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === ft ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === ht ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === pt && (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
2365
  }
2321
2366
  dispose() {
2322
2367
  this.material.dispose(), this.fsQuad.dispose();
@@ -2324,19 +2369,19 @@ class Ot extends T {
2324
2369
  }
2325
2370
  const go = /* @__PURE__ */ u({
2326
2371
  __name: "Output",
2327
- setup(r, { expose: t }) {
2328
- const { pass: e } = F(() => new Ot());
2329
- return t({ pass: e }), () => {
2372
+ setup(r, { expose: e }) {
2373
+ const { pass: t } = N(() => new Ot());
2374
+ return e({ pass: t }), () => {
2330
2375
  };
2331
2376
  }
2332
- }), I = {
2377
+ }), j = {
2333
2378
  name: "SMAAEdgesShader",
2334
2379
  defines: {
2335
2380
  SMAA_THRESHOLD: "0.1"
2336
2381
  },
2337
2382
  uniforms: {
2338
2383
  tDiffuse: { value: null },
2339
- resolution: { value: new c(1 / 1024, 1 / 512) }
2384
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2340
2385
  },
2341
2386
  vertexShader: (
2342
2387
  /* glsl */
@@ -2430,7 +2475,7 @@ const go = /* @__PURE__ */ u({
2430
2475
 
2431
2476
  }`
2432
2477
  )
2433
- }, j = {
2478
+ }, V = {
2434
2479
  name: "SMAAWeightsShader",
2435
2480
  defines: {
2436
2481
  SMAA_MAX_SEARCH_STEPS: "8",
@@ -2442,7 +2487,7 @@ const go = /* @__PURE__ */ u({
2442
2487
  tDiffuse: { value: null },
2443
2488
  tArea: { value: null },
2444
2489
  tSearch: { value: null },
2445
- resolution: { value: new c(1 / 1024, 1 / 512) }
2490
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2446
2491
  },
2447
2492
  vertexShader: (
2448
2493
  /* glsl */
@@ -2680,12 +2725,12 @@ const go = /* @__PURE__ */ u({
2680
2725
 
2681
2726
  }`
2682
2727
  )
2683
- }, te = {
2728
+ }, ee = {
2684
2729
  name: "SMAABlendShader",
2685
2730
  uniforms: {
2686
2731
  tDiffuse: { value: null },
2687
2732
  tColor: { value: null },
2688
- resolution: { value: new c(1 / 1024, 1 / 512) }
2733
+ resolution: { value: new d(1 / 1024, 1 / 512) }
2689
2734
  },
2690
2735
  vertexShader: (
2691
2736
  /* glsl */
@@ -2770,43 +2815,43 @@ const go = /* @__PURE__ */ u({
2770
2815
  }`
2771
2816
  )
2772
2817
  };
2773
- class Rt extends T {
2774
- constructor(t, e) {
2775
- super(), this.edgesRT = new D(t, e, {
2818
+ class Rt extends C {
2819
+ constructor(e, t) {
2820
+ super(), this.edgesRT = new D(e, t, {
2776
2821
  depthBuffer: !1,
2777
- type: M
2778
- }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(t, e, {
2822
+ type: T
2823
+ }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(e, t, {
2779
2824
  depthBuffer: !1,
2780
- type: M
2825
+ type: T
2781
2826
  }), this.weightsRT.texture.name = "SMAAPass.weights";
2782
2827
  const o = this, s = new Image();
2783
2828
  s.src = this.getAreaTexture(), s.onload = function() {
2784
2829
  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;
2830
+ }, this.areaTexture = new Me(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = mt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2786
2831
  const a = new Image();
2787
2832
  a.src = this.getSearchTexture(), a.onload = function() {
2788
2833
  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({
2834
+ }, 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
2835
  defines: Object.assign({}, j.defines),
2796
- uniforms: this.uniformsWeights,
2836
+ uniforms: this.uniformsEdges,
2797
2837
  vertexShader: j.vertexShader,
2798
2838
  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({
2839
+ }), 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({
2840
+ defines: Object.assign({}, V.defines),
2841
+ uniforms: this.uniformsWeights,
2842
+ vertexShader: V.vertexShader,
2843
+ fragmentShader: V.fragmentShader
2844
+ }), 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
2845
  uniforms: this.uniformsBlend,
2801
- vertexShader: te.vertexShader,
2802
- fragmentShader: te.fragmentShader
2803
- }), this.fsQuad = new O(null);
2846
+ vertexShader: ee.vertexShader,
2847
+ fragmentShader: ee.fragmentShader
2848
+ }), this.fsQuad = new R(null);
2804
2849
  }
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));
2850
+ render(e, t, o) {
2851
+ 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
2852
  }
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);
2853
+ setSize(e, t) {
2854
+ 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
2855
  }
2811
2856
  getAreaTexture() {
2812
2857
  return "data:image/png;base64,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";
@@ -2824,21 +2869,21 @@ const vo = /* @__PURE__ */ u({
2824
2869
  width: {},
2825
2870
  height: {}
2826
2871
  },
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(() => {
2872
+ setup(r, { expose: e }) {
2873
+ const t = r, { sizes: o } = y(), { pixelRatio: s } = ze(), a = O(() => t.width ?? o.width.value * s.value), i = O(() => t.height ?? o.height.value * s.value), { pass: n } = N(() => new Rt(a.value, i.value), t);
2874
+ return e({ pass: n }), x(() => {
2830
2875
  n.value.setSize(a.value, i.value);
2831
2876
  }), () => {
2832
2877
  };
2833
2878
  }
2834
- }), Xe = {
2879
+ }), He = {
2835
2880
  name: "LuminosityHighPassShader",
2836
2881
  shaderID: "luminosityHighPass",
2837
2882
  uniforms: {
2838
2883
  tDiffuse: { value: null },
2839
2884
  luminosityThreshold: { value: 1 },
2840
2885
  smoothWidth: { value: 1 },
2841
- defaultColor: { value: new Y(0) },
2886
+ defaultColor: { value: new k(0) },
2842
2887
  defaultOpacity: { value: 0 }
2843
2888
  },
2844
2889
  vertexShader: (
@@ -2882,80 +2927,80 @@ const vo = /* @__PURE__ */ u({
2882
2927
  }`
2883
2928
  )
2884
2929
  };
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;
2930
+ class B extends C {
2931
+ constructor(e, t, o, s) {
2932
+ 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
2933
  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);
2934
+ this.renderTargetBright = new D(a, i, { type: T }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2935
+ for (let g = 0; g < this.nMips; g++) {
2936
+ const c = new D(a, i, { type: T });
2937
+ c.texture.name = "UnrealBloomPass.h" + g, c.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(c);
2938
+ const b = new D(a, i, { type: T });
2939
+ b.texture.name = "UnrealBloomPass.v" + g, b.texture.generateMipmaps = !1, this.renderTargetsVertical.push(b), a = Math.round(a / 2), i = Math.round(i / 2);
2895
2940
  }
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({
2941
+ const n = He;
2942
+ this.highPassUniforms = P.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new A({
2898
2943
  uniforms: this.highPassUniforms,
2899
2944
  vertexShader: n.vertexShader,
2900
2945
  fragmentShader: n.fragmentShader
2901
2946
  }), this.separableBlurMaterials = [];
2902
2947
  const l = [3, 5, 7, 9, 11];
2903
2948
  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({
2949
+ for (let g = 0; g < this.nMips; g++)
2950
+ this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[g])), this.separableBlurMaterials[g].uniforms.invSize.value = new d(1 / a, 1 / i), a = Math.round(a / 2), i = Math.round(i / 2);
2951
+ 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;
2952
+ const p = [1, 0.8, 0.6, 0.4, 0.2];
2953
+ this.compositeMaterial.uniforms.bloomFactors.value = p, this.bloomTintColors = [new L(1, 1, 1), new L(1, 1, 1), new L(1, 1, 1), new L(1, 1, 1), new L(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2954
+ const f = Ue;
2955
+ this.copyUniforms = P.clone(f.uniforms), this.blendMaterial = new A({
2911
2956
  uniforms: this.copyUniforms,
2912
- vertexShader: d.vertexShader,
2913
- fragmentShader: d.fragmentShader,
2914
- blending: vt,
2957
+ vertexShader: f.vertexShader,
2958
+ fragmentShader: f.fragmentShader,
2959
+ blending: gt,
2915
2960
  depthTest: !1,
2916
2961
  depthWrite: !1,
2917
2962
  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);
2963
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new k(), this.oldClearAlpha = 1, this.basic = new vt(), this.fsQuad = new R(null);
2919
2964
  }
2920
2965
  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();
2966
+ for (let e = 0; e < this.renderTargetsHorizontal.length; e++)
2967
+ this.renderTargetsHorizontal[e].dispose();
2968
+ for (let e = 0; e < this.renderTargetsVertical.length; e++)
2969
+ this.renderTargetsVertical[e].dispose();
2925
2970
  this.renderTargetBright.dispose();
2926
- for (let t = 0; t < this.separableBlurMaterials.length; t++)
2927
- this.separableBlurMaterials[t].dispose();
2971
+ for (let e = 0; e < this.separableBlurMaterials.length; e++)
2972
+ this.separableBlurMaterials[e].dispose();
2928
2973
  this.compositeMaterial.dispose(), this.blendMaterial.dispose(), this.basic.dispose(), this.fsQuad.dispose();
2929
2974
  }
2930
- setSize(t, e) {
2931
- let o = Math.round(t / 2), s = Math.round(e / 2);
2975
+ setSize(e, t) {
2976
+ let o = Math.round(e / 2), s = Math.round(t / 2);
2932
2977
  this.renderTargetBright.setSize(o, s);
2933
2978
  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);
2979
+ 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
2980
  }
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);
2981
+ render(e, t, o, s, a) {
2982
+ e.getClearColor(this._oldClearColor), this.oldClearAlpha = e.getClearAlpha();
2983
+ const i = e.autoClear;
2984
+ 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
2985
  let n = this.renderTargetBright;
2941
2986
  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({
2987
+ 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];
2988
+ 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;
2989
+ }
2990
+ getSeparableBlurMaterial(e) {
2991
+ const t = [];
2992
+ for (let o = 0; o < e; o++)
2993
+ t.push(0.39894 * Math.exp(-0.5 * o * o / (e * e)) / e);
2994
+ return new A({
2950
2995
  defines: {
2951
- KERNEL_RADIUS: t
2996
+ KERNEL_RADIUS: e
2952
2997
  },
2953
2998
  uniforms: {
2954
2999
  colorTexture: { value: null },
2955
- invSize: { value: new c(0.5, 0.5) },
3000
+ invSize: { value: new d(0.5, 0.5) },
2956
3001
  // inverse texture size
2957
- direction: { value: new c(0.5, 0.5) },
2958
- gaussianCoefficients: { value: e }
3002
+ direction: { value: new d(0.5, 0.5) },
3003
+ gaussianCoefficients: { value: t }
2959
3004
  // precomputed Gaussian coefficients
2960
3005
  },
2961
3006
  vertexShader: `varying vec2 vUv;
@@ -2986,10 +3031,10 @@ class B extends T {
2986
3031
  }`
2987
3032
  });
2988
3033
  }
2989
- getCompositeMaterial(t) {
2990
- return new S({
3034
+ getCompositeMaterial(e) {
3035
+ return new A({
2991
3036
  defines: {
2992
- NUM_MIPS: t
3037
+ NUM_MIPS: e
2993
3038
  },
2994
3039
  uniforms: {
2995
3040
  blurTexture1: { value: null },
@@ -3033,8 +3078,8 @@ class B extends T {
3033
3078
  });
3034
3079
  }
3035
3080
  }
3036
- B.BlurDirectionX = new c(1, 0);
3037
- B.BlurDirectionY = new c(0, 1);
3081
+ B.BlurDirectionX = new d(1, 0);
3082
+ B.BlurDirectionY = new d(0, 1);
3038
3083
  const xo = /* @__PURE__ */ u({
3039
3084
  __name: "UnrealBloom",
3040
3085
  props: {
@@ -3042,22 +3087,22 @@ const xo = /* @__PURE__ */ u({
3042
3087
  strength: { default: 1 },
3043
3088
  threshold: { default: 0 }
3044
3089
  },
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(() => {
3090
+ setup(r, { expose: e }) {
3091
+ const t = r, { sizes: o } = y(), { pass: s } = N(() => new B(
3092
+ new d(o.width.value, o.height.value),
3093
+ t.radius,
3094
+ t.strength,
3095
+ t.threshold
3096
+ ), t);
3097
+ return e({ pass: s }), x(() => {
3053
3098
  var a;
3054
- s.value.radius = e.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3055
- }), v(() => {
3099
+ s.value.radius = t.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3100
+ }), x(() => {
3056
3101
  var a;
3057
- s.value.strength = e.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3058
- }), v(() => {
3102
+ s.value.strength = t.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3103
+ }), x(() => {
3059
3104
  var a;
3060
- s.value.threshold = e.threshold ?? ((a = Xe.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3105
+ s.value.threshold = t.threshold ?? ((a = He.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3061
3106
  }), () => {
3062
3107
  };
3063
3108
  }
@@ -3097,6 +3142,6 @@ export {
3097
3142
  qt as ToneMappingPmndrs,
3098
3143
  xo as UnrealBloom,
3099
3144
  Yt as VignettePmndrs,
3100
- F as useEffect,
3101
- f as useEffectPmndrs
3145
+ N as useEffect,
3146
+ h as useEffectPmndrs
3102
3147
  };