@tresjs/post-processing 2.3.1 → 3.0.0-next.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,28 +1,28 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v2.3.1
3
+ * version: v3.0.0-next.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 { defineComponent as u, shallowRef as W, provide as Be, computed as L, watch as S, onUnmounted as U, renderSlot as Ne, inject as te, watchEffect as x, nextTick as oe, toRaw as ie } from "vue";
9
- import { EffectComposer as ne, RenderPass as Ve, NormalPass as Ye, DepthDownsamplingPass as ke, EffectPass as qe, BloomEffect as le, DepthOfFieldEffect as ue, GlitchEffect as X, GlitchMode as Qe, NoiseEffect as ce, OutlineEffect as de, PixelationEffect as fe, VignetteEffect as he, Effect as q, BlendFunction as Q, ToneMappingEffect as pe, ChromaticAberrationEffect as K, HueSaturationEffect as me, ScanlineEffect as J, ColorAverageEffect as Z, LensDistortionEffect as ve, ShockWaveEffect as ge, TiltShiftEffect as xe, DotScreenEffect as be, SepiaEffect as Se, DepthPickingPass as Ke, GodRaysEffect as _, ColorDepthEffect as I, GridEffect as we, BrightnessContrastEffect as Ae } from "postprocessing";
10
- import { useTresContext as y, useLoop as G, normalizeColor as $ } from "@tresjs/core";
11
- import { HalfFloatType as T, Uniform as M, Vector2 as d, Vector3 as O, Mesh as ze, SphereGeometry as Je, MeshBasicMaterial as We, OrthographicCamera as Ze, BufferGeometry as _e, Float32BufferAttribute as ye, ShaderMaterial as A, UniformsUtils as P, WebGLRenderTarget as D, NoBlending as $e, Clock as et, Color as k, MathUtils as w, DataTexture as tt, RedFormat as ot, FloatType as st, MeshNormalMaterial as at, NearestFilter as F, DepthTexture as rt, Vector4 as it, RawShaderMaterial as nt, ColorManagement as lt, SRGBTransfer as ut, LinearToneMapping as ct, ReinhardToneMapping as dt, CineonToneMapping as ft, ACESFilmicToneMapping as ht, AgXToneMapping as pt, NeutralToneMapping as mt, CustomToneMapping as vt, Texture as Me, LinearFilter as gt, AdditiveBlending as xt } from "three";
12
- import { useDevicePixelRatio as Ue } from "@vueuse/core";
13
- class Te {
8
+ import { defineComponent as c, shallowRef as U, provide as He, computed as F, watch as g, onUnmounted as z, renderSlot as Ie, inject as Q, watchEffect as S, nextTick as ue, toRaw as fe } from "vue";
9
+ import { EffectComposer as he, RenderPass as Je, NormalPass as Ze, DepthDownsamplingPass as _e, EffectPass as Xe, BloomEffect as pe, DepthOfFieldEffect as me, GlitchEffect as I, GlitchMode as $e, NoiseEffect as ve, OutlineEffect as ge, PixelationEffect as xe, VignetteEffect as be, Effect as K, BlendFunction as J, ToneMappingEffect as we, ChromaticAberrationEffect as $, HueSaturationEffect as Se, ScanlineEffect as ee, ColorAverageEffect as te, LensDistortionEffect as Ae, ShockWaveEffect as ye, TiltShiftEffect as Me, DotScreenEffect as Te, SepiaEffect as Ce, DepthPickingPass as et, GodRaysEffect as oe, ColorDepthEffect as X, GridEffect as Ee, BrightnessContrastEffect as Pe, SMAAEffect as se, TextureEffect as Y, FXAAEffect as ae, ASCIIEffect as re, ASCIITexture as tt } from "postprocessing";
10
+ import { useTresContext as G, useTres as C, useLoop as ce, normalizeColor as ie } from "@tresjs/core";
11
+ import { HalfFloatType as E, Uniform as T, Vector2 as f, Vector3 as O, Mesh as je, SphereGeometry as ot, MeshBasicMaterial as Ve, OrthographicCamera as st, BufferGeometry as at, Float32BufferAttribute as De, ShaderMaterial as M, UniformsUtils as D, WebGLRenderTarget as L, NoBlending as rt, Clock as it, Color as q, MathUtils as y, DataTexture as nt, RedFormat as lt, FloatType as ut, MeshNormalMaterial as ct, NearestFilter as B, DepthTexture as dt, Vector4 as ft, RawShaderMaterial as ht, ColorManagement as pt, SRGBTransfer as mt, LinearToneMapping as vt, ReinhardToneMapping as gt, CineonToneMapping as xt, ACESFilmicToneMapping as bt, AgXToneMapping as wt, NeutralToneMapping as St, CustomToneMapping as At, Texture as Le, LinearFilter as yt, AdditiveBlending as Mt } from "three";
12
+ import { useDevicePixelRatio as Ye } from "@vueuse/core";
13
+ class Fe {
14
14
  static isWebGL2Available() {
15
15
  try {
16
- const e = document.createElement("canvas");
17
- return !!(window.WebGL2RenderingContext && e.getContext("webgl2"));
16
+ const t = document.createElement("canvas");
17
+ return !!(window.WebGL2RenderingContext && t.getContext("webgl2"));
18
18
  } catch {
19
19
  return !1;
20
20
  }
21
21
  }
22
- static isColorSpaceAvailable(e) {
22
+ static isColorSpaceAvailable(t) {
23
23
  try {
24
- const t = document.createElement("canvas"), o = window.WebGL2RenderingContext && t.getContext("webgl2");
25
- return o.drawingBufferColorSpace = e, o.drawingBufferColorSpace === e;
24
+ const e = document.createElement("canvas"), o = window.WebGL2RenderingContext && e.getContext("webgl2");
25
+ return o.drawingBufferColorSpace = t, o.drawingBufferColorSpace === t;
26
26
  } catch {
27
27
  return !1;
28
28
  }
@@ -30,8 +30,8 @@ class Te {
30
30
  static getWebGL2ErrorMessage() {
31
31
  return this.getErrorMessage(2);
32
32
  }
33
- static getErrorMessage(e) {
34
- const t = {
33
+ static getErrorMessage(t) {
34
+ const e = {
35
35
  1: "WebGL",
36
36
  2: "WebGL 2"
37
37
  }, o = {
@@ -40,14 +40,14 @@ class Te {
40
40
  };
41
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>';
42
42
  const a = document.createElement("div");
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;
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[t] ? s = s.replace("$0", "graphics card") : s = s.replace("$0", "browser"), s = s.replace("$1", e[t]), a.innerHTML = s, a;
44
44
  }
45
45
  // @deprecated, r168
46
46
  static isWebGLAvailable() {
47
47
  console.warn("isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.");
48
48
  try {
49
- const e = document.createElement("canvas");
50
- return !!(window.WebGLRenderingContext && (e.getContext("webgl") || e.getContext("experimental-webgl")));
49
+ const t = document.createElement("canvas");
50
+ return !!(window.WebGLRenderingContext && (t.getContext("webgl") || t.getContext("experimental-webgl")));
51
51
  } catch {
52
52
  return !1;
53
53
  }
@@ -56,7 +56,7 @@ class Te {
56
56
  return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."), this.getErrorMessage(1);
57
57
  }
58
58
  }
59
- const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
59
+ const Z = Symbol("effectComposerPmndrs"), Yt = /* @__PURE__ */ c({
60
60
  __name: "EffectComposerPmndrs",
61
61
  props: {
62
62
  enabled: { type: Boolean, default: !0 },
@@ -66,109 +66,106 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
66
66
  resolutionScale: {},
67
67
  autoClear: { type: Boolean, default: !0 },
68
68
  multisampling: { default: 0 },
69
- frameBufferType: { default: T }
69
+ frameBufferType: { default: E }
70
70
  },
71
71
  emits: ["render"],
72
- setup(r, { expose: e, emit: t }) {
73
- const o = r, s = t, { scene: a, camera: i, renderer: n, sizes: l, render: f } = y(), h = W(null);
74
- let v = null, c = null;
75
- Be(se, h), e({ composer: h });
72
+ setup(i, { expose: t, emit: e }) {
73
+ const o = i, s = e, { scene: a, camera: r, renderer: n, sizes: u } = G(), l = U(null);
74
+ let d = null, x = null;
75
+ He(Z, l), t({ composer: l });
76
76
  const b = () => {
77
- h.value && (c = new Ye(a.value, i.value), c.enabled = !1, h.value.addPass(c), o.resolutionScale !== void 0 && Te.isWebGL2Available() && (v = new ke({
78
- normalBuffer: c.texture,
77
+ l.value && (x = new Ze(a.value, r.activeCamera.value), x.enabled = !1, l.value.addPass(x), o.resolutionScale !== void 0 && Fe.isWebGL2Available() && (d = new _e({
78
+ normalBuffer: x.texture,
79
79
  resolutionScale: o.resolutionScale
80
- }), v.enabled = !1, h.value.addPass(v)));
81
- }, E = L(() => {
82
- const g = new ne(), z = {
83
- depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : g.inputBuffer.depthBuffer,
84
- stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : g.inputBuffer.stencilBuffer,
85
- multisampling: Te.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : g.multisampling : 0,
86
- frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : T
80
+ }), d.enabled = !1, l.value.addPass(d)));
81
+ }, A = F(() => {
82
+ const p = new he(), w = {
83
+ depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : p.inputBuffer.depthBuffer,
84
+ stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : p.inputBuffer.stencilBuffer,
85
+ multisampling: Fe.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : p.multisampling : 0,
86
+ frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : E
87
87
  };
88
- return g.dispose(), z;
89
- }), re = () => {
90
- var g;
91
- !n.value && !a.value && !i.value || ((g = h.value) == null || g.dispose(), h.value = new ne(n.value, E.value), h.value.addPass(new Ve(a.value, i.value)), o.disableNormalPass || b());
88
+ return p.dispose(), w;
89
+ }), m = () => {
90
+ var p;
91
+ !n.instance && !a.value && !r.activeCamera.value || ((p = l.value) == null || p.dispose(), l.value = new he(n.instance, A.value), l.value.addPass(new Je(a.value, r.activeCamera.value)), o.disableNormalPass || b());
92
92
  };
93
- S([n, a, i, () => o.disableNormalPass], () => {
94
- !l.width.value || !l.height.value || re();
95
- }), S(() => [l.width.value, l.height.value], ([g, z]) => {
96
- !g && !z || (h.value ? h.value.setSize(g, z) : re());
93
+ return g([a, r.activeCamera, () => o.disableNormalPass], () => {
94
+ !u.width.value || !u.height.value || m();
95
+ }), g(() => [u.width.value, u.height.value], ([p, w]) => {
96
+ !p && !w || (l.value ? l.value.setSize(p, w) : m());
97
97
  }, {
98
98
  immediate: !0
99
- });
100
- const { render: je } = G();
101
- return je(() => {
102
- if (o.enabled && n.value && h.value && l.width.value && l.height.value && f.frames.value > 0) {
103
- const g = n.value.autoClear;
104
- n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), h.value.render(), s("render", h.value), n.value.autoClear = g;
99
+ }), n.replaceRenderFunction((p) => {
100
+ if (o.enabled && n.instance && l.value && u.width.value && u.height.value) {
101
+ const w = n.instance.autoClear;
102
+ n.instance.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.instance.clearStencil(), l.value.render(), s("render", l.value), n.instance.autoClear = w, p();
105
103
  }
106
- f.frames.value = f.mode.value === "always" ? 1 : Math.max(0, f.frames.value - 1);
107
- }), U(() => {
108
- var g;
109
- (g = h.value) == null || g.dispose();
110
- }), (g, z) => Ne(g.$slots, "default");
111
- }
112
- }), p = (r, e, t) => {
113
- const o = te(se), s = W(null), a = W(null), { scene: i, camera: n, invalidate: l } = y();
114
- S(e, () => l());
115
- const f = () => {
116
- var c, b, E;
117
- s.value && ((c = o == null ? void 0 : o.value) == null || c.removePass(s.value)), (b = a.value) == null || b.dispose(), (E = s.value) == null || E.dispose();
118
- }, h = (c) => {
119
- !n.value || !(o != null && o.value) || !i.value || (a.value = r(), s.value = new qe(n.value, a.value), o.value.addPass(s.value, c));
104
+ }), z(() => {
105
+ var p;
106
+ (p = l.value) == null || p.dispose();
107
+ }), (p, w) => Ie(p.$slots, "default");
108
+ }
109
+ }), h = (i, t, e) => {
110
+ const o = Q(Z), s = U(null), a = U(null), { scene: r, camera: n, invalidate: u } = C();
111
+ g(t, () => u());
112
+ const l = () => {
113
+ var b, A, m;
114
+ s.value && ((b = o == null ? void 0 : o.value) == null || b.removePass(s.value)), (A = a.value) == null || A.dispose(), (m = s.value) == null || m.dispose();
115
+ }, d = (b) => {
116
+ !n.value || !(o != null && o.value) || !r.value || (a.value = i(), s.value = new Xe(n.value, a.value), o.value.addPass(s.value, b));
120
117
  };
121
- t && S(
122
- () => t.map((c) => e[c]),
118
+ e && g(
119
+ () => e.map((b) => t[b]),
123
120
  () => {
124
- var b;
121
+ var A;
125
122
  if (!(o != null && o.value))
126
123
  return;
127
- const c = (b = o.value) == null ? void 0 : b.passes.findIndex((E) => E === s.value);
128
- ~c && (f(), h(c));
124
+ const b = (A = o.value) == null ? void 0 : A.passes.findIndex((m) => m === s.value);
125
+ ~b && (l(), d(b));
129
126
  }
130
- ), x(() => {
127
+ ), S(() => {
131
128
  !n.value || !(a != null && a.value) || (a.value.mainCamera = n.value);
132
129
  });
133
- const v = x(() => {
134
- !n.value || !(o != null && o.value) || !i.value || (oe(() => v()), !a.value && h());
130
+ const x = S(() => {
131
+ !n.value || !(o != null && o.value) || !r.value || (ue(() => x()), !a.value && d());
135
132
  });
136
- return U(() => {
137
- f();
133
+ return z(() => {
134
+ l();
138
135
  }), {
139
136
  pass: s,
140
137
  effect: a
141
138
  };
142
- }, Ge = /([^[.\]])+/g, bt = (r, e) => {
143
- if (!e)
139
+ }, ke = /([^[.\]])+/g, Tt = (i, t) => {
140
+ if (!t)
144
141
  return;
145
- const t = Array.isArray(e) ? e : e.match(Ge);
146
- return t == null ? void 0 : t.reduce((o, s) => o && o[s], r);
147
- }, Ce = (r, e, t) => {
148
- const o = Array.isArray(e) ? e : e.match(Ge);
149
- o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = t), s[a]), r);
150
- }, St = (r, e) => {
151
- const t = { ...r };
152
- return e.forEach((o) => delete t[o]), t;
153
- }, H = (r, e, t, o, s = {}) => S(r, (a) => {
154
- var i;
155
- if (e.value)
142
+ const e = Array.isArray(t) ? t : t.match(ke);
143
+ return e == null ? void 0 : e.reduce((o, s) => o && o[s], i);
144
+ }, Oe = (i, t, e) => {
145
+ const o = Array.isArray(t) ? t : t.match(ke);
146
+ o && o.reduce((s, a, r) => (s[a] === void 0 && (s[a] = {}), r === o.length - 1 && (s[a] = e), s[a]), i);
147
+ }, Ct = (i, t) => {
148
+ const e = { ...i };
149
+ return t.forEach((o) => delete e[o]), e;
150
+ }, H = (i, t, e, o, s = {}) => g(i, (a) => {
151
+ var r;
152
+ if (t.value)
156
153
  if (a === void 0) {
157
154
  const n = o();
158
- Ce(e.value, t, bt(n, t)), (i = n.dispose) == null || i.call(n);
155
+ Oe(t.value, e, Tt(n, e)), (r = n.dispose) == null || r.call(n);
159
156
  } else
160
- Ce(e.value, t, r());
161
- }, s), m = (r, e, t) => r.map(([o, s]) => H(
157
+ Oe(t.value, e, i());
158
+ }, s), v = (i, t, e) => i.map(([o, s]) => H(
162
159
  o,
163
- e,
160
+ t,
164
161
  s,
165
- t
166
- )), ae = (r, e, t) => Object.keys(r).map((o) => H(
167
- () => r[o],
168
- e,
162
+ e
163
+ )), de = (i, t, e) => Object.keys(i).map((o) => H(
164
+ () => i[o],
165
+ t,
169
166
  o,
170
- t
171
- )), Ht = /* @__PURE__ */ u({
167
+ e
168
+ )), kt = /* @__PURE__ */ c({
172
169
  __name: "BloomPmndrs",
173
170
  props: {
174
171
  blendFunction: {},
@@ -178,22 +175,22 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
178
175
  luminanceSmoothing: {},
179
176
  mipmapBlur: { type: Boolean, default: void 0 }
180
177
  },
181
- setup(r, { expose: e }) {
182
- const t = r, { pass: o, effect: s } = p(() => new le(t), t, ["mipmapBlur"]);
183
- return e({ pass: o, effect: s }), m(
178
+ setup(i, { expose: t }) {
179
+ const e = i, { pass: o, effect: s } = h(() => new pe(e), e, ["mipmapBlur"]);
180
+ return t({ pass: o, effect: s }), v(
184
181
  [
185
- [() => t.blendFunction, "blendMode.blendFunction"],
186
- [() => t.intensity, "intensity"],
187
- [() => t.kernelSize, "kernelSize"],
188
- [() => t.luminanceSmoothing, "luminanceMaterial.smoothing"],
189
- [() => t.luminanceThreshold, "luminanceMaterial.threshold"]
182
+ [() => e.blendFunction, "blendMode.blendFunction"],
183
+ [() => e.intensity, "intensity"],
184
+ [() => e.kernelSize, "kernelSize"],
185
+ [() => e.luminanceSmoothing, "luminanceMaterial.smoothing"],
186
+ [() => e.luminanceThreshold, "luminanceMaterial.threshold"]
190
187
  ],
191
188
  s,
192
- () => new le()
189
+ () => new pe()
193
190
  ), () => {
194
191
  };
195
192
  }
196
- }), Xt = /* @__PURE__ */ u({
193
+ }), qt = /* @__PURE__ */ c({
197
194
  __name: "DepthOfFieldPmndrs",
198
195
  props: {
199
196
  blendFunction: {},
@@ -206,26 +203,26 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
206
203
  resolutionX: {},
207
204
  resolutionY: {}
208
205
  },
209
- setup(r, { expose: e }) {
210
- const t = r, { camera: o } = y(), { pass: s, effect: a } = p(() => new ue(o.value, t), t);
211
- return e({ pass: s, effect: a }), m(
206
+ setup(i, { expose: t }) {
207
+ const e = i, { camera: o } = C(), { pass: s, effect: a } = h(() => new me(o.value, e), e);
208
+ return t({ pass: s, effect: a }), v(
212
209
  [
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"]
210
+ [() => e.blendFunction, "blendMode.blendFunction"],
211
+ [() => e.worldFocusDistance, "circleOfConfusionMaterial.worldFocusDistance"],
212
+ [() => e.focusDistance, "circleOfConfusionMaterial.focusDistance"],
213
+ [() => e.worldFocusRange, "circleOfConfusionMaterial.worldFocusRange"],
214
+ [() => e.focusRange, "circleOfConfusionMaterial.focusRange"],
215
+ [() => e.bokehScale, "bokehScale"],
216
+ [() => e.resolutionScale, "blurPass.resolution.scale"],
217
+ [() => e.resolutionX, "resolution.width"],
218
+ [() => e.resolutionY, "resolution.height"]
222
219
  ],
223
220
  a,
224
- () => new ue()
221
+ () => new me()
225
222
  ), () => {
226
223
  };
227
224
  }
228
- }), It = /* @__PURE__ */ u({
225
+ }), Qt = /* @__PURE__ */ c({
229
226
  __name: "GlitchPmndrs",
230
227
  props: {
231
228
  blendFunction: {},
@@ -240,51 +237,51 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
240
237
  perturbationMap: {},
241
238
  dtSize: {}
242
239
  },
243
- setup(r, { expose: e }) {
244
- const t = r, { pass: o, effect: s } = p(() => new X(t), t, ["dtSize"]);
245
- e({ pass: o, effect: s });
246
- const { onBeforeRender: a } = G();
247
- return a(({ invalidate: i }) => i()), x(() => {
248
- const i = () => {
249
- if (t.mode !== void 0)
250
- return t.active === !1 ? Qe.DISABLED : t.mode;
251
- const n = new X(), l = n.mode;
252
- return n.dispose(), l;
240
+ setup(i, { expose: t }) {
241
+ const e = i, { pass: o, effect: s } = h(() => new I(e), e, ["dtSize"]);
242
+ t({ pass: o, effect: s });
243
+ const { invalidate: a } = C(), { onBeforeRender: r } = ce();
244
+ return r(() => a()), S(() => {
245
+ const n = () => {
246
+ if (e.mode !== void 0)
247
+ return e.active === !1 ? $e.DISABLED : e.mode;
248
+ const u = new I(), l = u.mode;
249
+ return u.dispose(), l;
253
250
  };
254
- s.value && (s.value.mode = i());
251
+ s.value && (s.value.mode = n());
255
252
  }), H(
256
- () => t.blendFunction,
253
+ () => e.blendFunction,
257
254
  s,
258
255
  "blendMode.blendFunction",
259
- () => new X()
260
- ), ae(
261
- St(t, ["active", "blendFunction"]),
256
+ () => new I()
257
+ ), de(
258
+ Ct(e, ["active", "blendFunction"]),
262
259
  s,
263
- () => new X()
260
+ () => new I()
264
261
  ), () => {
265
262
  };
266
263
  }
267
- }), jt = /* @__PURE__ */ u({
264
+ }), Kt = /* @__PURE__ */ c({
268
265
  __name: "NoisePmndrs",
269
266
  props: {
270
267
  premultiply: { type: Boolean, default: void 0 },
271
268
  blendFunction: {}
272
269
  },
273
- setup(r, { expose: e }) {
274
- const t = r, { pass: o, effect: s } = p(() => new ce(t), t);
275
- e({ pass: o, effect: s });
276
- const { onBeforeRender: a } = G();
277
- return a(({ invalidate: i }) => i()), m(
270
+ setup(i, { expose: t }) {
271
+ const e = i, { pass: o, effect: s } = h(() => new ve(e), e);
272
+ t({ pass: o, effect: s });
273
+ const { invalidate: a } = C(), { onBeforeRender: r } = ce();
274
+ return r(() => a()), v(
278
275
  [
279
- [() => t.blendFunction, "blendMode.blendFunction"],
280
- [() => t.premultiply, "premultiply"]
276
+ [() => e.blendFunction, "blendMode.blendFunction"],
277
+ [() => e.premultiply, "premultiply"]
281
278
  ],
282
279
  s,
283
- () => new ce()
280
+ () => new ve()
284
281
  ), () => {
285
282
  };
286
283
  }
287
- }), Vt = /* @__PURE__ */ u({
284
+ }), Jt = /* @__PURE__ */ c({
288
285
  __name: "OutlinePmndrs",
289
286
  props: {
290
287
  outlinedObjects: {},
@@ -303,83 +300,83 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
303
300
  hiddenEdgeColor: {},
304
301
  visibleEdgeColor: {}
305
302
  },
306
- setup(r, { expose: e }) {
307
- const t = r, o = (f) => f !== void 0 ? $(f).getHex() : void 0, { camera: s, scene: a } = y(), { pass: i, effect: n } = p(
308
- () => new de(
303
+ setup(i, { expose: t }) {
304
+ const e = i, o = (l) => l !== void 0 ? ie(l).getHex() : void 0, { camera: s, scene: a } = C(), { pass: r, effect: n } = h(
305
+ () => new ge(
309
306
  a.value,
310
307
  s.value,
311
308
  {
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)
309
+ blur: e.blur,
310
+ xRay: e.xRay,
311
+ kernelSize: e.kernelSize,
312
+ pulseSpeed: e.pulseSpeed,
313
+ resolutionX: e.resolutionX,
314
+ resolutionY: e.resolutionY,
315
+ patternScale: e.patternScale,
316
+ edgeStrength: e.edgeStrength,
317
+ blendFunction: e.blendFunction,
318
+ multisampling: e.multisampling,
319
+ patternTexture: e.patternTexture,
320
+ resolutionScale: e.resolutionScale,
321
+ hiddenEdgeColor: o(e.hiddenEdgeColor),
322
+ visibleEdgeColor: o(e.visibleEdgeColor)
326
323
  // width and height are explicitly omitted, because they are deprecated in postprocessing's OutlineEffect
327
324
  }
328
325
  ),
329
- t
326
+ e
330
327
  );
331
- e({ pass: i, effect: n }), S(
332
- [() => t.outlinedObjects, n],
328
+ t({ pass: r, effect: n }), g(
329
+ [() => e.outlinedObjects, n],
333
330
  // watchEffect is intentionally not used here as it would result in an endless loop
334
331
  () => {
335
- var f;
336
- (f = n.value) == null || f.selection.set(t.outlinedObjects || []);
332
+ var l;
333
+ (l = n.value) == null || l.selection.set(e.outlinedObjects || []);
337
334
  },
338
335
  {
339
336
  immediate: !0
340
337
  }
341
338
  );
342
- const l = L(() => ({
343
- hiddenEdgeColor: t.hiddenEdgeColor ? $(t.hiddenEdgeColor) : void 0,
344
- visibleEdgeColor: t.visibleEdgeColor ? $(t.visibleEdgeColor) : void 0
339
+ const u = F(() => ({
340
+ hiddenEdgeColor: e.hiddenEdgeColor ? ie(e.hiddenEdgeColor) : void 0,
341
+ visibleEdgeColor: e.visibleEdgeColor ? ie(e.visibleEdgeColor) : void 0
345
342
  }));
346
- return m(
343
+ return v(
347
344
  [
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"]
345
+ [() => e.blendFunction, "blendMode.blendFunction"],
346
+ [() => e.blur, "blur"],
347
+ [() => e.xRay, "xRay"],
348
+ [() => e.pulseSpeed, "pulseSpeed"],
349
+ [() => e.kernelSize, "kernelSize"],
350
+ [() => e.edgeStrength, "edgeStrength"],
351
+ [() => e.patternScale, "patternScale"],
352
+ [() => e.multisampling, "multisampling"],
353
+ [() => e.resolutionX, "resolution.width"],
354
+ [() => e.resolutionY, "resolution.height"],
355
+ [() => e.patternTexture, "patternTexture"],
356
+ [() => e.resolutionScale, "resolution.scale"],
357
+ [() => u.value.hiddenEdgeColor, "hiddenEdgeColor"],
358
+ [() => u.value.visibleEdgeColor, "visibleEdgeColor"]
362
359
  ],
363
360
  n,
364
- () => new de()
361
+ () => new ge()
365
362
  ), () => {
366
363
  };
367
364
  }
368
- }), Yt = /* @__PURE__ */ u({
365
+ }), Zt = /* @__PURE__ */ c({
369
366
  __name: "PixelationPmndrs",
370
367
  props: {
371
368
  granularity: {}
372
369
  },
373
- setup(r, { expose: e }) {
374
- const t = r, { pass: o, effect: s } = p(() => new fe(t.granularity), t);
375
- return e({ pass: o, effect: s }), ae(
376
- t,
370
+ setup(i, { expose: t }) {
371
+ const e = i, { pass: o, effect: s } = h(() => new xe(e.granularity), e);
372
+ return t({ pass: o, effect: s }), de(
373
+ e,
377
374
  s,
378
- () => new fe()
375
+ () => new xe()
379
376
  ), () => {
380
377
  };
381
378
  }
382
- }), kt = /* @__PURE__ */ u({
379
+ }), _t = /* @__PURE__ */ c({
383
380
  __name: "VignettePmndrs",
384
381
  props: {
385
382
  technique: {},
@@ -387,22 +384,22 @@ const se = Symbol("effectComposerPmndrs"), Gt = /* @__PURE__ */ u({
387
384
  offset: {},
388
385
  darkness: {}
389
386
  },
390
- setup(r, { expose: e }) {
391
- const t = r, { pass: o, effect: s } = p(() => new he(t), t);
392
- return e({ pass: o, effect: s }), m(
387
+ setup(i, { expose: t }) {
388
+ const e = i, { pass: o, effect: s } = h(() => new be(e), e);
389
+ return t({ pass: o, effect: s }), v(
393
390
  [
394
- [() => t.blendFunction, "blendMode.blendFunction"],
395
- [() => t.offset, "offset"],
396
- [() => t.darkness, "darkness"],
397
- [() => t.technique, "technique"]
391
+ [() => e.blendFunction, "blendMode.blendFunction"],
392
+ [() => e.offset, "offset"],
393
+ [() => e.darkness, "darkness"],
394
+ [() => e.technique, "technique"]
398
395
  ],
399
396
  s,
400
- () => new he()
397
+ () => new be()
401
398
  ), () => {
402
399
  };
403
400
  }
404
401
  });
405
- class Ee extends q {
402
+ class Re extends K {
406
403
  /**
407
404
  * Creates a new BarrelBlurEffect instance.
408
405
  *
@@ -412,7 +409,7 @@ class Ee extends q {
412
409
  * @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.
413
410
  *
414
411
  */
415
- constructor({ blendFunction: e = Q.NORMAL, amount: t = 0.15, offset: o = new d(0.5, 0.5) } = {}) {
412
+ constructor({ blendFunction: t = J.NORMAL, amount: e = 0.15, offset: o = new f(0.5, 0.5) } = {}) {
416
413
  super("BarrelBlurEffect", `
417
414
  uniform float amount;
418
415
  uniform vec2 offset;
@@ -458,11 +455,11 @@ class Ee extends q {
458
455
  outputColor = vec4(outcol, inputColor.a); // Preserves original alpha
459
456
  }
460
457
  `, {
461
- blendFunction: e,
458
+ blendFunction: t,
462
459
  uniforms: /* @__PURE__ */ new Map([
463
- ["amount", new M(t)],
460
+ ["amount", new T(e)],
464
461
  // Uniform controlling the intensity of distortion
465
- ["offset", new M(o)]
462
+ ["offset", new T(o)]
466
463
  // Uniform controlling the offset of distortion
467
464
  ])
468
465
  });
@@ -473,11 +470,11 @@ class Ee extends q {
473
470
  * @type {number}
474
471
  */
475
472
  get amount() {
476
- var e;
477
- return (e = this.uniforms.get("amount")) == null ? void 0 : e.value;
473
+ var t;
474
+ return (t = this.uniforms.get("amount")) == null ? void 0 : t.value;
478
475
  }
479
- set amount(e) {
480
- this.uniforms.get("amount").value = e;
476
+ set amount(t) {
477
+ this.uniforms.get("amount").value = t;
481
478
  }
482
479
  /**
483
480
  * The offset.
@@ -485,40 +482,40 @@ class Ee extends q {
485
482
  * @type {Vector2}
486
483
  */
487
484
  get offset() {
488
- var e;
489
- return (e = this.uniforms.get("offset")) == null ? void 0 : e.value;
485
+ var t;
486
+ return (t = this.uniforms.get("offset")) == null ? void 0 : t.value;
490
487
  }
491
- set offset(e) {
492
- this.uniforms.get("offset").value = e;
488
+ set offset(t) {
489
+ this.uniforms.get("offset").value = t;
493
490
  }
494
491
  }
495
- const qt = /* @__PURE__ */ u({
492
+ const $t = /* @__PURE__ */ c({
496
493
  __name: "BarrelBlurPmndrs",
497
494
  props: {
498
495
  blendFunction: {},
499
496
  amount: {},
500
497
  offset: {}
501
498
  },
502
- setup(r, { expose: e }) {
503
- const t = r, { pass: o, effect: s } = p(
504
- () => new Ee({
505
- ...t,
506
- offset: Array.isArray(t.offset) ? new d(...t.offset) : t.offset
499
+ setup(i, { expose: t }) {
500
+ const e = i, { pass: o, effect: s } = h(
501
+ () => new Re({
502
+ ...e,
503
+ offset: Array.isArray(e.offset) ? new f(...e.offset) : e.offset
507
504
  }),
508
- t
505
+ e
509
506
  );
510
- return e({ pass: o, effect: s }), m(
507
+ return t({ pass: o, effect: s }), v(
511
508
  [
512
- [() => t.blendFunction, "blendMode.blendFunction"],
513
- [() => t.amount, "amount"],
514
- [() => t.offset, "offset"]
509
+ [() => e.blendFunction, "blendMode.blendFunction"],
510
+ [() => e.amount, "amount"],
511
+ [() => e.offset, "offset"]
515
512
  ],
516
513
  s,
517
- () => new Ee()
514
+ () => new Re()
518
515
  ), () => {
519
516
  };
520
517
  }
521
- }), Qt = /* @__PURE__ */ u({
518
+ }), eo = /* @__PURE__ */ c({
522
519
  __name: "ToneMappingPmndrs",
523
520
  props: {
524
521
  mode: {},
@@ -529,24 +526,24 @@ const qt = /* @__PURE__ */ u({
529
526
  minLuminance: {},
530
527
  whitePoint: {}
531
528
  },
532
- setup(r, { expose: e }) {
533
- const t = r, { pass: o, effect: s } = p(() => new pe(t), t);
534
- return e({ pass: o, effect: s }), m(
529
+ setup(i, { expose: t }) {
530
+ const e = i, { pass: o, effect: s } = h(() => new we(e), e);
531
+ return t({ pass: o, effect: s }), v(
535
532
  [
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"]
533
+ [() => e.mode, "mode"],
534
+ [() => e.blendFunction, "blendMode.blendFunction"],
535
+ [() => e.resolution, "resolution"],
536
+ [() => e.averageLuminance, "averageLuminance"],
537
+ [() => e.middleGrey, "middleGrey"],
538
+ [() => e.minLuminance, "adaptiveLuminanceMaterial.minLuminance"],
539
+ [() => e.whitePoint, "whitePoint"]
543
540
  ],
544
541
  s,
545
- () => new pe()
542
+ () => new we()
546
543
  ), () => {
547
544
  };
548
545
  }
549
- }), Kt = /* @__PURE__ */ u({
546
+ }), to = /* @__PURE__ */ c({
550
547
  __name: "ChromaticAberrationPmndrs",
551
548
  props: {
552
549
  blendFunction: {},
@@ -554,47 +551,47 @@ const qt = /* @__PURE__ */ u({
554
551
  radialModulation: { type: Boolean, default: void 0 },
555
552
  modulationOffset: {}
556
553
  },
557
- setup(r, { expose: e }) {
558
- const t = r, o = new K(), { pass: s, effect: a } = p(() => new K({
559
- ...t,
554
+ setup(i, { expose: t }) {
555
+ const e = i, o = new $(), { pass: s, effect: a } = h(() => new $({
556
+ ...e,
560
557
  // Unfortunately, these defaults must be set this way as the type in postprocessing is not correct.
561
558
  // The arguments are optional in the actual constructor, but not in the type.
562
- radialModulation: t.radialModulation ?? o.radialModulation,
563
- modulationOffset: t.modulationOffset ?? o.modulationOffset
564
- }), t);
565
- return o.dispose(), e({ pass: s, effect: a }), m(
559
+ radialModulation: e.radialModulation ?? o.radialModulation,
560
+ modulationOffset: e.modulationOffset ?? o.modulationOffset
561
+ }), e);
562
+ return o.dispose(), t({ pass: s, effect: a }), v(
566
563
  [
567
- [() => t.blendFunction, "blendMode.blendFunction"],
568
- [() => t.offset, "offset"],
569
- [() => t.radialModulation, "radialModulation"],
570
- [() => t.modulationOffset, "modulationOffset"]
564
+ [() => e.blendFunction, "blendMode.blendFunction"],
565
+ [() => e.offset, "offset"],
566
+ [() => e.radialModulation, "radialModulation"],
567
+ [() => e.modulationOffset, "modulationOffset"]
571
568
  ],
572
569
  a,
573
- () => new K()
570
+ () => new $()
574
571
  ), () => {
575
572
  };
576
573
  }
577
- }), Jt = /* @__PURE__ */ u({
574
+ }), oo = /* @__PURE__ */ c({
578
575
  __name: "HueSaturationPmndrs",
579
576
  props: {
580
577
  saturation: {},
581
578
  hue: {},
582
579
  blendFunction: {}
583
580
  },
584
- setup(r, { expose: e }) {
585
- const t = r, { pass: o, effect: s } = p(() => new me(t), t);
586
- return e({ pass: o, effect: s }), m(
581
+ setup(i, { expose: t }) {
582
+ const e = i, { pass: o, effect: s } = h(() => new Se(e), e);
583
+ return t({ pass: o, effect: s }), v(
587
584
  [
588
- [() => t.blendFunction, "blendMode.blendFunction"],
589
- [() => t.hue, "hue"],
590
- [() => t.saturation, "saturation"]
585
+ [() => e.blendFunction, "blendMode.blendFunction"],
586
+ [() => e.hue, "hue"],
587
+ [() => e.saturation, "saturation"]
591
588
  ],
592
589
  s,
593
- () => new me()
590
+ () => new Se()
594
591
  ), () => {
595
592
  };
596
593
  }
597
- }), Zt = /* @__PURE__ */ u({
594
+ }), so = /* @__PURE__ */ c({
598
595
  __name: "ScanlinePmndrs",
599
596
  props: {
600
597
  blendFunction: {},
@@ -602,25 +599,25 @@ const qt = /* @__PURE__ */ u({
602
599
  scrollSpeed: {},
603
600
  opacity: {}
604
601
  },
605
- setup(r, { expose: e }) {
606
- const t = r, { pass: o, effect: s } = p(() => new J(t), t);
607
- return e({ pass: o, effect: s }), m(
602
+ setup(i, { expose: t }) {
603
+ const e = i, { pass: o, effect: s } = h(() => new ee(e), e);
604
+ return t({ pass: o, effect: s }), v(
608
605
  [
609
- [() => t.blendFunction, "blendMode.blendFunction"],
610
- [() => t.density, "density"],
611
- [() => t.scrollSpeed, "scrollSpeed"]
606
+ [() => e.blendFunction, "blendMode.blendFunction"],
607
+ [() => e.density, "density"],
608
+ [() => e.scrollSpeed, "scrollSpeed"]
612
609
  ],
613
610
  s,
614
- () => new J()
615
- ), S(
616
- [() => t.opacity],
611
+ () => new ee()
612
+ ), g(
613
+ [() => e.opacity],
617
614
  () => {
618
- var a, i;
619
- if (t.opacity !== void 0)
620
- (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
615
+ var a, r;
616
+ if (e.opacity !== void 0)
617
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
621
618
  else {
622
- const n = new J();
623
- (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
619
+ const n = new ee();
620
+ (r = s.value) == null || r.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
624
621
  }
625
622
  },
626
623
  {
@@ -629,7 +626,7 @@ const qt = /* @__PURE__ */ u({
629
626
  ), () => {
630
627
  };
631
628
  }
632
- }), wt = `
629
+ }), Et = `
633
630
  uniform float radius;
634
631
  uniform int sectorCount;
635
632
 
@@ -726,7 +723,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
726
723
  outputColor = vec4(finalColor, inputColor.a);
727
724
  }
728
725
  `;
729
- class Pe extends q {
726
+ class Be extends K {
730
727
  /**
731
728
  * Creates a new KuwaharaEffect instance.
732
729
  *
@@ -736,12 +733,12 @@ class Pe extends q {
736
733
  * @param {number} [options.sectorCount] - Number of sectors.
737
734
  *
738
735
  */
739
- constructor({ blendFunction: e = Q.NORMAL, radius: t = 1, sectorCount: o = 4 } = {}) {
740
- super("KuwaharaEffect", wt, {
741
- blendFunction: e,
736
+ constructor({ blendFunction: t = J.NORMAL, radius: e = 1, sectorCount: o = 4 } = {}) {
737
+ super("KuwaharaEffect", Et, {
738
+ blendFunction: t,
742
739
  uniforms: /* @__PURE__ */ new Map([
743
- ["radius", new M(t)],
744
- ["sectorCount", new M(o)]
740
+ ["radius", new T(e)],
741
+ ["sectorCount", new T(o)]
745
742
  ])
746
743
  });
747
744
  }
@@ -751,11 +748,11 @@ class Pe extends q {
751
748
  * @type {number}
752
749
  */
753
750
  get radius() {
754
- var e;
755
- return (e = this.uniforms.get("radius")) == null ? void 0 : e.value;
751
+ var t;
752
+ return (t = this.uniforms.get("radius")) == null ? void 0 : t.value;
756
753
  }
757
- set radius(e) {
758
- this.uniforms.get("radius").value = e;
754
+ set radius(t) {
755
+ this.uniforms.get("radius").value = t;
759
756
  }
760
757
  /**
761
758
  * The sector count.
@@ -763,65 +760,65 @@ class Pe extends q {
763
760
  * @type {number}
764
761
  */
765
762
  get sectorCount() {
766
- var e;
767
- return (e = this.uniforms.get("sectorCount")) == null ? void 0 : e.value;
763
+ var t;
764
+ return (t = this.uniforms.get("sectorCount")) == null ? void 0 : t.value;
768
765
  }
769
- set sectorCount(e) {
770
- this.uniforms.get("sectorCount").value = e;
766
+ set sectorCount(t) {
767
+ this.uniforms.get("sectorCount").value = t;
771
768
  }
772
769
  }
773
- const _t = /* @__PURE__ */ u({
770
+ const ao = /* @__PURE__ */ c({
774
771
  __name: "KuwaharaPmndrs",
775
772
  props: {
776
773
  blendFunction: {},
777
774
  radius: {},
778
775
  sectorCount: {}
779
776
  },
780
- setup(r, { expose: e }) {
781
- const t = r, { pass: o, effect: s } = p(
782
- () => new Pe(t),
783
- t
777
+ setup(i, { expose: t }) {
778
+ const e = i, { pass: o, effect: s } = h(
779
+ () => new Be(e),
780
+ e
784
781
  );
785
- return e({ pass: o, effect: s }), m(
782
+ return t({ pass: o, effect: s }), v(
786
783
  [
787
- [() => t.blendFunction, "blendMode.blendFunction"],
788
- [() => t.radius, "radius"],
789
- [() => t.sectorCount, "sectorCount"]
784
+ [() => e.blendFunction, "blendMode.blendFunction"],
785
+ [() => e.radius, "radius"],
786
+ [() => e.sectorCount, "sectorCount"]
790
787
  ],
791
788
  s,
792
- () => new Pe()
789
+ () => new Be()
793
790
  ), () => {
794
791
  };
795
792
  }
796
- }), $t = /* @__PURE__ */ u({
793
+ }), ro = /* @__PURE__ */ c({
797
794
  __name: "ColorAveragePmndrs",
798
795
  props: {
799
796
  blendFunction: {},
800
797
  opacity: {}
801
798
  },
802
- setup(r, { expose: e }) {
803
- const t = r, { pass: o, effect: s } = p(() => new Z(t.blendFunction), t);
804
- return e({ pass: o, effect: s }), H(
805
- () => t.blendFunction,
799
+ setup(i, { expose: t }) {
800
+ const e = i, { pass: o, effect: s } = h(() => new te(e.blendFunction), e);
801
+ return t({ pass: o, effect: s }), H(
802
+ () => e.blendFunction,
806
803
  s,
807
804
  "blendMode.blendFunction",
808
- () => new Z()
809
- ), S(
810
- [s, () => t.opacity],
805
+ () => new te()
806
+ ), g(
807
+ [s, () => e.opacity],
811
808
  () => {
812
- var a, i;
809
+ var a, r;
813
810
  if (s.value)
814
- if (t.opacity !== void 0)
815
- (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
811
+ if (e.opacity !== void 0)
812
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
816
813
  else {
817
- const n = new Z();
818
- (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
814
+ const n = new te();
815
+ (r = s.value) == null || r.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
819
816
  }
820
817
  }
821
818
  ), () => {
822
819
  };
823
820
  }
824
- }), eo = /* @__PURE__ */ u({
821
+ }), io = /* @__PURE__ */ c({
825
822
  __name: "LensDistortionPmndrs",
826
823
  props: {
827
824
  distortion: {},
@@ -829,24 +826,24 @@ const _t = /* @__PURE__ */ u({
829
826
  focalLength: {},
830
827
  skew: {}
831
828
  },
832
- setup(r, { expose: e }) {
833
- const t = r, { pass: o, effect: s } = p(
834
- () => new ve({
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()
829
+ setup(i, { expose: t }) {
830
+ const e = i, { pass: o, effect: s } = h(
831
+ () => new Ae({
832
+ ...e,
833
+ distortion: e.distortion ? Array.isArray(e.distortion) ? new f(...e.distortion) : e.distortion : new f(),
834
+ principalPoint: e.principalPoint ? Array.isArray(e.principalPoint) ? new f(...e.principalPoint) : e.principalPoint : new f(),
835
+ focalLength: e.focalLength ? Array.isArray(e.focalLength) ? new f(...e.focalLength) : e.focalLength : new f()
839
836
  }),
840
- t
837
+ e
841
838
  );
842
- return e({ pass: o, effect: s }), ae(
843
- t,
839
+ return t({ pass: o, effect: s }), de(
840
+ e,
844
841
  s,
845
- () => new ve()
842
+ () => new Ae()
846
843
  ), () => {
847
844
  };
848
845
  }
849
- }), to = /* @__PURE__ */ u({
846
+ }), no = /* @__PURE__ */ c({
850
847
  __name: "ShockWavePmndrs",
851
848
  props: {
852
849
  position: {},
@@ -855,30 +852,30 @@ const _t = /* @__PURE__ */ u({
855
852
  maxRadius: {},
856
853
  waveSize: {}
857
854
  },
858
- setup(r, { expose: e }) {
859
- const t = r, { camera: o } = y(), { pass: s, effect: a } = p(
860
- () => new ge(o.value, Array.isArray(t.position) ? new O(...t.position) : t.position, t),
861
- t
855
+ setup(i, { expose: t }) {
856
+ const e = i, { camera: o } = C(), { pass: s, effect: a } = h(
857
+ () => new ye(o.value, Array.isArray(e.position) ? new O(...e.position) : e.position, e),
858
+ e
862
859
  );
863
- return e({ pass: s, effect: a }), S(
864
- () => t.position,
865
- (i) => {
866
- a.value && (Array.isArray(i) ? a.value.position.set(...i) : i instanceof O && a.value.position.copy(i));
860
+ return t({ pass: s, effect: a }), g(
861
+ () => e.position,
862
+ (r) => {
863
+ a.value && (Array.isArray(r) ? a.value.position.set(...r) : r instanceof O && a.value.position.copy(r));
867
864
  },
868
865
  { immediate: !0 }
869
- ), m(
866
+ ), v(
870
867
  [
871
- [() => t.amplitude, "amplitude"],
872
- [() => t.waveSize, "waveSize"],
873
- [() => t.maxRadius, "maxRadius"],
874
- [() => t.speed, "speed"]
868
+ [() => e.amplitude, "amplitude"],
869
+ [() => e.waveSize, "waveSize"],
870
+ [() => e.maxRadius, "maxRadius"],
871
+ [() => e.speed, "speed"]
875
872
  ],
876
873
  a,
877
- () => new ge()
874
+ () => new ye()
878
875
  ), () => {
879
876
  };
880
877
  }
881
- }), oo = /* @__PURE__ */ u({
878
+ }), lo = /* @__PURE__ */ c({
882
879
  __name: "TiltShiftPmndrs",
883
880
  props: {
884
881
  blendFunction: {},
@@ -891,73 +888,73 @@ const _t = /* @__PURE__ */ u({
891
888
  resolutionX: {},
892
889
  resolutionY: {}
893
890
  },
894
- setup(r, { expose: e }) {
895
- const t = r, { pass: o, effect: s } = p(() => new xe(t), t);
896
- return e({ pass: o, effect: s }), m(
891
+ setup(i, { expose: t }) {
892
+ const e = i, { pass: o, effect: s } = h(() => new Me(e), e);
893
+ return t({ pass: o, effect: s }), v(
897
894
  [
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"]
895
+ [() => e.blendFunction, "blendMode.blendFunction"],
896
+ [() => e.offset, "offset"],
897
+ [() => e.rotation, "rotation"],
898
+ [() => e.focusArea, "focusArea"],
899
+ [() => e.feather, "feather"],
900
+ [() => e.kernelSize, "kernelSize"],
901
+ [() => e.resolutionScale, "resolution.scale"],
902
+ [() => e.resolutionX, "resolution.width"],
903
+ [() => e.resolutionY, "resolution.height"]
907
904
  ],
908
905
  s,
909
- () => new xe()
906
+ () => new Me()
910
907
  ), () => {
911
908
  };
912
909
  }
913
- }), so = /* @__PURE__ */ u({
910
+ }), uo = /* @__PURE__ */ c({
914
911
  __name: "DotScreenPmndrs",
915
912
  props: {
916
913
  angle: {},
917
914
  scale: {},
918
915
  blendFunction: {}
919
916
  },
920
- setup(r, { expose: e }) {
921
- const t = r, { pass: o, effect: s } = p(() => new be(t), t);
922
- return e({ pass: o, effect: s }), m(
917
+ setup(i, { expose: t }) {
918
+ const e = i, { pass: o, effect: s } = h(() => new Te(e), e);
919
+ return t({ pass: o, effect: s }), v(
923
920
  [
924
- [() => t.blendFunction, "blendMode.blendFunction"],
925
- [() => t.angle, "angle"],
926
- [() => t.scale, "scale"]
921
+ [() => e.blendFunction, "blendMode.blendFunction"],
922
+ [() => e.angle, "angle"],
923
+ [() => e.scale, "scale"]
927
924
  ],
928
925
  s,
929
- () => new be()
926
+ () => new Te()
930
927
  ), () => {
931
928
  };
932
929
  }
933
- }), ao = /* @__PURE__ */ u({
930
+ }), co = /* @__PURE__ */ c({
934
931
  __name: "SepiaPmndrs",
935
932
  props: {
936
933
  blendFunction: {},
937
934
  intensity: {}
938
935
  },
939
- setup(r, { expose: e }) {
940
- const t = r, { pass: o, effect: s } = p(() => new Se(t), t);
941
- return e({ pass: o, effect: s }), m(
936
+ setup(i, { expose: t }) {
937
+ const e = i, { pass: o, effect: s } = h(() => new Ce(e), e);
938
+ return t({ pass: o, effect: s }), v(
942
939
  [
943
- [() => t.blendFunction, "blendMode.blendFunction"],
944
- [() => t.intensity, "intensity"]
940
+ [() => e.blendFunction, "blendMode.blendFunction"],
941
+ [() => e.intensity, "intensity"]
945
942
  ],
946
943
  s,
947
- () => new Se()
944
+ () => new Ce()
948
945
  ), () => {
949
946
  };
950
947
  }
951
948
  });
952
- class De extends q {
949
+ class Ne extends K {
953
950
  /**
954
951
  * Creates a new LinocutEffect instance.
955
952
  *
956
953
  * @param {LinocutPmndrsProps} [options] - Configuration options for the effect.
957
954
  *
958
955
  */
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;
956
+ constructor({ blendFunction: t = J.NORMAL, scale: e = 0.85, noiseScale: o = 0, center: s = [0.5, 0.5], rotation: a = 0 } = {}) {
957
+ const r = Array.isArray(s) ? new f().fromArray(s) : s;
961
958
  super("LinocutEffect", `
962
959
  uniform float scale;
963
960
  uniform float noiseScale;
@@ -1019,45 +1016,45 @@ class De extends q {
1019
1016
  outputColor = vec4(vec3(f), 1.0);
1020
1017
  }
1021
1018
  `, {
1022
- blendFunction: e,
1019
+ blendFunction: t,
1023
1020
  uniforms: /* @__PURE__ */ new Map([
1024
- ["scale", new M(t)],
1025
- ["noiseScale", new M(o)],
1026
- ["center", new M(i)],
1027
- ["rotation", new M(a)]
1021
+ ["scale", new T(e)],
1022
+ ["noiseScale", new T(o)],
1023
+ ["center", new T(r)],
1024
+ ["rotation", new T(a)]
1028
1025
  ])
1029
1026
  });
1030
1027
  }
1031
1028
  get scale() {
1032
- var e;
1033
- return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
1029
+ var t;
1030
+ return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1034
1031
  }
1035
- set scale(e) {
1036
- this.uniforms.get("scale").value = e;
1032
+ set scale(t) {
1033
+ this.uniforms.get("scale").value = t;
1037
1034
  }
1038
1035
  get noiseScale() {
1039
- var e;
1040
- return (e = this.uniforms.get("noiseScale")) == null ? void 0 : e.value;
1036
+ var t;
1037
+ return (t = this.uniforms.get("noiseScale")) == null ? void 0 : t.value;
1041
1038
  }
1042
- set noiseScale(e) {
1043
- this.uniforms.get("noiseScale").value = e;
1039
+ set noiseScale(t) {
1040
+ this.uniforms.get("noiseScale").value = t;
1044
1041
  }
1045
1042
  get center() {
1046
- var e;
1047
- return (e = this.uniforms.get("center")) == null ? void 0 : e.value;
1043
+ var t;
1044
+ return (t = this.uniforms.get("center")) == null ? void 0 : t.value;
1048
1045
  }
1049
- set center(e) {
1050
- this.uniforms.get("center").value = Array.isArray(e) ? new d().fromArray(e) : e;
1046
+ set center(t) {
1047
+ this.uniforms.get("center").value = Array.isArray(t) ? new f().fromArray(t) : t;
1051
1048
  }
1052
1049
  get rotation() {
1053
- var e;
1054
- return (e = this.uniforms.get("rotation")) == null ? void 0 : e.value;
1050
+ var t;
1051
+ return (t = this.uniforms.get("rotation")) == null ? void 0 : t.value;
1055
1052
  }
1056
- set rotation(e) {
1057
- this.uniforms.get("rotation").value = e;
1053
+ set rotation(t) {
1054
+ this.uniforms.get("rotation").value = t;
1058
1055
  }
1059
1056
  }
1060
- const ro = /* @__PURE__ */ u({
1057
+ const fo = /* @__PURE__ */ c({
1061
1058
  __name: "LinocutPmndrs",
1062
1059
  props: {
1063
1060
  blendFunction: {},
@@ -1066,44 +1063,44 @@ const ro = /* @__PURE__ */ u({
1066
1063
  center: {},
1067
1064
  rotation: {}
1068
1065
  },
1069
- setup(r, { expose: e }) {
1070
- const t = r, { pass: o, effect: s } = p(
1071
- () => new De({
1072
- ...t,
1073
- center: t.center instanceof d ? [t.center.x, t.center.y] : t.center
1066
+ setup(i, { expose: t }) {
1067
+ const e = i, { pass: o, effect: s } = h(
1068
+ () => new Ne({
1069
+ ...e,
1070
+ center: e.center instanceof f ? [e.center.x, e.center.y] : e.center
1074
1071
  }),
1075
- t
1072
+ e
1076
1073
  );
1077
- return e({ pass: o, effect: s }), m(
1074
+ return t({ pass: o, effect: s }), v(
1078
1075
  [
1079
- [() => t.blendFunction, "blendMode.blendFunction"],
1080
- [() => t.scale, "scale"],
1081
- [() => t.noiseScale, "noiseScale"],
1082
- [() => t.center, "center"],
1083
- [() => t.rotation, "rotation"]
1076
+ [() => e.blendFunction, "blendMode.blendFunction"],
1077
+ [() => e.scale, "scale"],
1078
+ [() => e.noiseScale, "noiseScale"],
1079
+ [() => e.center, "center"],
1080
+ [() => e.rotation, "rotation"]
1084
1081
  ],
1085
1082
  s,
1086
- () => new De()
1083
+ () => new Ne()
1087
1084
  ), () => {
1088
1085
  };
1089
1086
  }
1090
- }), io = /* @__PURE__ */ u({
1087
+ }), ho = /* @__PURE__ */ c({
1091
1088
  __name: "DepthPickingPassPmndrs",
1092
1089
  props: {
1093
1090
  depthPacking: {},
1094
1091
  mode: {}
1095
1092
  },
1096
- setup(r, { expose: e }) {
1097
- const t = r, o = te(se), s = new Ke(t), a = x(() => {
1098
- o != null && o.value && (oe(() => a()), o.value.addPass(s));
1093
+ setup(i, { expose: t }) {
1094
+ const e = i, o = Q(Z), s = new et(e), a = S(() => {
1095
+ o != null && o.value && (ue(() => a()), o.value.addPass(s));
1099
1096
  });
1100
- return U(() => {
1101
- var i;
1102
- !(o != null && o.value) || !s || ((i = o == null ? void 0 : o.value) == null || i.removePass(s), s.dispose());
1103
- }), e({ pass: s }), () => {
1097
+ return z(() => {
1098
+ var r;
1099
+ !(o != null && o.value) || !s || ((r = o == null ? void 0 : o.value) == null || r.removePass(s), s.dispose());
1100
+ }), t({ pass: s }), () => {
1104
1101
  };
1105
1102
  }
1106
- }), no = /* @__PURE__ */ u({
1103
+ }), po = /* @__PURE__ */ c({
1107
1104
  __name: "GodRaysPmndrs",
1108
1105
  props: {
1109
1106
  blendFunction: {},
@@ -1121,51 +1118,51 @@ const ro = /* @__PURE__ */ u({
1121
1118
  samples: {},
1122
1119
  clampMax: {}
1123
1120
  },
1124
- setup(r, { expose: e }) {
1125
- const t = r, { camera: o } = y(), s = L(
1126
- () => t.lightSource ?? new ze(
1127
- new Je(1e-5),
1128
- new We({ visible: !1 })
1121
+ setup(i, { expose: t }) {
1122
+ const e = i, { camera: o } = C(), s = F(
1123
+ () => e.lightSource ?? new je(
1124
+ new ot(1e-5),
1125
+ new Ve({ visible: !1 })
1129
1126
  )
1130
- ), { pass: a, effect: i } = p(
1131
- () => new _(o.value, s.value, t),
1132
- t
1127
+ ), { pass: a, effect: r } = h(
1128
+ () => new oe(o.value, s.value, e),
1129
+ e
1133
1130
  );
1134
- return e({ pass: a, effect: i }), m(
1131
+ return t({ pass: a, effect: r }), v(
1135
1132
  [
1136
- [() => t.blendFunction, "blendMode.blendFunction"],
1137
- [() => t.density, "godRaysMaterial.density"],
1138
- [() => t.decay, "godRaysMaterial.decay"],
1139
- [() => t.weight, "godRaysMaterial.weight"],
1140
- [() => t.exposure, "godRaysMaterial.exposure"],
1141
- [() => t.samples, "godRaysMaterial.samples"],
1142
- [() => t.clampMax, "godRaysMaterial.maxIntensity"],
1143
- [() => t.resolutionScale, "resolution.scale"],
1144
- [() => t.resolutionX, "resolution.width"],
1145
- [() => t.resolutionY, "resolution.height"],
1146
- [() => t.kernelSize, "blurPass.kernelSize"],
1147
- [() => t.blur, "blurPass.enabled"]
1133
+ [() => e.blendFunction, "blendMode.blendFunction"],
1134
+ [() => e.density, "godRaysMaterial.density"],
1135
+ [() => e.decay, "godRaysMaterial.decay"],
1136
+ [() => e.weight, "godRaysMaterial.weight"],
1137
+ [() => e.exposure, "godRaysMaterial.exposure"],
1138
+ [() => e.samples, "godRaysMaterial.samples"],
1139
+ [() => e.clampMax, "godRaysMaterial.maxIntensity"],
1140
+ [() => e.resolutionScale, "resolution.scale"],
1141
+ [() => e.resolutionX, "resolution.width"],
1142
+ [() => e.resolutionY, "resolution.height"],
1143
+ [() => e.kernelSize, "blurPass.kernelSize"],
1144
+ [() => e.blur, "blurPass.enabled"]
1148
1145
  ],
1149
- i,
1150
- () => new _()
1151
- ), S(
1152
- [() => t.lightSource, i],
1146
+ r,
1147
+ () => new oe()
1148
+ ), g(
1149
+ [() => e.lightSource, r],
1153
1150
  () => {
1154
- i.value && (i.value.lightSource = ie(s.value));
1151
+ r.value && (r.value.lightSource = fe(s.value));
1155
1152
  },
1156
1153
  { immediate: !0 }
1157
- ), S(
1158
- [() => t.opacity],
1154
+ ), g(
1155
+ [() => e.opacity],
1159
1156
  () => {
1160
- var n, l;
1161
- if (t.opacity !== void 0)
1162
- (n = i.value) == null || n.blendMode.setOpacity(t.opacity);
1157
+ var n, u;
1158
+ if (e.opacity !== void 0)
1159
+ (n = r.value) == null || n.blendMode.setOpacity(e.opacity);
1163
1160
  else {
1164
- const f = new _(
1161
+ const l = new oe(
1165
1162
  o.value,
1166
- ie(s.value)
1163
+ fe(s.value)
1167
1164
  );
1168
- (l = i.value) == null || l.blendMode.setOpacity(f.blendMode.getOpacity()), f.dispose();
1165
+ (u = r.value) == null || u.blendMode.setOpacity(l.blendMode.getOpacity()), l.dispose();
1169
1166
  }
1170
1167
  },
1171
1168
  {
@@ -1174,69 +1171,69 @@ const ro = /* @__PURE__ */ u({
1174
1171
  ), () => {
1175
1172
  };
1176
1173
  }
1177
- }), lo = /* @__PURE__ */ u({
1174
+ }), mo = /* @__PURE__ */ c({
1178
1175
  __name: "ColorDepthPmndrs",
1179
1176
  props: {
1180
1177
  blendFunction: {},
1181
1178
  bits: {},
1182
1179
  opacity: {}
1183
1180
  },
1184
- setup(r, { expose: e }) {
1185
- const t = r, { pass: o, effect: s } = p(() => new I(t), t);
1186
- return e({ pass: o, effect: s }), H(
1187
- () => t.blendFunction,
1181
+ setup(i, { expose: t }) {
1182
+ const e = i, { pass: o, effect: s } = h(() => new X(e), e);
1183
+ return t({ pass: o, effect: s }), H(
1184
+ () => e.blendFunction,
1188
1185
  s,
1189
1186
  "blendMode.blendFunction",
1190
- () => new I()
1191
- ), S(
1192
- [s, () => t.bits],
1187
+ () => new X()
1188
+ ), g(
1189
+ [s, () => e.bits],
1193
1190
  () => {
1194
- var a, i;
1191
+ var a, r;
1195
1192
  if (s.value)
1196
- if (t.bits !== void 0)
1197
- (a = s.value) == null || a.setBitDepth(t.bits);
1193
+ if (e.bits !== void 0)
1194
+ (a = s.value) == null || a.setBitDepth(e.bits);
1198
1195
  else {
1199
- const n = new I();
1200
- (i = s.value) == null || i.setBitDepth(n.getBitDepth()), n.dispose();
1196
+ const n = new X();
1197
+ (r = s.value) == null || r.setBitDepth(n.getBitDepth()), n.dispose();
1201
1198
  }
1202
1199
  }
1203
- ), S(
1204
- [s, () => t.opacity],
1200
+ ), g(
1201
+ [s, () => e.opacity],
1205
1202
  () => {
1206
- var a, i;
1203
+ var a, r;
1207
1204
  if (s.value)
1208
- if (t.opacity !== void 0)
1209
- (a = s.value) == null || a.blendMode.setOpacity(t.opacity);
1205
+ if (e.opacity !== void 0)
1206
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1210
1207
  else {
1211
- const n = new I();
1212
- (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1208
+ const n = new X();
1209
+ (r = s.value) == null || r.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1213
1210
  }
1214
1211
  }
1215
1212
  ), () => {
1216
1213
  };
1217
1214
  }
1218
- }), uo = /* @__PURE__ */ u({
1215
+ }), vo = /* @__PURE__ */ c({
1219
1216
  __name: "GridPmndrs",
1220
1217
  props: {
1221
1218
  blendFunction: {},
1222
1219
  scale: {},
1223
1220
  lineWidth: {}
1224
1221
  },
1225
- setup(r, { expose: e }) {
1226
- const t = r, { pass: o, effect: s } = p(() => new we(t), t);
1227
- return e({ pass: o, effect: s }), m(
1222
+ setup(i, { expose: t }) {
1223
+ const e = i, { pass: o, effect: s } = h(() => new Ee(e), e);
1224
+ return t({ pass: o, effect: s }), v(
1228
1225
  [
1229
- [() => t.blendFunction, "blendMode.blendFunction"],
1230
- [() => t.scale, "scale"],
1231
- [() => t.lineWidth, "lineWidth"]
1226
+ [() => e.blendFunction, "blendMode.blendFunction"],
1227
+ [() => e.scale, "scale"],
1228
+ [() => e.lineWidth, "lineWidth"]
1232
1229
  ],
1233
1230
  s,
1234
- () => new we()
1231
+ () => new Ee()
1235
1232
  ), () => {
1236
1233
  };
1237
1234
  }
1238
1235
  });
1239
- class Le extends q {
1236
+ class ze extends K {
1240
1237
  /**
1241
1238
  * Creates a new FishEyeEffect instance.
1242
1239
  *
@@ -1247,7 +1244,7 @@ class Le extends q {
1247
1244
  * @param {number} [options.scale] - Scale.
1248
1245
  *
1249
1246
  */
1250
- constructor({ blendFunction: e = Q.NORMAL, lensS: t = new d(1, 1), lensF: o = new d(0, 1), scale: s = 1 } = {}) {
1247
+ constructor({ blendFunction: t = J.NORMAL, lensS: e = new f(1, 1), lensF: o = new f(0, 1), scale: s = 1 } = {}) {
1251
1248
  super("FishEyeEffect", `
1252
1249
  uniform vec2 lensS;
1253
1250
  uniform vec2 lensF;
@@ -1267,11 +1264,11 @@ class Le extends q {
1267
1264
  outputColor = vec4(inputColor.rgb, inputColor.a); // Preserves original alpha
1268
1265
  }
1269
1266
  `, {
1270
- blendFunction: e,
1267
+ blendFunction: t,
1271
1268
  uniforms: /* @__PURE__ */ new Map([
1272
- ["lensS", new M(t)],
1273
- ["lensF", new M(o)],
1274
- ["scale", new M(s)]
1269
+ ["lensS", new T(e)],
1270
+ ["lensF", new T(o)],
1271
+ ["scale", new T(s)]
1275
1272
  ])
1276
1273
  });
1277
1274
  }
@@ -1281,11 +1278,11 @@ class Le extends q {
1281
1278
  * @type {Vector2}
1282
1279
  */
1283
1280
  get lensS() {
1284
- var e;
1285
- return (e = this.uniforms.get("lensS")) == null ? void 0 : e.value;
1281
+ var t;
1282
+ return (t = this.uniforms.get("lensS")) == null ? void 0 : t.value;
1286
1283
  }
1287
- set lensS(e) {
1288
- this.uniforms.get("lensS").value = e;
1284
+ set lensS(t) {
1285
+ this.uniforms.get("lensS").value = t;
1289
1286
  }
1290
1287
  /**
1291
1288
  * The lensF.
@@ -1293,11 +1290,11 @@ class Le extends q {
1293
1290
  * @type {Vector2}
1294
1291
  */
1295
1292
  get lensF() {
1296
- var e;
1297
- return (e = this.uniforms.get("lensF")) == null ? void 0 : e.value;
1293
+ var t;
1294
+ return (t = this.uniforms.get("lensF")) == null ? void 0 : t.value;
1298
1295
  }
1299
- set lensF(e) {
1300
- this.uniforms.get("lensF").value = e;
1296
+ set lensF(t) {
1297
+ this.uniforms.get("lensF").value = t;
1301
1298
  }
1302
1299
  /**
1303
1300
  * The scale.
@@ -1305,14 +1302,14 @@ class Le extends q {
1305
1302
  * @type {number}
1306
1303
  */
1307
1304
  get scale() {
1308
- var e;
1309
- return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
1305
+ var t;
1306
+ return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1310
1307
  }
1311
- set scale(e) {
1312
- this.uniforms.get("scale").value = e;
1308
+ set scale(t) {
1309
+ this.uniforms.get("scale").value = t;
1313
1310
  }
1314
1311
  }
1315
- const co = /* @__PURE__ */ u({
1312
+ const go = /* @__PURE__ */ c({
1316
1313
  __name: "FishEyePmndrs",
1317
1314
  props: {
1318
1315
  blendFunction: {},
@@ -1320,52 +1317,247 @@ const co = /* @__PURE__ */ u({
1320
1317
  lensF: {},
1321
1318
  scale: {}
1322
1319
  },
1323
- setup(r, { expose: e }) {
1324
- const t = r, o = L(
1325
- () => Array.isArray(t.lensS) ? new d(...t.lensS) : t.lensS
1326
- ), s = L(
1327
- () => Array.isArray(t.lensF) ? new d(...t.lensF) : t.lensF
1328
- ), { pass: a, effect: i } = p(
1329
- () => new Le({
1330
- ...t,
1320
+ setup(i, { expose: t }) {
1321
+ const e = i, o = F(
1322
+ () => Array.isArray(e.lensS) ? new f(...e.lensS) : e.lensS
1323
+ ), s = F(
1324
+ () => Array.isArray(e.lensF) ? new f(...e.lensF) : e.lensF
1325
+ ), { pass: a, effect: r } = h(
1326
+ () => new ze({
1327
+ ...e,
1331
1328
  lensS: o.value,
1332
1329
  lensF: s.value
1333
1330
  }),
1334
- t
1331
+ e
1335
1332
  );
1336
- return e({ pass: a, effect: i }), m(
1333
+ return t({ pass: a, effect: r }), v(
1337
1334
  [
1338
- [() => t.blendFunction, "blendMode.blendFunction"],
1335
+ [() => e.blendFunction, "blendMode.blendFunction"],
1339
1336
  [() => o.value, "lensS"],
1340
1337
  [() => s.value, "lensF"],
1341
- [() => t.scale, "scale"]
1338
+ [() => e.scale, "scale"]
1342
1339
  ],
1343
- i,
1344
- () => new Le()
1340
+ r,
1341
+ () => new ze()
1345
1342
  ), () => {
1346
1343
  };
1347
1344
  }
1348
- }), fo = /* @__PURE__ */ u({
1345
+ }), xo = /* @__PURE__ */ c({
1349
1346
  __name: "BrightnessContrastPmndrs",
1350
1347
  props: {
1351
1348
  blendFunction: {},
1352
1349
  brightness: {},
1353
1350
  contrast: {}
1354
1351
  },
1355
- setup(r, { expose: e }) {
1356
- const t = r, { pass: o, effect: s } = p(() => new Ae(t), t);
1357
- return e({ pass: o, effect: s }), m(
1352
+ setup(i, { expose: t }) {
1353
+ const e = i, { pass: o, effect: s } = h(() => new Pe(e), e);
1354
+ return t({ pass: o, effect: s }), v(
1358
1355
  [
1359
- [() => t.blendFunction, "blendMode.blendFunction"],
1360
- [() => t.brightness, "brightness"],
1361
- [() => t.contrast, "contrast"]
1356
+ [() => e.blendFunction, "blendMode.blendFunction"],
1357
+ [() => e.brightness, "brightness"],
1358
+ [() => e.contrast, "contrast"]
1362
1359
  ],
1363
1360
  s,
1364
- () => new Ae()
1361
+ () => new Pe()
1362
+ ), () => {
1363
+ };
1364
+ }
1365
+ }), ne = {
1366
+ OFF: 0,
1367
+ EDGES: 1,
1368
+ WEIGHTS: 2
1369
+ }, bo = /* @__PURE__ */ c({
1370
+ __name: "SMAAPmndrs",
1371
+ props: {
1372
+ blendFunction: {},
1373
+ opacity: {},
1374
+ preset: {},
1375
+ edgeDetectionMode: {},
1376
+ predicationMode: {},
1377
+ debug: {}
1378
+ },
1379
+ setup(i, { expose: t }) {
1380
+ const e = i, { pass: o, effect: s } = h(() => new se(e), e), { camera: a } = C(), r = Q(Z);
1381
+ t({ pass: o, effect: s });
1382
+ const n = new se();
1383
+ v(
1384
+ [
1385
+ [() => Number(e.blendFunction), "blendMode.blendFunction"],
1386
+ [() => Number(e.predicationMode), "edgeDetectionMaterial.predicationMode"],
1387
+ [() => Number(e.edgeDetectionMode), "edgeDetectionMaterial.edgeDetectionMode"]
1388
+ ],
1389
+ s,
1390
+ () => new se()
1391
+ ), g(
1392
+ [s, () => e.opacity],
1393
+ () => {
1394
+ s.value && (e.opacity !== void 0 ? s.value.blendMode.setOpacity(e.opacity) : s.value.blendMode.setOpacity(n.blendMode.getOpacity()));
1395
+ },
1396
+ { immediate: !0 }
1397
+ ), g(
1398
+ [s, () => e.preset],
1399
+ () => {
1400
+ s.value && s.value.applyPreset(Number(e.preset));
1401
+ }
1402
+ );
1403
+ let u = null, l = null;
1404
+ const d = (m) => {
1405
+ if (!s.value)
1406
+ return null;
1407
+ const p = m === "edges" ? s.value.edgesTexture : s.value.weightsTexture, w = new Xe(a.value, s.value, new Y({ texture: p }));
1408
+ return w.renderToScreen = !1, w.enabled = !1, w.fullscreenMaterial.encodeOutput = !1, w;
1409
+ }, x = (m) => {
1410
+ m === "edges" && !u ? u = d("edges") : m === "weights" && !l && (l = d("weights"));
1411
+ }, b = (m, p) => {
1412
+ !m || !(r != null && r.value) || m.enabled !== p && (m.enabled = p, m.renderToScreen = p, p && !(r != null && r.value.passes.includes(m)) ? r == null || r.value.addPass(m) : !p && (r != null && r.value.passes.includes(m)) && (r == null || r.value.removePass(m), m.dispose()));
1413
+ }, A = (m) => {
1414
+ if (!o.value)
1415
+ return;
1416
+ const p = m === ne.OFF, w = m === ne.EDGES, _ = m === ne.WEIGHTS;
1417
+ o.value.enabled = p, o.value.renderToScreen = p, w && x("edges"), _ && x("weights"), b(u, w), b(l, _), w || (u = null), _ || (l = null);
1418
+ };
1419
+ return g(
1420
+ () => e.debug,
1421
+ () => {
1422
+ !o.value || e.debug === void 0 || A(e.debug);
1423
+ },
1424
+ { immediate: !0 }
1425
+ ), () => {
1426
+ };
1427
+ }
1428
+ }), wo = /* @__PURE__ */ c({
1429
+ __name: "FXAAPmndrs",
1430
+ props: {
1431
+ blendFunction: {},
1432
+ opacity: {},
1433
+ samples: {},
1434
+ minEdgeThreshold: {},
1435
+ maxEdgeThreshold: {},
1436
+ subpixelQuality: {}
1437
+ },
1438
+ setup(i, { expose: t }) {
1439
+ const e = i, { pass: o, effect: s } = h(() => new ae(e), e);
1440
+ return t({ pass: o, effect: s }), v(
1441
+ [
1442
+ [() => e.blendFunction, "blendMode.blendFunction"],
1443
+ [() => e.samples, "samples"],
1444
+ [() => e.minEdgeThreshold, "minEdgeThreshold"],
1445
+ [() => e.maxEdgeThreshold, "maxEdgeThreshold"],
1446
+ [() => e.subpixelQuality, "subpixelQuality"]
1447
+ ],
1448
+ s,
1449
+ () => new ae()
1450
+ ), g(
1451
+ [s, () => e.opacity],
1452
+ () => {
1453
+ var a, r;
1454
+ if (s.value)
1455
+ if (e.opacity !== void 0)
1456
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1457
+ else {
1458
+ const n = new ae();
1459
+ (r = s.value) == null || r.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1460
+ }
1461
+ },
1462
+ { immediate: !0 }
1463
+ ), () => {
1464
+ };
1465
+ }
1466
+ }), So = /* @__PURE__ */ c({
1467
+ __name: "TexturePmndrs",
1468
+ props: {
1469
+ blendFunction: {},
1470
+ texture: {},
1471
+ opacity: {}
1472
+ },
1473
+ setup(i, { expose: t }) {
1474
+ const e = i, { pass: o, effect: s } = h(() => new Y(e), e);
1475
+ return t({
1476
+ pass: o,
1477
+ effect: s
1478
+ }), v(
1479
+ [
1480
+ [() => e.blendFunction, "blendMode.blendFunction"]
1481
+ ],
1482
+ s,
1483
+ () => new Y()
1484
+ ), g(
1485
+ [() => e.opacity],
1486
+ () => {
1487
+ var a, r;
1488
+ if (e.opacity !== void 0)
1489
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1490
+ else {
1491
+ const n = new Y();
1492
+ (r = s.value) == null || r.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1493
+ }
1494
+ },
1495
+ {
1496
+ immediate: !0
1497
+ }
1365
1498
  ), () => {
1366
1499
  };
1367
1500
  }
1368
- }), He = {
1501
+ }), Ao = /* @__PURE__ */ c({
1502
+ __name: "ASCIIPmndrs",
1503
+ props: {
1504
+ blendFunction: {},
1505
+ opacity: {},
1506
+ cellSize: {},
1507
+ inverted: { type: Boolean },
1508
+ color: {},
1509
+ useSceneColor: { type: Boolean },
1510
+ asciiTexture: {}
1511
+ },
1512
+ setup(i, { expose: t }) {
1513
+ const e = i, o = new re(), { asciiTexture: s, ...a } = e, { pass: r, effect: n } = h(() => new re(a), e);
1514
+ return t({ pass: r, effect: n }), z(() => {
1515
+ o.dispose();
1516
+ }), v(
1517
+ [
1518
+ [() => e.blendFunction, "blendMode.blendFunction"],
1519
+ [() => e.cellSize, "cellSize"],
1520
+ [() => e.inverted, "inverted"]
1521
+ ],
1522
+ n,
1523
+ () => new re()
1524
+ ), g(
1525
+ [n, () => e.useSceneColor],
1526
+ () => {
1527
+ n.value && (e.useSceneColor ? n.value.color = null : n.value.color = e.color ?? o.color);
1528
+ },
1529
+ { immediate: !0 }
1530
+ ), g(
1531
+ [n, () => e.opacity],
1532
+ () => {
1533
+ n.value && n.value.blendMode.setOpacity(e.opacity ?? o.blendMode.getOpacity());
1534
+ },
1535
+ { immediate: !0 }
1536
+ ), g(
1537
+ [n, () => e.color],
1538
+ () => {
1539
+ n.value && (e.useSceneColor || (n.value.color = e.color ?? null));
1540
+ },
1541
+ { immediate: !0 }
1542
+ ), g(
1543
+ [n, () => e.asciiTexture],
1544
+ () => {
1545
+ if (!n.value)
1546
+ return;
1547
+ const u = e.asciiTexture ? new tt(e.asciiTexture) : o.asciiTexture;
1548
+ n.value.asciiTexture = u;
1549
+ },
1550
+ { immediate: !0 }
1551
+ ), g(
1552
+ [n, () => e.blendFunction],
1553
+ () => {
1554
+ n.value && (n.value.blendMode.blendFunction = e.blendFunction ? Number(e.blendFunction) : Number(o.blendMode.blendFunction));
1555
+ },
1556
+ { immediate: !0 }
1557
+ ), () => {
1558
+ };
1559
+ }
1560
+ }), qe = {
1369
1561
  name: "CopyShader",
1370
1562
  uniforms: {
1371
1563
  tDiffuse: { value: null },
@@ -1403,7 +1595,7 @@ const co = /* @__PURE__ */ u({
1403
1595
  }`
1404
1596
  )
1405
1597
  };
1406
- class C {
1598
+ class P {
1407
1599
  constructor() {
1408
1600
  this.isPass = !0, this.enabled = !0, this.needsSwap = !0, this.clear = !1, this.renderToScreen = !1;
1409
1601
  }
@@ -1415,202 +1607,200 @@ class C {
1415
1607
  dispose() {
1416
1608
  }
1417
1609
  }
1418
- const At = new Ze(-1, 1, 1, -1, 0, 1);
1419
- class yt extends _e {
1610
+ const Pt = new st(-1, 1, 1, -1, 0, 1);
1611
+ class Dt extends at {
1420
1612
  constructor() {
1421
- super(), this.setAttribute("position", new ye([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new ye([0, 2, 0, 0, 2, 0], 2));
1613
+ super(), this.setAttribute("position", new De([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new De([0, 2, 0, 0, 2, 0], 2));
1422
1614
  }
1423
1615
  }
1424
- const Mt = new yt();
1616
+ const Lt = new Dt();
1425
1617
  class R {
1426
- constructor(e) {
1427
- this._mesh = new ze(Mt, e);
1618
+ constructor(t) {
1619
+ this._mesh = new je(Lt, t);
1428
1620
  }
1429
1621
  dispose() {
1430
1622
  this._mesh.geometry.dispose();
1431
1623
  }
1432
- render(e) {
1433
- e.render(this._mesh, At);
1624
+ render(t) {
1625
+ t.render(this._mesh, Pt);
1434
1626
  }
1435
1627
  get material() {
1436
1628
  return this._mesh.material;
1437
1629
  }
1438
- set material(e) {
1439
- this._mesh.material = e;
1630
+ set material(t) {
1631
+ this._mesh.material = t;
1440
1632
  }
1441
1633
  }
1442
- class Tt extends C {
1443
- constructor(e, t) {
1444
- super(), this.textureID = t !== void 0 ? t : "tDiffuse", e instanceof A ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = P.clone(e.uniforms), this.material = new A({
1445
- name: e.name !== void 0 ? e.name : "unspecified",
1446
- defines: Object.assign({}, e.defines),
1634
+ class Ft extends P {
1635
+ constructor(t, e) {
1636
+ super(), this.textureID = e !== void 0 ? e : "tDiffuse", t instanceof M ? (this.uniforms = t.uniforms, this.material = t) : t && (this.uniforms = D.clone(t.uniforms), this.material = new M({
1637
+ name: t.name !== void 0 ? t.name : "unspecified",
1638
+ defines: Object.assign({}, t.defines),
1447
1639
  uniforms: this.uniforms,
1448
- vertexShader: e.vertexShader,
1449
- fragmentShader: e.fragmentShader
1640
+ vertexShader: t.vertexShader,
1641
+ fragmentShader: t.fragmentShader
1450
1642
  })), this.fsQuad = new R(this.material);
1451
1643
  }
1452
- render(e, t, o) {
1453
- this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = o.texture), this.fsQuad.material = this.material, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), this.fsQuad.render(e));
1644
+ render(t, e, o) {
1645
+ 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));
1454
1646
  }
1455
1647
  dispose() {
1456
1648
  this.material.dispose(), this.fsQuad.dispose();
1457
1649
  }
1458
1650
  }
1459
- class Oe extends C {
1460
- constructor(e, t) {
1461
- super(), this.scene = e, this.camera = t, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1651
+ class We extends P {
1652
+ constructor(t, e) {
1653
+ super(), this.scene = t, this.camera = e, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1462
1654
  }
1463
- render(e, t, o) {
1464
- const s = e.getContext(), a = e.state;
1655
+ render(t, e, o) {
1656
+ const s = t.getContext(), a = t.state;
1465
1657
  a.buffers.color.setMask(!1), a.buffers.depth.setMask(!1), a.buffers.color.setLocked(!0), a.buffers.depth.setLocked(!0);
1466
- let i, n;
1467
- this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, i, 4294967295), a.buffers.stencil.setClear(n), a.buffers.stencil.setLocked(!0), e.setRenderTarget(o), this.clear && e.clear(), e.render(this.scene, this.camera), e.setRenderTarget(t), this.clear && e.clear(), e.render(this.scene, this.camera), a.buffers.color.setLocked(!1), a.buffers.depth.setLocked(!1), a.buffers.color.setMask(!0), a.buffers.depth.setMask(!0), a.buffers.stencil.setLocked(!1), a.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), a.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), a.buffers.stencil.setLocked(!0);
1658
+ let r, n;
1659
+ this.inverse ? (r = 0, n = 1) : (r = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, r, 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);
1468
1660
  }
1469
1661
  }
1470
- class Ct extends C {
1662
+ class Ot extends P {
1471
1663
  constructor() {
1472
1664
  super(), this.needsSwap = !1;
1473
1665
  }
1474
- render(e) {
1475
- e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1666
+ render(t) {
1667
+ t.state.buffers.stencil.setLocked(!1), t.state.buffers.stencil.setTest(!1);
1476
1668
  }
1477
1669
  }
1478
- class Et {
1479
- constructor(e, t) {
1480
- if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1481
- const o = e.getSize(new d());
1482
- this._width = o.width, this._height = o.height, t = new D(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: T }), t.texture.name = "EffectComposer.rt1";
1670
+ class Rt {
1671
+ constructor(t, e) {
1672
+ if (this.renderer = t, this._pixelRatio = t.getPixelRatio(), e === void 0) {
1673
+ const o = t.getSize(new f());
1674
+ this._width = o.width, this._height = o.height, e = new L(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: E }), e.texture.name = "EffectComposer.rt1";
1483
1675
  } else
1484
- this._width = t.width, this._height = t.height;
1485
- this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Tt(He), this.copyPass.material.blending = $e, this.clock = new et();
1676
+ this._width = e.width, this._height = e.height;
1677
+ 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 Ft(qe), this.copyPass.material.blending = rt, this.clock = new it();
1486
1678
  }
1487
1679
  swapBuffers() {
1488
- const e = this.readBuffer;
1489
- this.readBuffer = this.writeBuffer, this.writeBuffer = e;
1680
+ const t = this.readBuffer;
1681
+ this.readBuffer = this.writeBuffer, this.writeBuffer = t;
1490
1682
  }
1491
- addPass(e) {
1492
- this.passes.push(e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1683
+ addPass(t) {
1684
+ this.passes.push(t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1493
1685
  }
1494
- insertPass(e, t) {
1495
- this.passes.splice(t, 0, e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1686
+ insertPass(t, e) {
1687
+ this.passes.splice(e, 0, t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1496
1688
  }
1497
- removePass(e) {
1498
- const t = this.passes.indexOf(e);
1499
- t !== -1 && this.passes.splice(t, 1);
1689
+ removePass(t) {
1690
+ const e = this.passes.indexOf(t);
1691
+ e !== -1 && this.passes.splice(e, 1);
1500
1692
  }
1501
- isLastEnabledPass(e) {
1502
- for (let t = e + 1; t < this.passes.length; t++)
1503
- if (this.passes[t].enabled)
1693
+ isLastEnabledPass(t) {
1694
+ for (let e = t + 1; e < this.passes.length; e++)
1695
+ if (this.passes[e].enabled)
1504
1696
  return !1;
1505
1697
  return !0;
1506
1698
  }
1507
- render(e) {
1508
- e === void 0 && (e = this.clock.getDelta());
1509
- const t = this.renderer.getRenderTarget();
1699
+ render(t) {
1700
+ t === void 0 && (t = this.clock.getDelta());
1701
+ const e = this.renderer.getRenderTarget();
1510
1702
  let o = !1;
1511
1703
  for (let s = 0, a = this.passes.length; s < a; s++) {
1512
- const i = this.passes[s];
1513
- if (i.enabled !== !1) {
1514
- if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, e, o), i.needsSwap) {
1704
+ const r = this.passes[s];
1705
+ if (r.enabled !== !1) {
1706
+ if (r.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), r.render(this.renderer, this.writeBuffer, this.readBuffer, t, o), r.needsSwap) {
1515
1707
  if (o) {
1516
- const n = this.renderer.getContext(), l = this.renderer.state.buffers.stencil;
1517
- l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e), l.setFunc(n.EQUAL, 1, 4294967295);
1708
+ const n = this.renderer.getContext(), u = this.renderer.state.buffers.stencil;
1709
+ u.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, t), u.setFunc(n.EQUAL, 1, 4294967295);
1518
1710
  }
1519
1711
  this.swapBuffers();
1520
1712
  }
1521
- Oe !== void 0 && (i instanceof Oe ? o = !0 : i instanceof Ct && (o = !1));
1713
+ We !== void 0 && (r instanceof We ? o = !0 : r instanceof Ot && (o = !1));
1522
1714
  }
1523
1715
  }
1524
- this.renderer.setRenderTarget(t);
1716
+ this.renderer.setRenderTarget(e);
1525
1717
  }
1526
- reset(e) {
1527
- if (e === void 0) {
1528
- const t = this.renderer.getSize(new d());
1529
- this._pixelRatio = this.renderer.getPixelRatio(), this._width = t.width, this._height = t.height, e = this.renderTarget1.clone(), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1718
+ reset(t) {
1719
+ if (t === void 0) {
1720
+ const e = this.renderer.getSize(new f());
1721
+ 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);
1530
1722
  }
1531
- this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1723
+ this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1532
1724
  }
1533
- setSize(e, t) {
1534
- this._width = e, this._height = t;
1725
+ setSize(t, e) {
1726
+ this._width = t, this._height = e;
1535
1727
  const o = this._width * this._pixelRatio, s = this._height * this._pixelRatio;
1536
1728
  this.renderTarget1.setSize(o, s), this.renderTarget2.setSize(o, s);
1537
1729
  for (let a = 0; a < this.passes.length; a++)
1538
1730
  this.passes[a].setSize(o, s);
1539
1731
  }
1540
- setPixelRatio(e) {
1541
- this._pixelRatio = e, this.setSize(this._width, this._height);
1732
+ setPixelRatio(t) {
1733
+ this._pixelRatio = t, this.setSize(this._width, this._height);
1542
1734
  }
1543
1735
  dispose() {
1544
1736
  this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();
1545
1737
  }
1546
1738
  }
1547
- class Pt extends C {
1548
- constructor(e, t, o = null, s = null, a = null) {
1549
- super(), this.scene = e, this.camera = t, this.overrideMaterial = o, this.clearColor = s, this.clearAlpha = a, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new k();
1739
+ class Bt extends P {
1740
+ constructor(t, e, o = null, s = null, a = null) {
1741
+ 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 q();
1550
1742
  }
1551
- render(e, t, o) {
1552
- const s = e.autoClear;
1553
- e.autoClear = !1;
1554
- let a, i;
1555
- this.overrideMaterial !== null && (i = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (e.getClearColor(this._oldClearColor), e.setClearColor(this.clearColor, e.getClearAlpha())), this.clearAlpha !== null && (a = e.getClearAlpha(), e.setClearAlpha(this.clearAlpha)), this.clearDepth == !0 && e.clearDepth(), e.setRenderTarget(this.renderToScreen ? null : o), this.clear === !0 && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), e.render(this.scene, this.camera), this.clearColor !== null && e.setClearColor(this._oldClearColor), this.clearAlpha !== null && e.setClearAlpha(a), this.overrideMaterial !== null && (this.scene.overrideMaterial = i), e.autoClear = s;
1743
+ render(t, e, o) {
1744
+ const s = t.autoClear;
1745
+ t.autoClear = !1;
1746
+ let a, r;
1747
+ this.overrideMaterial !== null && (r = 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 = r), t.autoClear = s;
1556
1748
  }
1557
1749
  }
1558
- const Xe = Symbol("effectComposerThree"), ho = /* @__PURE__ */ u({
1750
+ const Qe = Symbol("effectComposerThree"), yo = /* @__PURE__ */ c({
1559
1751
  __name: "EffectComposer",
1560
1752
  props: {
1561
1753
  enabled: { type: Boolean, default: !0 },
1562
1754
  withoutRenderPass: { type: Boolean }
1563
1755
  },
1564
- setup(r, { expose: e }) {
1565
- const t = r, o = W(null);
1566
- Be(Xe, o), e({ composer: o });
1567
- const { renderer: s, sizes: a, scene: i, camera: n, render: l } = y();
1568
- x(() => {
1569
- var c;
1570
- (c = o.value) == null || c.dispose(), o.value = new Et(s.value);
1571
- }), x(() => {
1572
- var E;
1573
- const { width: c, height: b } = a;
1574
- b.value && c.value && ((E = o.value) == null || E.setSize(c.value, b.value));
1575
- });
1576
- const { pixelRatio: h } = Ue();
1577
- x(() => {
1578
- var c;
1579
- (c = o.value) == null || c.setPixelRatio(h.value);
1580
- }), t.withoutRenderPass || x(() => {
1581
- n.value && i.value && o.value && o.value.addPass(new Pt(i.value, n.value));
1756
+ setup(i, { expose: t }) {
1757
+ const e = i, o = U(null);
1758
+ He(Qe, o), t({ composer: o });
1759
+ const { renderer: s, sizes: a, scene: r, camera: n } = G();
1760
+ S(() => {
1761
+ var d;
1762
+ (d = o.value) == null || d.dispose(), o.value = new Rt(s.instance);
1763
+ }), S(() => {
1764
+ var b;
1765
+ const { width: d, height: x } = a;
1766
+ x.value && d.value && ((b = o.value) == null || b.setSize(d.value, x.value));
1582
1767
  });
1583
- const { render: v } = G();
1584
- return v(() => {
1585
- l.frames.value > 0 && o.value && t.enabled && o.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
1586
- }), U(() => {
1587
- var c;
1588
- (c = o.value) == null || c.dispose();
1589
- }), (c, b) => Ne(c.$slots, "default");
1590
- }
1591
- }), N = (r, e, t) => {
1592
- if (!e && t)
1768
+ const { pixelRatio: l } = Ye();
1769
+ return S(() => {
1770
+ var d;
1771
+ (d = o.value) == null || d.setPixelRatio(l.value);
1772
+ }), e.withoutRenderPass || S(() => {
1773
+ n.activeCamera.value && r.value && o.value && o.value.addPass(new Bt(r.value, n.activeCamera.value));
1774
+ }), s.replaceRenderFunction((d) => {
1775
+ o.value && e.enabled && (o.value.render(), d());
1776
+ }), z(() => {
1777
+ var d;
1778
+ (d = o.value) == null || d.dispose();
1779
+ }), (d, x) => Ie(d.$slots, "default");
1780
+ }
1781
+ }), W = (i, t, e) => {
1782
+ if (!t && e)
1593
1783
  throw new Error("passDependencies is required when dependencyFieldsTriggeringRecreation is provided");
1594
- const o = te(Xe), s = W(r()), { sizes: a, invalidate: i } = y();
1595
- e && S(e, () => i());
1784
+ const o = Q(Qe), s = U(i()), { sizes: a, invalidate: r } = C();
1785
+ t && g(t, () => r());
1596
1786
  const n = () => {
1597
- var f;
1598
- (f = o == null ? void 0 : o.value) == null || f.removePass(s.value), s.value.dispose();
1599
- }, l = x(() => {
1600
- !(o != null && o.value) || !a.height.value || !a.width.value || (o.value.addPass(s.value), oe(() => l()));
1787
+ var l;
1788
+ (l = o == null ? void 0 : o.value) == null || l.removePass(s.value), s.value.dispose();
1789
+ }, u = S(() => {
1790
+ !(o != null && o.value) || !a.height.value || !a.width.value || (o.value.addPass(s.value), ue(() => u()));
1601
1791
  });
1602
- return t && S(
1603
- () => t.map((f) => e == null ? void 0 : e[f]),
1792
+ return e && g(
1793
+ () => e.map((l) => t == null ? void 0 : t[l]),
1604
1794
  () => {
1605
1795
  if (!(o != null && o.value))
1606
1796
  return;
1607
- const f = o.value.passes.findIndex((h) => h === s.value);
1608
- ~f && (n(), s.value = r(), o.value.insertPass(s.value, f));
1797
+ const l = o.value.passes.findIndex((d) => d === s.value);
1798
+ ~l && (n(), s.value = i(), o.value.insertPass(s.value, l));
1609
1799
  }
1610
- ), U(() => {
1800
+ ), z(() => {
1611
1801
  n();
1612
1802
  }), { pass: s };
1613
- }, Dt = {
1803
+ }, Nt = {
1614
1804
  uniforms: {
1615
1805
  tDiffuse: { value: null },
1616
1806
  //diffuse texture
@@ -1705,54 +1895,53 @@ const Xe = Symbol("effectComposerThree"), ho = /* @__PURE__ */ u({
1705
1895
  }`
1706
1896
  )
1707
1897
  };
1708
- class Re extends C {
1709
- constructor(e = 64) {
1898
+ class Ue extends P {
1899
+ constructor(t = 64) {
1710
1900
  super();
1711
- const t = Dt;
1712
- this.uniforms = P.clone(t.uniforms), this.heightMap = this.generateHeightmap(e), this.uniforms.tDisp.value = this.heightMap, this.material = new A({
1901
+ const e = Nt;
1902
+ this.uniforms = D.clone(e.uniforms), this.heightMap = this.generateHeightmap(t), this.uniforms.tDisp.value = this.heightMap, this.material = new M({
1713
1903
  uniforms: this.uniforms,
1714
- vertexShader: t.vertexShader,
1715
- fragmentShader: t.fragmentShader
1904
+ vertexShader: e.vertexShader,
1905
+ fragmentShader: e.fragmentShader
1716
1906
  }), this.fsQuad = new R(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1717
1907
  }
1718
- render(e, t, o) {
1719
- this.uniforms.tDiffuse.value = o.texture, this.uniforms.seed.value = Math.random(), this.uniforms.byp.value = 0, this.curF % this.randX == 0 || this.goWild == !0 ? (this.uniforms.amount.value = Math.random() / 30, this.uniforms.angle.value = w.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = w.randFloat(-1, 1), this.uniforms.seed_y.value = w.randFloat(-1, 1), this.uniforms.distortion_x.value = w.randFloat(0, 1), this.uniforms.distortion_y.value = w.randFloat(0, 1), this.curF = 0, this.generateTrigger()) : this.curF % this.randX < this.randX / 5 ? (this.uniforms.amount.value = Math.random() / 90, this.uniforms.angle.value = w.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = w.randFloat(0, 1), this.uniforms.distortion_y.value = w.randFloat(0, 1), this.uniforms.seed_x.value = w.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = w.randFloat(-0.3, 0.3)) : this.goWild == !1 && (this.uniforms.byp.value = 1), this.curF++, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this.fsQuad.render(e));
1908
+ render(t, e, o) {
1909
+ 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 = y.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = y.randFloat(-1, 1), this.uniforms.seed_y.value = y.randFloat(-1, 1), this.uniforms.distortion_x.value = y.randFloat(0, 1), this.uniforms.distortion_y.value = y.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 = y.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = y.randFloat(0, 1), this.uniforms.distortion_y.value = y.randFloat(0, 1), this.uniforms.seed_x.value = y.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = y.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));
1720
1910
  }
1721
1911
  generateTrigger() {
1722
- this.randX = w.randInt(120, 240);
1912
+ this.randX = y.randInt(120, 240);
1723
1913
  }
1724
- generateHeightmap(e) {
1725
- const t = new Float32Array(e * e), o = e * e;
1914
+ generateHeightmap(t) {
1915
+ const e = new Float32Array(t * t), o = t * t;
1726
1916
  for (let a = 0; a < o; a++) {
1727
- const i = w.randFloat(0, 1);
1728
- t[a] = i;
1917
+ const r = y.randFloat(0, 1);
1918
+ e[a] = r;
1729
1919
  }
1730
- const s = new tt(t, e, e, ot, st);
1920
+ const s = new nt(e, t, t, lt, ut);
1731
1921
  return s.needsUpdate = !0, s;
1732
1922
  }
1733
1923
  dispose() {
1734
1924
  this.material.dispose(), this.heightMap.dispose(), this.fsQuad.dispose();
1735
1925
  }
1736
1926
  }
1737
- const po = /* @__PURE__ */ u({
1927
+ const Mo = /* @__PURE__ */ c({
1738
1928
  __name: "Glitch",
1739
1929
  props: {
1740
1930
  dtSize: {},
1741
1931
  goWild: { type: Boolean }
1742
1932
  },
1743
- setup(r, { expose: e }) {
1744
- const t = r, { pass: o } = N(() => new Re(t.dtSize), t, ["dtSize"]);
1745
- e({ pass: o });
1746
- const { onBeforeRender: s } = G();
1747
- return s(({ invalidate: a }) => a()), m(
1748
- [[() => t.goWild, "goWild"]],
1933
+ setup(i, { expose: t }) {
1934
+ const e = i, { pass: o } = W(() => new Ue(e.dtSize), e, ["dtSize"]), { invalidate: s } = C();
1935
+ t({ pass: o });
1936
+ const { onBeforeRender: a } = ce();
1937
+ return a(() => s()), v(
1938
+ [[() => e.goWild, "goWild"]],
1749
1939
  o,
1750
- () => new Re()
1940
+ () => new Ue()
1751
1941
  ), () => {
1752
1942
  };
1753
1943
  }
1754
- }), Y = {
1755
- name: "HalftoneShader",
1944
+ }), k = {
1756
1945
  uniforms: {
1757
1946
  tDiffuse: { value: null },
1758
1947
  shape: { value: 1 },
@@ -2055,28 +2244,28 @@ const po = /* @__PURE__ */ u({
2055
2244
  }`
2056
2245
  )
2057
2246
  };
2058
- class Lt extends C {
2059
- constructor(e, t, o) {
2060
- super(), this.uniforms = P.clone(Y.uniforms), this.material = new A({
2247
+ class zt extends P {
2248
+ constructor(t, e, o) {
2249
+ super(), this.uniforms = D.clone(k.uniforms), this.material = new M({
2061
2250
  uniforms: this.uniforms,
2062
- fragmentShader: Y.fragmentShader,
2063
- vertexShader: Y.vertexShader
2064
- }), this.uniforms.width.value = e, this.uniforms.height.value = t;
2251
+ fragmentShader: k.fragmentShader,
2252
+ vertexShader: k.vertexShader
2253
+ }), this.uniforms.width.value = t, this.uniforms.height.value = e;
2065
2254
  for (const s in o)
2066
2255
  o.hasOwnProperty(s) && this.uniforms.hasOwnProperty(s) && (this.uniforms[s].value = o[s]);
2067
2256
  this.fsQuad = new R(this.material);
2068
2257
  }
2069
- render(e, t, o) {
2070
- this.material.uniforms.tDiffuse.value = o.texture, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this.fsQuad.render(e));
2258
+ render(t, e, o) {
2259
+ 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));
2071
2260
  }
2072
- setSize(e, t) {
2073
- this.uniforms.width.value = e, this.uniforms.height.value = t;
2261
+ setSize(t, e) {
2262
+ this.uniforms.width.value = t, this.uniforms.height.value = e;
2074
2263
  }
2075
2264
  dispose() {
2076
2265
  this.material.dispose(), this.fsQuad.dispose();
2077
2266
  }
2078
2267
  }
2079
- const mo = /* @__PURE__ */ u({
2268
+ const To = /* @__PURE__ */ c({
2080
2269
  __name: "Halftone",
2081
2270
  props: {
2082
2271
  shape: {},
@@ -2089,55 +2278,55 @@ const mo = /* @__PURE__ */ u({
2089
2278
  greyscale: { type: Boolean },
2090
2279
  blendingMode: {}
2091
2280
  },
2092
- setup(r, { expose: e }) {
2093
- const t = r, { sizes: o } = y(), s = L(
2281
+ setup(i, { expose: t }) {
2282
+ const e = i, { sizes: o } = G(), s = F(
2094
2283
  () => Object.fromEntries(
2095
- Object.entries(t).filter(([i, n]) => n !== void 0)
2284
+ Object.entries(e).filter(([r, n]) => n !== void 0)
2096
2285
  )
2097
- ), { pass: a } = N(() => new Lt(
2286
+ ), { pass: a } = W(() => new zt(
2098
2287
  o.width.value,
2099
2288
  o.height.value,
2100
2289
  s.value
2101
- ), t);
2102
- return e({ pass: a }), x(() => {
2290
+ ), e);
2291
+ return t({ pass: a }), S(() => {
2103
2292
  a.value.setSize(o.width.value, o.height.value);
2104
- }), x(() => {
2105
- Object.entries(t).forEach(([i, n]) => {
2106
- i in a.value.uniforms && (a.value.uniforms[i].value = n ?? Y.uniforms[i].value);
2293
+ }), S(() => {
2294
+ Object.entries(e).forEach(([r, n]) => {
2295
+ r in a.value.uniforms && (a.value.uniforms[r].value = n ?? k.uniforms[r].value);
2107
2296
  });
2108
2297
  }), () => {
2109
2298
  };
2110
2299
  }
2111
2300
  });
2112
- class Fe extends C {
2113
- constructor(e, t, o, s = {}) {
2114
- super(), this.pixelSize = e, this.resolution = new d(), this.renderResolution = new d(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new at(), this.fsQuad = new R(this.pixelatedMaterial), this.scene = t, this.camera = o, this.normalEdgeStrength = s.normalEdgeStrength || 0.3, this.depthEdgeStrength = s.depthEdgeStrength || 0.4, this.beautyRenderTarget = new D(), this.beautyRenderTarget.texture.minFilter = F, this.beautyRenderTarget.texture.magFilter = F, this.beautyRenderTarget.texture.type = T, this.beautyRenderTarget.depthTexture = new rt(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = F, this.normalRenderTarget.texture.magFilter = F, this.normalRenderTarget.texture.type = T;
2301
+ class Ge extends P {
2302
+ constructor(t, e, o, s = {}) {
2303
+ super(), this.pixelSize = t, this.resolution = new f(), this.renderResolution = new f(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new ct(), this.fsQuad = new R(this.pixelatedMaterial), this.scene = e, this.camera = o, this.normalEdgeStrength = s.normalEdgeStrength || 0.3, this.depthEdgeStrength = s.depthEdgeStrength || 0.4, this.beautyRenderTarget = new L(), this.beautyRenderTarget.texture.minFilter = B, this.beautyRenderTarget.texture.magFilter = B, this.beautyRenderTarget.texture.type = E, this.beautyRenderTarget.depthTexture = new dt(), this.normalRenderTarget = new L(), this.normalRenderTarget.texture.minFilter = B, this.normalRenderTarget.texture.magFilter = B, this.normalRenderTarget.texture.type = E;
2115
2304
  }
2116
2305
  dispose() {
2117
2306
  this.beautyRenderTarget.dispose(), this.normalRenderTarget.dispose(), this.pixelatedMaterial.dispose(), this.normalMaterial.dispose(), this.fsQuad.dispose();
2118
2307
  }
2119
- setSize(e, t) {
2120
- this.resolution.set(e, t), this.renderResolution.set(e / this.pixelSize | 0, t / this.pixelSize | 0);
2308
+ setSize(t, e) {
2309
+ this.resolution.set(t, e), this.renderResolution.set(t / this.pixelSize | 0, e / this.pixelSize | 0);
2121
2310
  const { x: o, y: s } = this.renderResolution;
2122
2311
  this.beautyRenderTarget.setSize(o, s), this.normalRenderTarget.setSize(o, s), this.fsQuad.material.uniforms.resolution.value.set(o, s, 1 / o, 1 / s);
2123
2312
  }
2124
- setPixelSize(e) {
2125
- this.pixelSize = e, this.setSize(this.resolution.x, this.resolution.y);
2313
+ setPixelSize(t) {
2314
+ this.pixelSize = t, this.setSize(this.resolution.x, this.resolution.y);
2126
2315
  }
2127
- render(e, t) {
2316
+ render(t, e) {
2128
2317
  const o = this.fsQuad.material.uniforms;
2129
- o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, e.setRenderTarget(this.beautyRenderTarget), e.render(this.scene, this.camera);
2318
+ o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, t.setRenderTarget(this.beautyRenderTarget), t.render(this.scene, this.camera);
2130
2319
  const s = this.scene.overrideMaterial;
2131
- e.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, e.render(this.scene, this.camera), this.scene.overrideMaterial = s, o.tDiffuse.value = this.beautyRenderTarget.texture, o.tDepth.value = this.beautyRenderTarget.depthTexture, o.tNormal.value = this.normalRenderTarget.texture, this.renderToScreen ? e.setRenderTarget(null) : (e.setRenderTarget(t), this.clear && e.clear()), this.fsQuad.render(e);
2320
+ 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);
2132
2321
  }
2133
2322
  createPixelatedMaterial() {
2134
- return new A({
2323
+ return new M({
2135
2324
  uniforms: {
2136
2325
  tDiffuse: { value: null },
2137
2326
  tDepth: { value: null },
2138
2327
  tNormal: { value: null },
2139
2328
  resolution: {
2140
- value: new it(
2329
+ value: new ft(
2141
2330
  this.renderResolution.x,
2142
2331
  this.renderResolution.y,
2143
2332
  1 / this.renderResolution.x,
@@ -2256,28 +2445,28 @@ class Fe extends C {
2256
2445
  });
2257
2446
  }
2258
2447
  }
2259
- const vo = /* @__PURE__ */ u({
2448
+ const Co = /* @__PURE__ */ c({
2260
2449
  __name: "Pixelation",
2261
2450
  props: {
2262
2451
  pixelSize: {},
2263
2452
  depthEdgeStrength: {},
2264
2453
  normalEdgeStrength: {}
2265
2454
  },
2266
- setup(r, { expose: e }) {
2267
- const t = r, { scene: o, camera: s } = y(), { pass: a } = N(() => new Fe(t.pixelSize, o.value, s.value), t);
2268
- return e({ pass: a }), x(() => {
2269
- a.value.setPixelSize(t.pixelSize);
2270
- }), m(
2455
+ setup(i, { expose: t }) {
2456
+ const e = i, { scene: o, camera: s } = C(), { pass: a } = W(() => new Ge(e.pixelSize, o.value, s.value), e);
2457
+ return t({ pass: a }), S(() => {
2458
+ a.value.setPixelSize(e.pixelSize);
2459
+ }), v(
2271
2460
  [
2272
- [() => t.depthEdgeStrength, "depthEdgeStrength"],
2273
- [() => t.normalEdgeStrength, "normalEdgeStrength"]
2461
+ [() => e.depthEdgeStrength, "depthEdgeStrength"],
2462
+ [() => e.normalEdgeStrength, "normalEdgeStrength"]
2274
2463
  ],
2275
2464
  a,
2276
- () => new Fe(1, o.value, s.value)
2465
+ () => new Ge(1, o.value, s.value)
2277
2466
  ), () => {
2278
2467
  };
2279
2468
  }
2280
- }), Ot = {
2469
+ }), Wt = {
2281
2470
  name: "OutputShader",
2282
2471
  uniforms: {
2283
2472
  tDiffuse: { value: null },
@@ -2363,39 +2552,38 @@ const vo = /* @__PURE__ */ u({
2363
2552
  }`
2364
2553
  )
2365
2554
  };
2366
- class Rt extends C {
2555
+ class Ut extends P {
2367
2556
  constructor() {
2368
2557
  super();
2369
- const e = Ot;
2370
- this.uniforms = P.clone(e.uniforms), this.material = new nt({
2371
- name: e.name,
2558
+ const t = Wt;
2559
+ this.uniforms = D.clone(t.uniforms), this.material = new ht({
2560
+ name: t.name,
2372
2561
  uniforms: this.uniforms,
2373
- vertexShader: e.vertexShader,
2374
- fragmentShader: e.fragmentShader
2562
+ vertexShader: t.vertexShader,
2563
+ fragmentShader: t.fragmentShader
2375
2564
  }), this.fsQuad = new R(this.material), this._outputColorSpace = null, this._toneMapping = null;
2376
2565
  }
2377
- render(e, t, o) {
2378
- this.uniforms.tDiffuse.value = o.texture, this.uniforms.toneMappingExposure.value = e.toneMappingExposure, (this._outputColorSpace !== e.outputColorSpace || this._toneMapping !== e.toneMapping) && (this._outputColorSpace = e.outputColorSpace, this._toneMapping = e.toneMapping, this.material.defines = {}, lt.getTransfer(this._outputColorSpace) === ut && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === ct ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === dt ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === ft ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === ht ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === pt ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === mt ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === vt && (this.material.defines.CUSTOM_TONE_MAPPING = ""), this.material.needsUpdate = !0), this.renderToScreen === !0 ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), this.fsQuad.render(e));
2566
+ render(t, e, o) {
2567
+ 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 = {}, pt.getTransfer(this._outputColorSpace) === mt && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === vt ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === gt ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === xt ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === bt ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === wt ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === St ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === At && (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));
2379
2568
  }
2380
2569
  dispose() {
2381
2570
  this.material.dispose(), this.fsQuad.dispose();
2382
2571
  }
2383
2572
  }
2384
- const go = /* @__PURE__ */ u({
2573
+ const Eo = /* @__PURE__ */ c({
2385
2574
  __name: "Output",
2386
- setup(r, { expose: e }) {
2387
- const { pass: t } = N(() => new Rt());
2388
- return e({ pass: t }), () => {
2575
+ setup(i, { expose: t }) {
2576
+ const { pass: e } = W(() => new Ut());
2577
+ return t({ pass: e }), () => {
2389
2578
  };
2390
2579
  }
2391
2580
  }), j = {
2392
- name: "SMAAEdgesShader",
2393
2581
  defines: {
2394
2582
  SMAA_THRESHOLD: "0.1"
2395
2583
  },
2396
2584
  uniforms: {
2397
2585
  tDiffuse: { value: null },
2398
- resolution: { value: new d(1 / 1024, 1 / 512) }
2586
+ resolution: { value: new f(1 / 1024, 1 / 512) }
2399
2587
  },
2400
2588
  vertexShader: (
2401
2589
  /* glsl */
@@ -2490,7 +2678,6 @@ const go = /* @__PURE__ */ u({
2490
2678
  }`
2491
2679
  )
2492
2680
  }, V = {
2493
- name: "SMAAWeightsShader",
2494
2681
  defines: {
2495
2682
  SMAA_MAX_SEARCH_STEPS: "8",
2496
2683
  SMAA_AREATEX_MAX_DISTANCE: "16",
@@ -2501,7 +2688,7 @@ const go = /* @__PURE__ */ u({
2501
2688
  tDiffuse: { value: null },
2502
2689
  tArea: { value: null },
2503
2690
  tSearch: { value: null },
2504
- resolution: { value: new d(1 / 1024, 1 / 512) }
2691
+ resolution: { value: new f(1 / 1024, 1 / 512) }
2505
2692
  },
2506
2693
  vertexShader: (
2507
2694
  /* glsl */
@@ -2739,12 +2926,11 @@ const go = /* @__PURE__ */ u({
2739
2926
 
2740
2927
  }`
2741
2928
  )
2742
- }, ee = {
2743
- name: "SMAABlendShader",
2929
+ }, le = {
2744
2930
  uniforms: {
2745
2931
  tDiffuse: { value: null },
2746
2932
  tColor: { value: null },
2747
- resolution: { value: new d(1 / 1024, 1 / 512) }
2933
+ resolution: { value: new f(1 / 1024, 1 / 512) }
2748
2934
  },
2749
2935
  vertexShader: (
2750
2936
  /* glsl */
@@ -2829,43 +3015,43 @@ const go = /* @__PURE__ */ u({
2829
3015
  }`
2830
3016
  )
2831
3017
  };
2832
- class Ft extends C {
2833
- constructor(e, t) {
2834
- super(), this.edgesRT = new D(e, t, {
3018
+ class Gt extends P {
3019
+ constructor(t, e) {
3020
+ super(), this.edgesRT = new L(t, e, {
2835
3021
  depthBuffer: !1,
2836
- type: T
2837
- }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(e, t, {
3022
+ type: E
3023
+ }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new L(t, e, {
2838
3024
  depthBuffer: !1,
2839
- type: T
3025
+ type: E
2840
3026
  }), this.weightsRT.texture.name = "SMAAPass.weights";
2841
3027
  const o = this, s = new Image();
2842
3028
  s.src = this.getAreaTexture(), s.onload = function() {
2843
3029
  o.areaTexture.needsUpdate = !0;
2844
- }, this.areaTexture = new Me(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = gt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
3030
+ }, this.areaTexture = new Le(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = yt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2845
3031
  const a = new Image();
2846
3032
  a.src = this.getSearchTexture(), a.onload = function() {
2847
3033
  o.searchTexture.needsUpdate = !0;
2848
- }, this.searchTexture = new Me(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = F, this.searchTexture.minFilter = F, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = P.clone(j.uniforms), this.uniformsEdges.resolution.value.set(1 / e, 1 / t), this.materialEdges = new A({
3034
+ }, this.searchTexture = new Le(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = B, this.searchTexture.minFilter = B, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = D.clone(j.uniforms), this.uniformsEdges.resolution.value.set(1 / t, 1 / e), this.materialEdges = new M({
2849
3035
  defines: Object.assign({}, j.defines),
2850
3036
  uniforms: this.uniformsEdges,
2851
3037
  vertexShader: j.vertexShader,
2852
3038
  fragmentShader: j.fragmentShader
2853
- }), this.uniformsWeights = P.clone(V.uniforms), this.uniformsWeights.resolution.value.set(1 / e, 1 / t), this.uniformsWeights.tDiffuse.value = this.edgesRT.texture, this.uniformsWeights.tArea.value = this.areaTexture, this.uniformsWeights.tSearch.value = this.searchTexture, this.materialWeights = new A({
3039
+ }), this.uniformsWeights = D.clone(V.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 M({
2854
3040
  defines: Object.assign({}, V.defines),
2855
3041
  uniforms: this.uniformsWeights,
2856
3042
  vertexShader: V.vertexShader,
2857
3043
  fragmentShader: V.fragmentShader
2858
- }), this.uniformsBlend = P.clone(ee.uniforms), this.uniformsBlend.resolution.value.set(1 / e, 1 / t), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new A({
3044
+ }), this.uniformsBlend = D.clone(le.uniforms), this.uniformsBlend.resolution.value.set(1 / t, 1 / e), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new M({
2859
3045
  uniforms: this.uniformsBlend,
2860
- vertexShader: ee.vertexShader,
2861
- fragmentShader: ee.fragmentShader
3046
+ vertexShader: le.vertexShader,
3047
+ fragmentShader: le.fragmentShader
2862
3048
  }), this.fsQuad = new R(null);
2863
3049
  }
2864
- render(e, t, o) {
2865
- this.uniformsEdges.tDiffuse.value = o.texture, this.fsQuad.material = this.materialEdges, e.setRenderTarget(this.edgesRT), this.clear && e.clear(), this.fsQuad.render(e), this.fsQuad.material = this.materialWeights, e.setRenderTarget(this.weightsRT), this.clear && e.clear(), this.fsQuad.render(e), this.uniformsBlend.tColor.value = o.texture, this.fsQuad.material = this.materialBlend, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this.fsQuad.render(e));
3050
+ render(t, e, o) {
3051
+ 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));
2866
3052
  }
2867
- setSize(e, t) {
2868
- this.edgesRT.setSize(e, t), this.weightsRT.setSize(e, t), this.materialEdges.uniforms.resolution.value.set(1 / e, 1 / t), this.materialWeights.uniforms.resolution.value.set(1 / e, 1 / t), this.materialBlend.uniforms.resolution.value.set(1 / e, 1 / t);
3053
+ setSize(t, e) {
3054
+ 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);
2869
3055
  }
2870
3056
  getAreaTexture() {
2871
3057
  return "data:image/png;base64,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";
@@ -2877,27 +3063,25 @@ class Ft extends C {
2877
3063
  this.edgesRT.dispose(), this.weightsRT.dispose(), this.areaTexture.dispose(), this.searchTexture.dispose(), this.materialEdges.dispose(), this.materialWeights.dispose(), this.materialBlend.dispose(), this.fsQuad.dispose();
2878
3064
  }
2879
3065
  }
2880
- const xo = /* @__PURE__ */ u({
3066
+ const Po = /* @__PURE__ */ c({
2881
3067
  __name: "SMAA",
2882
3068
  props: {
2883
3069
  width: {},
2884
3070
  height: {}
2885
3071
  },
2886
- setup(r, { expose: e }) {
2887
- const t = r, { sizes: o } = y(), { pixelRatio: s } = Ue(), a = L(() => t.width ?? o.width.value * s.value), i = L(() => t.height ?? o.height.value * s.value), { pass: n } = N(() => new Ft(a.value, i.value), t);
2888
- return e({ pass: n }), x(() => {
2889
- n.value.setSize(a.value, i.value);
3072
+ setup(i, { expose: t }) {
3073
+ const e = i, { sizes: o } = G(), { pixelRatio: s } = Ye(), a = F(() => e.width ?? o.width.value * s.value), r = F(() => e.height ?? o.height.value * s.value), { pass: n } = W(() => new Gt(a.value, r.value), e);
3074
+ return t({ pass: n }), S(() => {
3075
+ n.value.setSize(a.value, r.value);
2890
3076
  }), () => {
2891
3077
  };
2892
3078
  }
2893
- }), Ie = {
2894
- name: "LuminosityHighPassShader",
2895
- shaderID: "luminosityHighPass",
3079
+ }), Ke = {
2896
3080
  uniforms: {
2897
3081
  tDiffuse: { value: null },
2898
3082
  luminosityThreshold: { value: 1 },
2899
3083
  smoothWidth: { value: 1 },
2900
- defaultColor: { value: new k(0) },
3084
+ defaultColor: { value: new q(0) },
2901
3085
  defaultOpacity: { value: 0 }
2902
3086
  },
2903
3087
  vertexShader: (
@@ -2941,80 +3125,80 @@ const xo = /* @__PURE__ */ u({
2941
3125
  }`
2942
3126
  )
2943
3127
  };
2944
- class B extends C {
2945
- constructor(e, t, o, s) {
2946
- super(), this.strength = t !== void 0 ? t : 1, this.radius = o, this.threshold = s, this.resolution = e !== void 0 ? new d(e.x, e.y) : new d(256, 256), this.clearColor = new k(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
2947
- let a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2948
- this.renderTargetBright = new D(a, i, { type: T }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2949
- for (let v = 0; v < this.nMips; v++) {
2950
- const c = new D(a, i, { type: T });
2951
- c.texture.name = "UnrealBloomPass.h" + v, c.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(c);
2952
- const b = new D(a, i, { type: T });
2953
- b.texture.name = "UnrealBloomPass.v" + v, b.texture.generateMipmaps = !1, this.renderTargetsVertical.push(b), a = Math.round(a / 2), i = Math.round(i / 2);
3128
+ class N extends P {
3129
+ constructor(t, e, o, s) {
3130
+ super(), this.strength = e !== void 0 ? e : 1, this.radius = o, this.threshold = s, this.resolution = t !== void 0 ? new f(t.x, t.y) : new f(256, 256), this.clearColor = new q(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
3131
+ let a = Math.round(this.resolution.x / 2), r = Math.round(this.resolution.y / 2);
3132
+ this.renderTargetBright = new L(a, r, { type: E }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
3133
+ for (let x = 0; x < this.nMips; x++) {
3134
+ const b = new L(a, r, { type: E });
3135
+ b.texture.name = "UnrealBloomPass.h" + x, b.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(b);
3136
+ const A = new L(a, r, { type: E });
3137
+ A.texture.name = "UnrealBloomPass.v" + x, A.texture.generateMipmaps = !1, this.renderTargetsVertical.push(A), a = Math.round(a / 2), r = Math.round(r / 2);
2954
3138
  }
2955
- const n = Ie;
2956
- this.highPassUniforms = P.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new A({
3139
+ const n = Ke;
3140
+ this.highPassUniforms = D.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new M({
2957
3141
  uniforms: this.highPassUniforms,
2958
3142
  vertexShader: n.vertexShader,
2959
3143
  fragmentShader: n.fragmentShader
2960
3144
  }), this.separableBlurMaterials = [];
2961
- const l = [3, 5, 7, 9, 11];
2962
- a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2963
- for (let v = 0; v < this.nMips; v++)
2964
- this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[v])), this.separableBlurMaterials[v].uniforms.invSize.value = new d(1 / a, 1 / i), a = Math.round(a / 2), i = Math.round(i / 2);
2965
- this.compositeMaterial = this.getCompositeMaterial(this.nMips), this.compositeMaterial.uniforms.blurTexture1.value = this.renderTargetsVertical[0].texture, this.compositeMaterial.uniforms.blurTexture2.value = this.renderTargetsVertical[1].texture, this.compositeMaterial.uniforms.blurTexture3.value = this.renderTargetsVertical[2].texture, this.compositeMaterial.uniforms.blurTexture4.value = this.renderTargetsVertical[3].texture, this.compositeMaterial.uniforms.blurTexture5.value = this.renderTargetsVertical[4].texture, this.compositeMaterial.uniforms.bloomStrength.value = t, this.compositeMaterial.uniforms.bloomRadius.value = 0.1;
2966
- const f = [1, 0.8, 0.6, 0.4, 0.2];
2967
- this.compositeMaterial.uniforms.bloomFactors.value = f, this.bloomTintColors = [new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2968
- const h = He;
2969
- this.copyUniforms = P.clone(h.uniforms), this.blendMaterial = new A({
3145
+ const u = [3, 5, 7, 9, 11];
3146
+ a = Math.round(this.resolution.x / 2), r = Math.round(this.resolution.y / 2);
3147
+ for (let x = 0; x < this.nMips; x++)
3148
+ this.separableBlurMaterials.push(this.getSeparableBlurMaterial(u[x])), this.separableBlurMaterials[x].uniforms.invSize.value = new f(1 / a, 1 / r), a = Math.round(a / 2), r = Math.round(r / 2);
3149
+ 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;
3150
+ const l = [1, 0.8, 0.6, 0.4, 0.2];
3151
+ this.compositeMaterial.uniforms.bloomFactors.value = l, this.bloomTintColors = [new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1), new O(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
3152
+ const d = qe;
3153
+ this.copyUniforms = D.clone(d.uniforms), this.blendMaterial = new M({
2970
3154
  uniforms: this.copyUniforms,
2971
- vertexShader: h.vertexShader,
2972
- fragmentShader: h.fragmentShader,
2973
- blending: xt,
3155
+ vertexShader: d.vertexShader,
3156
+ fragmentShader: d.fragmentShader,
3157
+ blending: Mt,
2974
3158
  depthTest: !1,
2975
3159
  depthWrite: !1,
2976
3160
  transparent: !0
2977
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new k(), this.oldClearAlpha = 1, this.basic = new We(), this.fsQuad = new R(null);
3161
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new q(), this.oldClearAlpha = 1, this.basic = new Ve(), this.fsQuad = new R(null);
2978
3162
  }
2979
3163
  dispose() {
2980
- for (let e = 0; e < this.renderTargetsHorizontal.length; e++)
2981
- this.renderTargetsHorizontal[e].dispose();
2982
- for (let e = 0; e < this.renderTargetsVertical.length; e++)
2983
- this.renderTargetsVertical[e].dispose();
3164
+ for (let t = 0; t < this.renderTargetsHorizontal.length; t++)
3165
+ this.renderTargetsHorizontal[t].dispose();
3166
+ for (let t = 0; t < this.renderTargetsVertical.length; t++)
3167
+ this.renderTargetsVertical[t].dispose();
2984
3168
  this.renderTargetBright.dispose();
2985
- for (let e = 0; e < this.separableBlurMaterials.length; e++)
2986
- this.separableBlurMaterials[e].dispose();
3169
+ for (let t = 0; t < this.separableBlurMaterials.length; t++)
3170
+ this.separableBlurMaterials[t].dispose();
2987
3171
  this.compositeMaterial.dispose(), this.blendMaterial.dispose(), this.basic.dispose(), this.fsQuad.dispose();
2988
3172
  }
2989
- setSize(e, t) {
2990
- let o = Math.round(e / 2), s = Math.round(t / 2);
3173
+ setSize(t, e) {
3174
+ let o = Math.round(t / 2), s = Math.round(e / 2);
2991
3175
  this.renderTargetBright.setSize(o, s);
2992
3176
  for (let a = 0; a < this.nMips; a++)
2993
- this.renderTargetsHorizontal[a].setSize(o, s), this.renderTargetsVertical[a].setSize(o, s), this.separableBlurMaterials[a].uniforms.invSize.value = new d(1 / o, 1 / s), o = Math.round(o / 2), s = Math.round(s / 2);
3177
+ this.renderTargetsHorizontal[a].setSize(o, s), this.renderTargetsVertical[a].setSize(o, s), this.separableBlurMaterials[a].uniforms.invSize.value = new f(1 / o, 1 / s), o = Math.round(o / 2), s = Math.round(s / 2);
2994
3178
  }
2995
- render(e, t, o, s, a) {
2996
- e.getClearColor(this._oldClearColor), this.oldClearAlpha = e.getClearAlpha();
2997
- const i = e.autoClear;
2998
- e.autoClear = !1, e.setClearColor(this.clearColor, 0), a && e.state.buffers.stencil.setTest(!1), this.renderToScreen && (this.fsQuad.material = this.basic, this.basic.map = o.texture, e.setRenderTarget(null), e.clear(), this.fsQuad.render(e)), this.highPassUniforms.tDiffuse.value = o.texture, this.highPassUniforms.luminosityThreshold.value = this.threshold, this.fsQuad.material = this.materialHighPassFilter, e.setRenderTarget(this.renderTargetBright), e.clear(), this.fsQuad.render(e);
3179
+ render(t, e, o, s, a) {
3180
+ t.getClearColor(this._oldClearColor), this.oldClearAlpha = t.getClearAlpha();
3181
+ const r = t.autoClear;
3182
+ 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);
2999
3183
  let n = this.renderTargetBright;
3000
- for (let l = 0; l < this.nMips; l++)
3001
- this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionX, e.setRenderTarget(this.renderTargetsHorizontal[l]), e.clear(), this.fsQuad.render(e), this.separableBlurMaterials[l].uniforms.colorTexture.value = this.renderTargetsHorizontal[l].texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionY, e.setRenderTarget(this.renderTargetsVertical[l]), e.clear(), this.fsQuad.render(e), n = this.renderTargetsVertical[l];
3002
- this.fsQuad.material = this.compositeMaterial, this.compositeMaterial.uniforms.bloomStrength.value = this.strength, this.compositeMaterial.uniforms.bloomRadius.value = this.radius, this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors, e.setRenderTarget(this.renderTargetsHorizontal[0]), e.clear(), this.fsQuad.render(e), this.fsQuad.material = this.blendMaterial, this.copyUniforms.tDiffuse.value = this.renderTargetsHorizontal[0].texture, a && e.state.buffers.stencil.setTest(!0), this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(o), this.fsQuad.render(e)), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = i;
3003
- }
3004
- getSeparableBlurMaterial(e) {
3005
- const t = [];
3006
- for (let o = 0; o < e; o++)
3007
- t.push(0.39894 * Math.exp(-0.5 * o * o / (e * e)) / e);
3008
- return new A({
3184
+ for (let u = 0; u < this.nMips; u++)
3185
+ this.fsQuad.material = this.separableBlurMaterials[u], this.separableBlurMaterials[u].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[u].uniforms.direction.value = N.BlurDirectionX, t.setRenderTarget(this.renderTargetsHorizontal[u]), t.clear(), this.fsQuad.render(t), this.separableBlurMaterials[u].uniforms.colorTexture.value = this.renderTargetsHorizontal[u].texture, this.separableBlurMaterials[u].uniforms.direction.value = N.BlurDirectionY, t.setRenderTarget(this.renderTargetsVertical[u]), t.clear(), this.fsQuad.render(t), n = this.renderTargetsVertical[u];
3186
+ 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 = r;
3187
+ }
3188
+ getSeparableBlurMaterial(t) {
3189
+ const e = [];
3190
+ for (let o = 0; o < t; o++)
3191
+ e.push(0.39894 * Math.exp(-0.5 * o * o / (t * t)) / t);
3192
+ return new M({
3009
3193
  defines: {
3010
- KERNEL_RADIUS: e
3194
+ KERNEL_RADIUS: t
3011
3195
  },
3012
3196
  uniforms: {
3013
3197
  colorTexture: { value: null },
3014
- invSize: { value: new d(0.5, 0.5) },
3198
+ invSize: { value: new f(0.5, 0.5) },
3015
3199
  // inverse texture size
3016
- direction: { value: new d(0.5, 0.5) },
3017
- gaussianCoefficients: { value: t }
3200
+ direction: { value: new f(0.5, 0.5) },
3201
+ gaussianCoefficients: { value: e }
3018
3202
  // precomputed Gaussian coefficients
3019
3203
  },
3020
3204
  vertexShader: `varying vec2 vUv;
@@ -3045,10 +3229,10 @@ class B extends C {
3045
3229
  }`
3046
3230
  });
3047
3231
  }
3048
- getCompositeMaterial(e) {
3049
- return new A({
3232
+ getCompositeMaterial(t) {
3233
+ return new M({
3050
3234
  defines: {
3051
- NUM_MIPS: e
3235
+ NUM_MIPS: t
3052
3236
  },
3053
3237
  uniforms: {
3054
3238
  blurTexture1: { value: null },
@@ -3092,70 +3276,74 @@ class B extends C {
3092
3276
  });
3093
3277
  }
3094
3278
  }
3095
- B.BlurDirectionX = new d(1, 0);
3096
- B.BlurDirectionY = new d(0, 1);
3097
- const bo = /* @__PURE__ */ u({
3279
+ N.BlurDirectionX = new f(1, 0);
3280
+ N.BlurDirectionY = new f(0, 1);
3281
+ const Do = /* @__PURE__ */ c({
3098
3282
  __name: "UnrealBloom",
3099
3283
  props: {
3100
3284
  radius: { default: 0 },
3101
3285
  strength: { default: 1 },
3102
3286
  threshold: { default: 0 }
3103
3287
  },
3104
- setup(r, { expose: e }) {
3105
- const t = r, { sizes: o } = y(), { pass: s } = N(() => new B(
3106
- new d(o.width.value, o.height.value),
3107
- t.radius,
3108
- t.strength,
3109
- t.threshold
3110
- ), t);
3111
- return e({ pass: s }), x(() => {
3288
+ setup(i, { expose: t }) {
3289
+ const e = i, { sizes: o } = G(), { pass: s } = W(() => new N(
3290
+ new f(o.width.value, o.height.value),
3291
+ e.radius,
3292
+ e.strength,
3293
+ e.threshold
3294
+ ), e);
3295
+ return t({ pass: s }), S(() => {
3112
3296
  var a;
3113
- s.value.radius = t.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3114
- }), x(() => {
3297
+ s.value.radius = e.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
3298
+ }), S(() => {
3115
3299
  var a;
3116
- s.value.strength = t.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3117
- }), x(() => {
3300
+ s.value.strength = e.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3301
+ }), S(() => {
3118
3302
  var a;
3119
- s.value.threshold = t.threshold ?? ((a = Ie.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3303
+ s.value.threshold = e.threshold ?? ((a = Ke.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
3120
3304
  }), () => {
3121
3305
  };
3122
3306
  }
3123
3307
  });
3124
3308
  export {
3125
- qt as BarrelBlurPmndrs,
3126
- Ht as BloomPmndrs,
3127
- fo as BrightnessContrastPmndrs,
3128
- Kt as ChromaticAberrationPmndrs,
3129
- $t as ColorAveragePmndrs,
3130
- lo as ColorDepthPmndrs,
3131
- Xt as DepthOfFieldPmndrs,
3132
- io as DepthPickingPassPmndrs,
3133
- so as DotScreenPmndrs,
3134
- ho as EffectComposer,
3135
- Gt as EffectComposerPmndrs,
3136
- co as FishEyePmndrs,
3137
- po as Glitch,
3138
- It as GlitchPmndrs,
3139
- no as GodRaysPmndrs,
3140
- uo as GridPmndrs,
3141
- mo as Halftone,
3142
- Jt as HueSaturationPmndrs,
3143
- _t as KuwaharaPmndrs,
3144
- eo as LensDistortionPmndrs,
3145
- ro as LinocutPmndrs,
3146
- jt as NoisePmndrs,
3147
- Vt as OutlinePmndrs,
3148
- go as Output,
3149
- vo as Pixelation,
3150
- Yt as PixelationPmndrs,
3151
- xo as SMAA,
3152
- Zt as ScanlinePmndrs,
3153
- ao as SepiaPmndrs,
3154
- to as ShockWavePmndrs,
3155
- oo as TiltShiftPmndrs,
3156
- Qt as ToneMappingPmndrs,
3157
- bo as UnrealBloom,
3158
- kt as VignettePmndrs,
3159
- N as useEffect,
3160
- p as useEffectPmndrs
3309
+ Ao as ASCIIPmndrs,
3310
+ $t as BarrelBlurPmndrs,
3311
+ kt as BloomPmndrs,
3312
+ xo as BrightnessContrastPmndrs,
3313
+ to as ChromaticAberrationPmndrs,
3314
+ ro as ColorAveragePmndrs,
3315
+ mo as ColorDepthPmndrs,
3316
+ qt as DepthOfFieldPmndrs,
3317
+ ho as DepthPickingPassPmndrs,
3318
+ uo as DotScreenPmndrs,
3319
+ yo as EffectComposer,
3320
+ Yt as EffectComposerPmndrs,
3321
+ wo as FXAAPmndrs,
3322
+ go as FishEyePmndrs,
3323
+ Mo as Glitch,
3324
+ Qt as GlitchPmndrs,
3325
+ po as GodRaysPmndrs,
3326
+ vo as GridPmndrs,
3327
+ To as Halftone,
3328
+ oo as HueSaturationPmndrs,
3329
+ ao as KuwaharaPmndrs,
3330
+ io as LensDistortionPmndrs,
3331
+ fo as LinocutPmndrs,
3332
+ Kt as NoisePmndrs,
3333
+ Jt as OutlinePmndrs,
3334
+ Eo as Output,
3335
+ Co as Pixelation,
3336
+ Zt as PixelationPmndrs,
3337
+ Po as SMAA,
3338
+ bo as SMAAPmndrs,
3339
+ so as ScanlinePmndrs,
3340
+ co as SepiaPmndrs,
3341
+ no as ShockWavePmndrs,
3342
+ So as TexturePmndrs,
3343
+ lo as TiltShiftPmndrs,
3344
+ eo as ToneMappingPmndrs,
3345
+ Do as UnrealBloom,
3346
+ _t as VignettePmndrs,
3347
+ W as useEffect,
3348
+ h as useEffectPmndrs
3161
3349
  };