@tresjs/post-processing 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,58 +1,58 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v2.1.0
3
+ * version: v2.2.0
4
4
  * (c) 2025
5
5
  * description: Post-processing library for TresJS
6
6
  * author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
7
7
  */
8
- import { watch as C, defineComponent as c, shallowRef as z, provide as Ce, computed as F, onUnmounted as V, renderSlot as Ee, inject as De, watchEffect as v, nextTick as Pe } from "vue";
9
- import { EffectComposer as oe, RenderPass as We, NormalPass as Ue, DepthDownsamplingPass as He, EffectPass as Ge, BloomEffect as ae, DepthOfFieldEffect as se, GlitchEffect as Y, GlitchMode as Xe, NoiseEffect as re, OutlineEffect as ie, PixelationEffect as ne, VignetteEffect as le, Effect as Z, BlendFunction as _, ToneMappingEffect as ue, ChromaticAberrationEffect as q, HueSaturationEffect as ce, ScanlineEffect as k, ColorAverageEffect as Q, LensDistortionEffect as de, ShockWaveEffect as fe, TiltShiftEffect as he, DotScreenEffect as pe, SepiaEffect as me } from "postprocessing";
10
- import { useTresContext as A, useLoop as W, normalizeColor as K } from "@tresjs/core";
11
- import { HalfFloatType as w, Uniform as E, Vector2 as d, Vector3 as P, OrthographicCamera as Ie, BufferGeometry as je, Float32BufferAttribute as ge, Mesh as Ve, ShaderMaterial as S, UniformsUtils as M, WebGLRenderTarget as D, NoBlending as Ye, Clock as qe, Color as j, MathUtils as b, DataTexture as ke, RedFormat as Qe, FloatType as Ke, MeshNormalMaterial as Je, NearestFilter as O, DepthTexture as Ze, Vector4 as _e, RawShaderMaterial as $e, ColorManagement as et, SRGBTransfer as tt, LinearToneMapping as ot, ReinhardToneMapping as at, CineonToneMapping as st, ACESFilmicToneMapping as rt, AgXToneMapping as it, NeutralToneMapping as nt, Texture as ve, LinearFilter as lt, AdditiveBlending as ut, MeshBasicMaterial as ct } from "three";
12
- import { useDevicePixelRatio as Le } from "@vueuse/core";
13
- const Oe = /([^[.\]])+/g, dt = (r, e) => {
14
- if (!e)
8
+ import { watch as w, defineComponent as u, shallowRef as z, provide as Ne, computed as L, onUnmounted as W, renderSlot as ze, inject as oe, watchEffect as v, nextTick as se, toRaw as ne } from "vue";
9
+ import { EffectComposer as le, RenderPass as je, NormalPass as Ve, DepthDownsamplingPass as Ye, EffectPass as ke, BloomEffect as ue, DepthOfFieldEffect as ce, GlitchEffect as K, GlitchMode as qe, NoiseEffect as de, OutlineEffect as fe, PixelationEffect as he, VignetteEffect as pe, Effect as k, BlendFunction as q, ToneMappingEffect as me, ChromaticAberrationEffect as J, HueSaturationEffect as ge, ScanlineEffect as Z, ColorAverageEffect as _, LensDistortionEffect as ve, ShockWaveEffect as xe, TiltShiftEffect as be, DotScreenEffect as Se, SepiaEffect as we, DepthPickingPass as Qe, GodRaysEffect as $, ColorDepthEffect as X, GridEffect as Ae, BrightnessContrastEffect as ye } from "postprocessing";
10
+ import { useTresContext as A, useLoop as U, normalizeColor as ee } from "@tresjs/core";
11
+ import { HalfFloatType as M, Uniform as y, Vector2 as c, Vector3 as P, OrthographicCamera as Ke, BufferGeometry as Je, Float32BufferAttribute as Me, Mesh as Ze, ShaderMaterial as S, UniformsUtils as E, WebGLRenderTarget as D, NoBlending as _e, Clock as $e, Color as Y, MathUtils as b, DataTexture as et, RedFormat as tt, FloatType as ot, MeshNormalMaterial as st, NearestFilter as R, DepthTexture as at, Vector4 as rt, RawShaderMaterial as it, ColorManagement as nt, SRGBTransfer as lt, LinearToneMapping as ut, ReinhardToneMapping as ct, CineonToneMapping as dt, ACESFilmicToneMapping as ft, AgXToneMapping as ht, NeutralToneMapping as pt, CustomToneMapping as mt, Texture as Te, LinearFilter as gt, AdditiveBlending as vt, MeshBasicMaterial as xt } from "three";
12
+ import { useDevicePixelRatio as We } from "@vueuse/core";
13
+ const Ue = /([^[.\]])+/g, bt = (r, t) => {
14
+ if (!t)
15
15
  return;
16
- const t = Array.isArray(e) ? e : e.match(Oe);
17
- return t == null ? void 0 : t.reduce((o, a) => o && o[a], r);
18
- }, xe = (r, e, t) => {
19
- const o = Array.isArray(e) ? e : e.match(Oe);
20
- o && o.reduce((a, s, i) => (a[s] === void 0 && (a[s] = {}), i === o.length - 1 && (a[s] = t), a[s]), r);
21
- }, $ = (r, e) => {
22
- const t = { ...r };
23
- return e.forEach((o) => delete t[o]), t;
24
- }, ee = (r, e, t, o, a = {}) => C(r, (s) => {
16
+ const e = Array.isArray(t) ? t : t.match(Ue);
17
+ return e == null ? void 0 : e.reduce((o, s) => o && o[s], r);
18
+ }, Ce = (r, t, e) => {
19
+ const o = Array.isArray(t) ? t : t.match(Ue);
20
+ o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = e), s[a]), r);
21
+ }, ae = (r, t) => {
22
+ const e = { ...r };
23
+ return t.forEach((o) => delete e[o]), e;
24
+ }, Q = (r, t, e, o, s = {}) => w(r, (a) => {
25
25
  var i;
26
- if (e.value)
27
- if (s === void 0) {
26
+ if (t.value)
27
+ if (a === void 0) {
28
28
  const n = o();
29
- xe(e.value, t, dt(n, t)), (i = n.dispose) == null || i.call(n);
29
+ Ce(t.value, e, bt(n, e)), (i = n.dispose) == null || i.call(n);
30
30
  } else
31
- xe(e.value, t, r());
32
- }, a), g = (r, e, t) => r.map(([o, a]) => ee(
31
+ Ce(t.value, e, r());
32
+ }, s), p = (r, t, e) => r.map(([o, s]) => Q(
33
33
  o,
34
- e,
35
- a,
36
- t
37
- )), U = (r, e, t) => Object.keys(r).map((o) => ee(
34
+ t,
35
+ s,
36
+ e
37
+ )), G = (r, t, e) => Object.keys(r).map((o) => Q(
38
38
  () => r[o],
39
- e,
39
+ t,
40
40
  o,
41
- t
41
+ e
42
42
  ));
43
- class be {
43
+ class Ee {
44
44
  static isWebGL2Available() {
45
45
  try {
46
- const e = document.createElement("canvas");
47
- return !!(window.WebGL2RenderingContext && e.getContext("webgl2"));
46
+ const t = document.createElement("canvas");
47
+ return !!(window.WebGL2RenderingContext && t.getContext("webgl2"));
48
48
  } catch {
49
49
  return !1;
50
50
  }
51
51
  }
52
- static isColorSpaceAvailable(e) {
52
+ static isColorSpaceAvailable(t) {
53
53
  try {
54
- const t = document.createElement("canvas"), o = window.WebGL2RenderingContext && t.getContext("webgl2");
55
- return o.drawingBufferColorSpace = e, o.drawingBufferColorSpace === e;
54
+ const e = document.createElement("canvas"), o = window.WebGL2RenderingContext && e.getContext("webgl2");
55
+ return o.drawingBufferColorSpace = t, o.drawingBufferColorSpace === t;
56
56
  } catch {
57
57
  return !1;
58
58
  }
@@ -60,24 +60,24 @@ class be {
60
60
  static getWebGL2ErrorMessage() {
61
61
  return this.getErrorMessage(2);
62
62
  }
63
- static getErrorMessage(e) {
64
- const t = {
63
+ static getErrorMessage(t) {
64
+ const e = {
65
65
  1: "WebGL",
66
66
  2: "WebGL 2"
67
67
  }, o = {
68
68
  1: window.WebGLRenderingContext,
69
69
  2: window.WebGL2RenderingContext
70
70
  };
71
- let a = 'Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';
72
- const s = document.createElement("div");
73
- return s.id = "webglmessage", s.style.fontFamily = "monospace", s.style.fontSize = "13px", s.style.fontWeight = "normal", s.style.textAlign = "center", s.style.background = "#fff", s.style.color = "#000", s.style.padding = "1.5em", s.style.width = "400px", s.style.margin = "5em auto 0", o[e] ? a = a.replace("$0", "graphics card") : a = a.replace("$0", "browser"), a = a.replace("$1", t[e]), s.innerHTML = a, s;
71
+ let s = 'Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';
72
+ const a = document.createElement("div");
73
+ return a.id = "webglmessage", a.style.fontFamily = "monospace", a.style.fontSize = "13px", a.style.fontWeight = "normal", a.style.textAlign = "center", a.style.background = "#fff", a.style.color = "#000", a.style.padding = "1.5em", a.style.width = "400px", a.style.margin = "5em auto 0", o[t] ? s = s.replace("$0", "graphics card") : s = s.replace("$0", "browser"), s = s.replace("$1", e[t]), a.innerHTML = s, a;
74
74
  }
75
75
  // @deprecated, r168
76
76
  static isWebGLAvailable() {
77
77
  console.warn("isWebGLAvailable() has been deprecated and will be removed in r178. Use isWebGL2Available() instead.");
78
78
  try {
79
- const e = document.createElement("canvas");
80
- return !!(window.WebGLRenderingContext && (e.getContext("webgl") || e.getContext("experimental-webgl")));
79
+ const t = document.createElement("canvas");
80
+ return !!(window.WebGLRenderingContext && (t.getContext("webgl") || t.getContext("experimental-webgl")));
81
81
  } catch {
82
82
  return !1;
83
83
  }
@@ -86,7 +86,7 @@ class be {
86
86
  return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."), this.getErrorMessage(1);
87
87
  }
88
88
  }
89
- const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
89
+ const re = Symbol("effectComposerPmndrs"), Ut = /* @__PURE__ */ u({
90
90
  __name: "EffectComposerPmndrs",
91
91
  props: {
92
92
  enabled: { type: Boolean, default: !0 },
@@ -96,65 +96,65 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
96
96
  resolutionScale: {},
97
97
  autoClear: { type: Boolean, default: !0 },
98
98
  multisampling: { default: 0 },
99
- frameBufferType: { default: w }
99
+ frameBufferType: { default: M }
100
100
  },
101
101
  emits: ["render"],
102
- setup(r, { expose: e, emit: t }) {
103
- const o = r, a = t, { scene: s, camera: i, renderer: n, sizes: l, render: x } = A(), u = z(null);
104
- let p = null, f = null;
105
- Ce(Re, u), e({ composer: u });
106
- const y = () => {
107
- u.value && (f = new Ue(s.value, i.value), f.enabled = !1, u.value.addPass(f), o.resolutionScale !== void 0 && be.isWebGL2Available() && (p = new He({
108
- normalBuffer: f.texture,
102
+ setup(r, { expose: t, emit: e }) {
103
+ const o = r, s = e, { scene: a, camera: i, renderer: n, sizes: l, render: x } = A(), d = z(null);
104
+ let m = null, h = null;
105
+ Ne(re, d), t({ composer: d });
106
+ const C = () => {
107
+ d.value && (h = new Ve(a.value, i.value), h.enabled = !1, d.value.addPass(h), o.resolutionScale !== void 0 && Ee.isWebGL2Available() && (m = new Ye({
108
+ normalBuffer: h.texture,
109
109
  resolutionScale: o.resolutionScale
110
- }), p.enabled = !1, u.value.addPass(p)));
111
- }, H = F(() => {
112
- const m = new oe(), N = {
113
- depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : m.inputBuffer.depthBuffer,
114
- stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : m.inputBuffer.stencilBuffer,
115
- multisampling: be.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : m.multisampling : 0,
116
- frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : w
110
+ }), m.enabled = !1, d.value.addPass(m)));
111
+ }, H = L(() => {
112
+ const g = new le(), N = {
113
+ depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : g.inputBuffer.depthBuffer,
114
+ stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : g.inputBuffer.stencilBuffer,
115
+ multisampling: Ee.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : g.multisampling : 0,
116
+ frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : M
117
117
  };
118
- return m.dispose(), N;
119
- }), te = () => {
120
- var m;
121
- !n.value && !s.value && !i.value || ((m = u.value) == null || m.dispose(), u.value = new oe(n.value, H.value), u.value.addPass(new We(s.value, i.value)), o.disableNormalPass || y());
118
+ return g.dispose(), N;
119
+ }), ie = () => {
120
+ var g;
121
+ !n.value && !a.value && !i.value || ((g = d.value) == null || g.dispose(), d.value = new le(n.value, H.value), d.value.addPass(new je(a.value, i.value)), o.disableNormalPass || C());
122
122
  };
123
- C([n, s, i, () => o.disableNormalPass], () => {
124
- !l.width.value || !l.height.value || te();
125
- }), C(() => [l.width.value, l.height.value], ([m, N]) => {
126
- !m && !N || (u.value ? u.value.setSize(m, N) : te());
123
+ w([n, a, i, () => o.disableNormalPass], () => {
124
+ !l.width.value || !l.height.value || ie();
125
+ }), w(() => [l.width.value, l.height.value], ([g, N]) => {
126
+ !g && !N || (d.value ? d.value.setSize(g, N) : ie());
127
127
  }, {
128
128
  immediate: !0
129
129
  });
130
- const { render: Fe } = W();
131
- return Fe(() => {
132
- if (o.enabled && n.value && u.value && l.width.value && l.height.value && x.frames.value > 0) {
133
- const m = n.value.autoClear;
134
- n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), u.value.render(), a("render", u.value), n.value.autoClear = m;
130
+ const { render: Ie } = U();
131
+ return Ie(() => {
132
+ if (o.enabled && n.value && d.value && l.width.value && l.height.value && x.frames.value > 0) {
133
+ const g = n.value.autoClear;
134
+ n.value.autoClear = o.autoClear, o.stencilBuffer && !o.autoClear && n.value.clearStencil(), d.value.render(), s("render", d.value), n.value.autoClear = g;
135
135
  }
136
136
  x.frames.value = x.mode.value === "always" ? 1 : Math.max(0, x.frames.value - 1);
137
- }), V(() => {
138
- var m;
139
- (m = u.value) == null || m.dispose();
140
- }), (m, N) => Ee(m.$slots, "default");
141
- }
142
- }), h = (r, e) => {
143
- const t = De(Re), o = z(null), a = z(null), { scene: s, camera: i, invalidate: n } = A();
144
- e && C(e, () => n()), v(() => {
145
- !i.value || !(a != null && a.value) || (a.value.mainCamera = i.value);
137
+ }), W(() => {
138
+ var g;
139
+ (g = d.value) == null || g.dispose();
140
+ }), (g, N) => ze(g.$slots, "default");
141
+ }
142
+ }), f = (r, t) => {
143
+ const e = oe(re), o = z(null), s = z(null), { scene: a, camera: i, invalidate: n } = A();
144
+ t && w(t, () => n()), v(() => {
145
+ !i.value || !(s != null && s.value) || (s.value.mainCamera = i.value);
146
146
  });
147
147
  const l = v(() => {
148
- !i.value || !(t != null && t.value) || !s.value || (Pe(() => l()), !a.value && (a.value = r(), o.value = new Ge(i.value, a.value), t.value.addPass(o.value)));
148
+ !i.value || !(e != null && e.value) || !a.value || (se(() => l()), !s.value && (s.value = r(), o.value = new ke(i.value, s.value), e.value.addPass(o.value)));
149
149
  });
150
- return V(() => {
151
- var x, u, p;
152
- o.value && ((x = t == null ? void 0 : t.value) == null || x.removePass(o.value)), (u = a.value) == null || u.dispose(), (p = o.value) == null || p.dispose();
150
+ return W(() => {
151
+ var x, d, m;
152
+ o.value && ((x = e == null ? void 0 : e.value) == null || x.removePass(o.value)), (d = s.value) == null || d.dispose(), (m = o.value) == null || m.dispose();
153
153
  }), {
154
154
  pass: o,
155
- effect: a
155
+ effect: s
156
156
  };
157
- }, Ot = /* @__PURE__ */ c({
157
+ }, Gt = /* @__PURE__ */ u({
158
158
  __name: "BloomPmndrs",
159
159
  props: {
160
160
  blendFunction: {},
@@ -164,22 +164,22 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
164
164
  luminanceSmoothing: {},
165
165
  mipmapBlur: { type: Boolean, default: void 0 }
166
166
  },
167
- setup(r, { expose: e }) {
168
- const t = r, { pass: o, effect: a } = h(() => new ae(t), t);
169
- return e({ pass: o, effect: a }), g(
167
+ setup(r, { expose: t }) {
168
+ const e = r, { pass: o, effect: s } = f(() => new ue(e), e);
169
+ return t({ pass: o, effect: s }), p(
170
170
  [
171
171
  // blendFunction is not updated, because it has no setter in BloomEffect
172
- [() => t.intensity, "intensity"],
173
- [() => t.kernelSize, "kernelSize"],
174
- [() => t.luminanceSmoothing, "luminanceMaterial.smoothing"],
175
- [() => t.luminanceThreshold, "luminanceMaterial.threshold"]
172
+ [() => e.intensity, "intensity"],
173
+ [() => e.kernelSize, "kernelSize"],
174
+ [() => e.luminanceSmoothing, "luminanceMaterial.smoothing"],
175
+ [() => e.luminanceThreshold, "luminanceMaterial.threshold"]
176
176
  ],
177
- a,
178
- () => new ae()
177
+ s,
178
+ () => new ue()
179
179
  ), () => {
180
180
  };
181
181
  }
182
- }), Rt = /* @__PURE__ */ c({
182
+ }), Ht = /* @__PURE__ */ u({
183
183
  __name: "DepthOfFieldPmndrs",
184
184
  props: {
185
185
  blendFunction: {},
@@ -192,26 +192,26 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
192
192
  resolutionX: {},
193
193
  resolutionY: {}
194
194
  },
195
- setup(r, { expose: e }) {
196
- const t = r, { camera: o } = A(), { pass: a, effect: s } = h(() => new se(o.value, t), t);
197
- return e({ pass: a, effect: s }), g(
195
+ setup(r, { expose: t }) {
196
+ const e = r, { camera: o } = A(), { pass: s, effect: a } = f(() => new ce(o.value, e), e);
197
+ return t({ pass: s, effect: a }), p(
198
198
  [
199
199
  // blendFunction is not updated, because it has no setter in BloomEffect
200
- [() => t.worldFocusDistance, "circleOfConfusionMaterial.worldFocusDistance"],
201
- [() => t.focusDistance, "circleOfConfusionMaterial.focusDistance"],
202
- [() => t.worldFocusRange, "circleOfConfusionMaterial.worldFocusRange"],
203
- [() => t.focusRange, "circleOfConfusionMaterial.focusRange"],
204
- [() => t.bokehScale, "bokehScale"],
205
- [() => t.resolutionScale, "blurPass.resolution.scale"],
206
- [() => t.resolutionX, "resolution.width"],
207
- [() => t.resolutionY, "resolution.height"]
200
+ [() => e.worldFocusDistance, "circleOfConfusionMaterial.worldFocusDistance"],
201
+ [() => e.focusDistance, "circleOfConfusionMaterial.focusDistance"],
202
+ [() => e.worldFocusRange, "circleOfConfusionMaterial.worldFocusRange"],
203
+ [() => e.focusRange, "circleOfConfusionMaterial.focusRange"],
204
+ [() => e.bokehScale, "bokehScale"],
205
+ [() => e.resolutionScale, "blurPass.resolution.scale"],
206
+ [() => e.resolutionX, "resolution.width"],
207
+ [() => e.resolutionY, "resolution.height"]
208
208
  ],
209
- s,
210
- () => new se()
209
+ a,
210
+ () => new ce()
211
211
  ), () => {
212
212
  };
213
213
  }
214
- }), Bt = /* @__PURE__ */ c({
214
+ }), Xt = /* @__PURE__ */ u({
215
215
  __name: "GlitchPmndrs",
216
216
  props: {
217
217
  blendFunction: {},
@@ -226,43 +226,43 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
226
226
  perturbationMap: {},
227
227
  dtSize: {}
228
228
  },
229
- setup(r, { expose: e }) {
230
- const t = r, { pass: o, effect: a } = h(() => new Y(t), t);
231
- e({ pass: o, effect: a });
232
- const { onBeforeRender: s } = W();
233
- return s(({ invalidate: i }) => i()), v(() => {
229
+ setup(r, { expose: t }) {
230
+ const e = r, { pass: o, effect: s } = f(() => new K(e), e);
231
+ t({ pass: o, effect: s });
232
+ const { onBeforeRender: a } = U();
233
+ return a(({ invalidate: i }) => i()), v(() => {
234
234
  const i = () => {
235
- if (t.mode !== void 0)
236
- return t.active === !1 ? Xe.DISABLED : t.mode;
237
- const n = new Y(), l = n.mode;
235
+ if (e.mode !== void 0)
236
+ return e.active === !1 ? qe.DISABLED : e.mode;
237
+ const n = new K(), l = n.mode;
238
238
  return n.dispose(), l;
239
239
  };
240
- a.value && (a.value.mode = i());
241
- }), U(
242
- $(t, ["active", "mode", "blendFunction"]),
243
- a,
244
- () => new Y()
240
+ s.value && (s.value.mode = i());
241
+ }), G(
242
+ ae(e, ["active", "mode", "blendFunction"]),
243
+ s,
244
+ () => new K()
245
245
  ), () => {
246
246
  };
247
247
  }
248
- }), Nt = /* @__PURE__ */ c({
248
+ }), It = /* @__PURE__ */ u({
249
249
  __name: "NoisePmndrs",
250
250
  props: {
251
251
  premultiply: { type: Boolean, default: void 0 },
252
252
  blendFunction: {}
253
253
  },
254
- setup(r, { expose: e }) {
255
- const t = r, { pass: o, effect: a } = h(() => new re(t), t);
256
- e({ pass: o, effect: a });
257
- const { onBeforeRender: s } = W();
258
- return s(({ invalidate: i }) => i()), U(
259
- $(t, ["blendFunction"]),
260
- a,
261
- () => new re()
254
+ setup(r, { expose: t }) {
255
+ const e = r, { pass: o, effect: s } = f(() => new de(e), e);
256
+ t({ pass: o, effect: s });
257
+ const { onBeforeRender: a } = U();
258
+ return a(({ invalidate: i }) => i()), G(
259
+ ae(e, ["blendFunction"]),
260
+ s,
261
+ () => new de()
262
262
  ), () => {
263
263
  };
264
264
  }
265
- }), zt = /* @__PURE__ */ c({
265
+ }), jt = /* @__PURE__ */ u({
266
266
  __name: "OutlinePmndrs",
267
267
  props: {
268
268
  outlinedObjects: {},
@@ -281,39 +281,39 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
281
281
  hiddenEdgeColor: {},
282
282
  visibleEdgeColor: {}
283
283
  },
284
- setup(r, { expose: e }) {
285
- const t = r, o = (u) => u !== void 0 ? K(u).getHex() : void 0, { camera: a, scene: s } = A(), i = {
286
- blur: t.blur,
287
- xRay: t.xRay,
288
- kernelSize: t.kernelSize,
289
- pulseSpeed: t.pulseSpeed,
290
- resolutionX: t.resolutionX,
291
- resolutionY: t.resolutionY,
292
- patternScale: t.patternScale,
293
- edgeStrength: t.edgeStrength,
294
- blendFunction: t.blendFunction,
295
- multisampling: t.multisampling,
296
- patternTexture: t.patternTexture,
297
- resolutionScale: t.resolutionScale,
298
- hiddenEdgeColor: o(t.hiddenEdgeColor),
299
- visibleEdgeColor: o(t.visibleEdgeColor)
300
- }, { pass: n, effect: l } = h(() => new ie(s.value, a.value, i), t);
301
- e({ pass: n, effect: l }), C(
302
- [() => t.outlinedObjects, l],
284
+ setup(r, { expose: t }) {
285
+ const e = r, o = (d) => d !== void 0 ? ee(d).getHex() : void 0, { camera: s, scene: a } = A(), i = {
286
+ blur: e.blur,
287
+ xRay: e.xRay,
288
+ kernelSize: e.kernelSize,
289
+ pulseSpeed: e.pulseSpeed,
290
+ resolutionX: e.resolutionX,
291
+ resolutionY: e.resolutionY,
292
+ patternScale: e.patternScale,
293
+ edgeStrength: e.edgeStrength,
294
+ blendFunction: e.blendFunction,
295
+ multisampling: e.multisampling,
296
+ patternTexture: e.patternTexture,
297
+ resolutionScale: e.resolutionScale,
298
+ hiddenEdgeColor: o(e.hiddenEdgeColor),
299
+ visibleEdgeColor: o(e.visibleEdgeColor)
300
+ }, { pass: n, effect: l } = f(() => new fe(a.value, s.value, i), e);
301
+ t({ pass: n, effect: l }), w(
302
+ [() => e.outlinedObjects, l],
303
303
  // watchEffect is intentionally not used here as it would result in an endless loop
304
304
  () => {
305
- var u;
306
- (u = l.value) == null || u.selection.set(t.outlinedObjects || []);
305
+ var d;
306
+ (d = l.value) == null || d.selection.set(e.outlinedObjects || []);
307
307
  },
308
308
  {
309
309
  immediate: !0
310
310
  }
311
311
  );
312
- const x = F(() => ({
313
- hiddenEdgeColor: t.hiddenEdgeColor ? K(t.hiddenEdgeColor) : void 0,
314
- visibleEdgeColor: t.visibleEdgeColor ? K(t.visibleEdgeColor) : void 0
312
+ const x = L(() => ({
313
+ hiddenEdgeColor: e.hiddenEdgeColor ? ee(e.hiddenEdgeColor) : void 0,
314
+ visibleEdgeColor: e.visibleEdgeColor ? ee(e.visibleEdgeColor) : void 0
315
315
  }));
316
- return g(
316
+ return p(
317
317
  [
318
318
  /* some properties are not updated because of different reasons:
319
319
  resolutionX - has no setter in OutlineEffect
@@ -322,36 +322,36 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
322
322
  patternTexture - different type in constructor and in setter
323
323
  resolutionScale - has no setter in OutlineEffect
324
324
  */
325
- [() => t.blur, "blur"],
326
- [() => t.xRay, "xRay"],
327
- [() => t.pulseSpeed, "pulseSpeed"],
328
- [() => t.kernelSize, "kernelSize"],
329
- [() => t.edgeStrength, "edgeStrength"],
330
- [() => t.patternScale, "patternScale"],
331
- [() => t.multisampling, "multisampling"],
325
+ [() => e.blur, "blur"],
326
+ [() => e.xRay, "xRay"],
327
+ [() => e.pulseSpeed, "pulseSpeed"],
328
+ [() => e.kernelSize, "kernelSize"],
329
+ [() => e.edgeStrength, "edgeStrength"],
330
+ [() => e.patternScale, "patternScale"],
331
+ [() => e.multisampling, "multisampling"],
332
332
  [() => x.value.hiddenEdgeColor, "hiddenEdgeColor"],
333
333
  [() => x.value.visibleEdgeColor, "visibleEdgeColor"]
334
334
  ],
335
335
  l,
336
- () => new ie()
336
+ () => new fe()
337
337
  ), () => {
338
338
  };
339
339
  }
340
- }), Ft = /* @__PURE__ */ c({
340
+ }), Vt = /* @__PURE__ */ u({
341
341
  __name: "PixelationPmndrs",
342
342
  props: {
343
343
  granularity: {}
344
344
  },
345
- setup(r, { expose: e }) {
346
- const t = r, { pass: o, effect: a } = h(() => new ne(t.granularity), t);
347
- return e({ pass: o, effect: a }), U(
348
- t,
349
- a,
350
- () => new ne()
345
+ setup(r, { expose: t }) {
346
+ const e = r, { pass: o, effect: s } = f(() => new he(e.granularity), e);
347
+ return t({ pass: o, effect: s }), G(
348
+ e,
349
+ s,
350
+ () => new he()
351
351
  ), () => {
352
352
  };
353
353
  }
354
- }), Wt = /* @__PURE__ */ c({
354
+ }), Yt = /* @__PURE__ */ u({
355
355
  __name: "VignettePmndrs",
356
356
  props: {
357
357
  technique: {},
@@ -359,17 +359,17 @@ const Re = Symbol("effectComposerPmndrs"), Lt = /* @__PURE__ */ c({
359
359
  offset: {},
360
360
  darkness: {}
361
361
  },
362
- setup(r, { expose: e }) {
363
- const t = r, { pass: o, effect: a } = h(() => new le(t), t);
364
- return e({ pass: o, effect: a }), U(
365
- $(t, ["blendFunction"]),
366
- a,
367
- () => new le()
362
+ setup(r, { expose: t }) {
363
+ const e = r, { pass: o, effect: s } = f(() => new pe(e), e);
364
+ return t({ pass: o, effect: s }), G(
365
+ ae(e, ["blendFunction"]),
366
+ s,
367
+ () => new pe()
368
368
  ), () => {
369
369
  };
370
370
  }
371
371
  });
372
- class Se extends Z {
372
+ class De extends k {
373
373
  /**
374
374
  * Creates a new BarrelBlurEffect instance.
375
375
  *
@@ -379,7 +379,7 @@ class Se extends Z {
379
379
  * @param {Vector2} [options.offset] - Offset of the barrel distortion center (0 to 1 for both x and y). This allows you to change the position of the distortion effect.
380
380
  *
381
381
  */
382
- constructor({ blendFunction: e = _.NORMAL, amount: t = 0.15, offset: o = new d(0.5, 0.5) } = {}) {
382
+ constructor({ blendFunction: t = q.NORMAL, amount: e = 0.15, offset: o = new c(0.5, 0.5) } = {}) {
383
383
  super("BarrelBlurEffect", `
384
384
  uniform float amount;
385
385
  uniform vec2 offset;
@@ -425,11 +425,11 @@ class Se extends Z {
425
425
  outputColor = vec4(outcol, inputColor.a); // Preserves original alpha
426
426
  }
427
427
  `, {
428
- blendFunction: e,
428
+ blendFunction: t,
429
429
  uniforms: /* @__PURE__ */ new Map([
430
- ["amount", new E(t)],
430
+ ["amount", new y(e)],
431
431
  // Uniform controlling the intensity of distortion
432
- ["offset", new E(o)]
432
+ ["offset", new y(o)]
433
433
  // Uniform controlling the offset of distortion
434
434
  ])
435
435
  });
@@ -440,11 +440,11 @@ class Se extends Z {
440
440
  * @type {number}
441
441
  */
442
442
  get amount() {
443
- var e;
444
- return (e = this.uniforms.get("amount")) == null ? void 0 : e.value;
443
+ var t;
444
+ return (t = this.uniforms.get("amount")) == null ? void 0 : t.value;
445
445
  }
446
- set amount(e) {
447
- this.uniforms.get("amount").value = e;
446
+ set amount(t) {
447
+ this.uniforms.get("amount").value = t;
448
448
  }
449
449
  /**
450
450
  * The offset.
@@ -452,40 +452,40 @@ class Se extends Z {
452
452
  * @type {Vector2}
453
453
  */
454
454
  get offset() {
455
- var e;
456
- return (e = this.uniforms.get("offset")) == null ? void 0 : e.value;
455
+ var t;
456
+ return (t = this.uniforms.get("offset")) == null ? void 0 : t.value;
457
457
  }
458
- set offset(e) {
459
- this.uniforms.get("offset").value = e;
458
+ set offset(t) {
459
+ this.uniforms.get("offset").value = t;
460
460
  }
461
461
  }
462
- const Ut = /* @__PURE__ */ c({
462
+ const kt = /* @__PURE__ */ u({
463
463
  __name: "BarrelBlurPmndrs",
464
464
  props: {
465
465
  blendFunction: {},
466
466
  amount: {},
467
467
  offset: {}
468
468
  },
469
- setup(r, { expose: e }) {
470
- const t = r, { pass: o, effect: a } = h(
471
- () => new Se({
472
- ...t,
473
- offset: Array.isArray(t.offset) ? new d(...t.offset) : t.offset
469
+ setup(r, { expose: t }) {
470
+ const e = r, { pass: o, effect: s } = f(
471
+ () => new De({
472
+ ...e,
473
+ offset: Array.isArray(e.offset) ? new c(...e.offset) : e.offset
474
474
  }),
475
- t
475
+ e
476
476
  );
477
- return e({ pass: o, effect: a }), g(
477
+ return t({ pass: o, effect: s }), p(
478
478
  [
479
- [() => t.blendFunction, "blendMode.blendFunction"],
480
- [() => t.amount, "amount"],
481
- [() => t.offset, "offset"]
479
+ [() => e.blendFunction, "blendMode.blendFunction"],
480
+ [() => e.amount, "amount"],
481
+ [() => e.offset, "offset"]
482
482
  ],
483
- a,
484
- () => new Se()
483
+ s,
484
+ () => new De()
485
485
  ), () => {
486
486
  };
487
487
  }
488
- }), Ht = /* @__PURE__ */ c({
488
+ }), qt = /* @__PURE__ */ u({
489
489
  __name: "ToneMappingPmndrs",
490
490
  props: {
491
491
  mode: {},
@@ -496,24 +496,24 @@ const Ut = /* @__PURE__ */ c({
496
496
  minLuminance: {},
497
497
  whitePoint: {}
498
498
  },
499
- setup(r, { expose: e }) {
500
- const t = r, { pass: o, effect: a } = h(() => new ue(t), t);
501
- return e({ pass: o, effect: a }), g(
499
+ setup(r, { expose: t }) {
500
+ const e = r, { pass: o, effect: s } = f(() => new me(e), e);
501
+ return t({ pass: o, effect: s }), p(
502
502
  [
503
- [() => t.mode, "mode"],
504
- [() => t.blendFunction, "blendMode.blendFunction"],
505
- [() => t.resolution, "resolution"],
506
- [() => t.averageLuminance, "averageLuminance"],
507
- [() => t.middleGrey, "middleGrey"],
508
- [() => t.minLuminance, "adaptiveLuminanceMaterial.minLuminance"],
509
- [() => t.whitePoint, "whitePoint"]
503
+ [() => e.mode, "mode"],
504
+ [() => e.blendFunction, "blendMode.blendFunction"],
505
+ [() => e.resolution, "resolution"],
506
+ [() => e.averageLuminance, "averageLuminance"],
507
+ [() => e.middleGrey, "middleGrey"],
508
+ [() => e.minLuminance, "adaptiveLuminanceMaterial.minLuminance"],
509
+ [() => e.whitePoint, "whitePoint"]
510
510
  ],
511
- a,
512
- () => new ue()
511
+ s,
512
+ () => new me()
513
513
  ), () => {
514
514
  };
515
515
  }
516
- }), Gt = /* @__PURE__ */ c({
516
+ }), Qt = /* @__PURE__ */ u({
517
517
  __name: "ChromaticAberrationPmndrs",
518
518
  props: {
519
519
  blendFunction: {},
@@ -521,47 +521,47 @@ const Ut = /* @__PURE__ */ c({
521
521
  radialModulation: { type: Boolean, default: void 0 },
522
522
  modulationOffset: {}
523
523
  },
524
- setup(r, { expose: e }) {
525
- const t = r, o = new q(), { pass: a, effect: s } = h(() => new q({
526
- ...t,
524
+ setup(r, { expose: t }) {
525
+ const e = r, o = new J(), { pass: s, effect: a } = f(() => new J({
526
+ ...e,
527
527
  // Unfortunately, these defaults must be set this way as the type in postprocessing is not correct.
528
528
  // The arguments are optional in the actual constructor, but not in the type.
529
- radialModulation: t.radialModulation ?? o.radialModulation,
530
- modulationOffset: t.modulationOffset ?? o.modulationOffset
531
- }), t);
532
- return o.dispose(), e({ pass: a, effect: s }), g(
529
+ radialModulation: e.radialModulation ?? o.radialModulation,
530
+ modulationOffset: e.modulationOffset ?? o.modulationOffset
531
+ }), e);
532
+ return o.dispose(), t({ pass: s, effect: a }), p(
533
533
  [
534
- [() => t.blendFunction, "blendMode.blendFunction"],
535
- [() => t.offset, "offset"],
536
- [() => t.radialModulation, "radialModulation"],
537
- [() => t.modulationOffset, "modulationOffset"]
534
+ [() => e.blendFunction, "blendMode.blendFunction"],
535
+ [() => e.offset, "offset"],
536
+ [() => e.radialModulation, "radialModulation"],
537
+ [() => e.modulationOffset, "modulationOffset"]
538
538
  ],
539
- s,
540
- () => new q()
539
+ a,
540
+ () => new J()
541
541
  ), () => {
542
542
  };
543
543
  }
544
- }), Xt = /* @__PURE__ */ c({
544
+ }), Kt = /* @__PURE__ */ u({
545
545
  __name: "HueSaturationPmndrs",
546
546
  props: {
547
547
  saturation: {},
548
548
  hue: {},
549
549
  blendFunction: {}
550
550
  },
551
- setup(r, { expose: e }) {
552
- const t = r, { pass: o, effect: a } = h(() => new ce(t), t);
553
- return e({ pass: o, effect: a }), g(
551
+ setup(r, { expose: t }) {
552
+ const e = r, { pass: o, effect: s } = f(() => new ge(e), e);
553
+ return t({ pass: o, effect: s }), p(
554
554
  [
555
- [() => t.blendFunction, "blendMode.blendFunction"],
556
- [() => t.hue, "hue"],
557
- [() => t.saturation, "saturation"]
555
+ [() => e.blendFunction, "blendMode.blendFunction"],
556
+ [() => e.hue, "hue"],
557
+ [() => e.saturation, "saturation"]
558
558
  ],
559
- a,
560
- () => new ce()
559
+ s,
560
+ () => new ge()
561
561
  ), () => {
562
562
  };
563
563
  }
564
- }), It = /* @__PURE__ */ c({
564
+ }), Jt = /* @__PURE__ */ u({
565
565
  __name: "ScanlinePmndrs",
566
566
  props: {
567
567
  blendFunction: {},
@@ -569,25 +569,25 @@ const Ut = /* @__PURE__ */ c({
569
569
  scrollSpeed: {},
570
570
  opacity: {}
571
571
  },
572
- setup(r, { expose: e }) {
573
- const t = r, { pass: o, effect: a } = h(() => new k(t), t);
574
- return e({ pass: o, effect: a }), g(
572
+ setup(r, { expose: t }) {
573
+ const e = r, { pass: o, effect: s } = f(() => new Z(e), e);
574
+ return t({ pass: o, effect: s }), p(
575
575
  [
576
- [() => t.blendFunction, "blendMode.blendFunction"],
577
- [() => t.density, "density"],
578
- [() => t.scrollSpeed, "scrollSpeed"]
576
+ [() => e.blendFunction, "blendMode.blendFunction"],
577
+ [() => e.density, "density"],
578
+ [() => e.scrollSpeed, "scrollSpeed"]
579
579
  ],
580
- a,
581
- () => new k()
582
- ), C(
583
- [() => t.opacity],
580
+ s,
581
+ () => new Z()
582
+ ), w(
583
+ [() => e.opacity],
584
584
  () => {
585
- var s, i;
586
- if (t.opacity !== void 0)
587
- (s = a.value) == null || s.blendMode.setOpacity(t.opacity);
585
+ var a, i;
586
+ if (e.opacity !== void 0)
587
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
588
588
  else {
589
- const n = new k();
590
- (i = a.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
589
+ const n = new Z();
590
+ (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
591
591
  }
592
592
  },
593
593
  {
@@ -596,7 +596,7 @@ const Ut = /* @__PURE__ */ c({
596
596
  ), () => {
597
597
  };
598
598
  }
599
- }), ft = `
599
+ }), St = `
600
600
  uniform float radius;
601
601
  uniform int sectorCount;
602
602
 
@@ -693,7 +693,7 @@ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor)
693
693
  outputColor = vec4(finalColor, inputColor.a);
694
694
  }
695
695
  `;
696
- class Ae extends Z {
696
+ class Pe extends k {
697
697
  /**
698
698
  * Creates a new KuwaharaEffect instance.
699
699
  *
@@ -703,12 +703,12 @@ class Ae extends Z {
703
703
  * @param {number} [options.sectorCount] - Number of sectors.
704
704
  *
705
705
  */
706
- constructor({ blendFunction: e = _.NORMAL, radius: t = 1, sectorCount: o = 4 } = {}) {
707
- super("KuwaharaEffect", ft, {
708
- blendFunction: e,
706
+ constructor({ blendFunction: t = q.NORMAL, radius: e = 1, sectorCount: o = 4 } = {}) {
707
+ super("KuwaharaEffect", St, {
708
+ blendFunction: t,
709
709
  uniforms: /* @__PURE__ */ new Map([
710
- ["radius", new E(t)],
711
- ["sectorCount", new E(o)]
710
+ ["radius", new y(e)],
711
+ ["sectorCount", new y(o)]
712
712
  ])
713
713
  });
714
714
  }
@@ -718,11 +718,11 @@ class Ae extends Z {
718
718
  * @type {number}
719
719
  */
720
720
  get radius() {
721
- var e;
722
- return (e = this.uniforms.get("radius")) == null ? void 0 : e.value;
721
+ var t;
722
+ return (t = this.uniforms.get("radius")) == null ? void 0 : t.value;
723
723
  }
724
- set radius(e) {
725
- this.uniforms.get("radius").value = e;
724
+ set radius(t) {
725
+ this.uniforms.get("radius").value = t;
726
726
  }
727
727
  /**
728
728
  * The sector count.
@@ -730,65 +730,65 @@ class Ae extends Z {
730
730
  * @type {number}
731
731
  */
732
732
  get sectorCount() {
733
- var e;
734
- return (e = this.uniforms.get("sectorCount")) == null ? void 0 : e.value;
733
+ var t;
734
+ return (t = this.uniforms.get("sectorCount")) == null ? void 0 : t.value;
735
735
  }
736
- set sectorCount(e) {
737
- this.uniforms.get("sectorCount").value = e;
736
+ set sectorCount(t) {
737
+ this.uniforms.get("sectorCount").value = t;
738
738
  }
739
739
  }
740
- const jt = /* @__PURE__ */ c({
740
+ const Zt = /* @__PURE__ */ u({
741
741
  __name: "KuwaharaPmndrs",
742
742
  props: {
743
743
  blendFunction: {},
744
744
  radius: {},
745
745
  sectorCount: {}
746
746
  },
747
- setup(r, { expose: e }) {
748
- const t = r, { pass: o, effect: a } = h(
749
- () => new Ae(t),
750
- t
747
+ setup(r, { expose: t }) {
748
+ const e = r, { pass: o, effect: s } = f(
749
+ () => new Pe(e),
750
+ e
751
751
  );
752
- return e({ pass: o, effect: a }), g(
752
+ return t({ pass: o, effect: s }), p(
753
753
  [
754
- [() => t.blendFunction, "blendMode.blendFunction"],
755
- [() => t.radius, "radius"],
756
- [() => t.sectorCount, "sectorCount"]
754
+ [() => e.blendFunction, "blendMode.blendFunction"],
755
+ [() => e.radius, "radius"],
756
+ [() => e.sectorCount, "sectorCount"]
757
757
  ],
758
- a,
759
- () => new Ae()
758
+ s,
759
+ () => new Pe()
760
760
  ), () => {
761
761
  };
762
762
  }
763
- }), Vt = /* @__PURE__ */ c({
763
+ }), _t = /* @__PURE__ */ u({
764
764
  __name: "ColorAveragePmndrs",
765
765
  props: {
766
766
  blendFunction: {},
767
767
  opacity: {}
768
768
  },
769
- setup(r, { expose: e }) {
770
- const t = r, { pass: o, effect: a } = h(() => new Q(t.blendFunction), t);
771
- return e({ pass: o, effect: a }), ee(
772
- () => t.blendFunction,
773
- a,
769
+ setup(r, { expose: t }) {
770
+ const e = r, { pass: o, effect: s } = f(() => new _(e.blendFunction), e);
771
+ return t({ pass: o, effect: s }), Q(
772
+ () => e.blendFunction,
773
+ s,
774
774
  "blendMode.blendFunction",
775
- () => new Q()
776
- ), C(
777
- [a, () => t.opacity],
775
+ () => new _()
776
+ ), w(
777
+ [s, () => e.opacity],
778
778
  () => {
779
- var s, i;
780
- if (a.value)
781
- if (t.opacity !== void 0)
782
- (s = a.value) == null || s.blendMode.setOpacity(t.opacity);
779
+ var a, i;
780
+ if (s.value)
781
+ if (e.opacity !== void 0)
782
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
783
783
  else {
784
- const n = new Q();
785
- (i = a.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
784
+ const n = new _();
785
+ (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
786
786
  }
787
787
  }
788
788
  ), () => {
789
789
  };
790
790
  }
791
- }), Yt = /* @__PURE__ */ c({
791
+ }), $t = /* @__PURE__ */ u({
792
792
  __name: "LensDistortionPmndrs",
793
793
  props: {
794
794
  distortion: {},
@@ -796,24 +796,24 @@ const jt = /* @__PURE__ */ c({
796
796
  focalLength: {},
797
797
  skew: {}
798
798
  },
799
- setup(r, { expose: e }) {
800
- const t = r, { pass: o, effect: a } = h(
801
- () => new de({
802
- ...t,
803
- distortion: t.distortion ? Array.isArray(t.distortion) ? new d(...t.distortion) : t.distortion : new d(),
804
- principalPoint: t.principalPoint ? Array.isArray(t.principalPoint) ? new d(...t.principalPoint) : t.principalPoint : new d(),
805
- focalLength: t.focalLength ? Array.isArray(t.focalLength) ? new d(...t.focalLength) : t.focalLength : new d()
799
+ setup(r, { expose: t }) {
800
+ const e = r, { pass: o, effect: s } = f(
801
+ () => new ve({
802
+ ...e,
803
+ distortion: e.distortion ? Array.isArray(e.distortion) ? new c(...e.distortion) : e.distortion : new c(),
804
+ principalPoint: e.principalPoint ? Array.isArray(e.principalPoint) ? new c(...e.principalPoint) : e.principalPoint : new c(),
805
+ focalLength: e.focalLength ? Array.isArray(e.focalLength) ? new c(...e.focalLength) : e.focalLength : new c()
806
806
  }),
807
- t
807
+ e
808
808
  );
809
- return e({ pass: o, effect: a }), U(
810
- t,
811
- a,
812
- () => new de()
809
+ return t({ pass: o, effect: s }), G(
810
+ e,
811
+ s,
812
+ () => new ve()
813
813
  ), () => {
814
814
  };
815
815
  }
816
- }), qt = /* @__PURE__ */ c({
816
+ }), eo = /* @__PURE__ */ u({
817
817
  __name: "ShockWavePmndrs",
818
818
  props: {
819
819
  position: {},
@@ -822,30 +822,30 @@ const jt = /* @__PURE__ */ c({
822
822
  maxRadius: {},
823
823
  waveSize: {}
824
824
  },
825
- setup(r, { expose: e }) {
826
- const t = r, { camera: o } = A(), { pass: a, effect: s } = h(
827
- () => new fe(o.value, Array.isArray(t.position) ? new P(...t.position) : t.position, t),
828
- t
825
+ setup(r, { expose: t }) {
826
+ const e = r, { camera: o } = A(), { pass: s, effect: a } = f(
827
+ () => new xe(o.value, Array.isArray(e.position) ? new P(...e.position) : e.position, e),
828
+ e
829
829
  );
830
- return e({ pass: a, effect: s }), C(
831
- () => t.position,
830
+ return t({ pass: s, effect: a }), w(
831
+ () => e.position,
832
832
  (i) => {
833
- s.value && (Array.isArray(i) ? s.value.position.set(...i) : i instanceof P && s.value.position.copy(i));
833
+ a.value && (Array.isArray(i) ? a.value.position.set(...i) : i instanceof P && a.value.position.copy(i));
834
834
  },
835
835
  { immediate: !0 }
836
- ), g(
836
+ ), p(
837
837
  [
838
- [() => t.amplitude, "amplitude"],
839
- [() => t.waveSize, "waveSize"],
840
- [() => t.maxRadius, "maxRadius"],
841
- [() => t.speed, "speed"]
838
+ [() => e.amplitude, "amplitude"],
839
+ [() => e.waveSize, "waveSize"],
840
+ [() => e.maxRadius, "maxRadius"],
841
+ [() => e.speed, "speed"]
842
842
  ],
843
- s,
844
- () => new fe()
843
+ a,
844
+ () => new xe()
845
845
  ), () => {
846
846
  };
847
847
  }
848
- }), kt = /* @__PURE__ */ c({
848
+ }), to = /* @__PURE__ */ u({
849
849
  __name: "TiltShiftPmndrs",
850
850
  props: {
851
851
  blendFunction: {},
@@ -858,73 +858,73 @@ const jt = /* @__PURE__ */ c({
858
858
  resolutionX: {},
859
859
  resolutionY: {}
860
860
  },
861
- setup(r, { expose: e }) {
862
- const t = r, { pass: o, effect: a } = h(() => new he(t), t);
863
- return e({ pass: o, effect: a }), g(
861
+ setup(r, { expose: t }) {
862
+ const e = r, { pass: o, effect: s } = f(() => new be(e), e);
863
+ return t({ pass: o, effect: s }), p(
864
864
  [
865
- [() => t.blendFunction, "blendMode.blendFunction"],
866
- [() => t.offset, "offset"],
867
- [() => t.rotation, "rotation"],
868
- [() => t.focusArea, "focusArea"],
869
- [() => t.feather, "feather"],
870
- [() => t.kernelSize, "kernelSize"],
871
- [() => t.resolutionScale, "resolution.scale"],
872
- [() => t.resolutionX, "resolution.width"],
873
- [() => t.resolutionY, "resolution.height"]
865
+ [() => e.blendFunction, "blendMode.blendFunction"],
866
+ [() => e.offset, "offset"],
867
+ [() => e.rotation, "rotation"],
868
+ [() => e.focusArea, "focusArea"],
869
+ [() => e.feather, "feather"],
870
+ [() => e.kernelSize, "kernelSize"],
871
+ [() => e.resolutionScale, "resolution.scale"],
872
+ [() => e.resolutionX, "resolution.width"],
873
+ [() => e.resolutionY, "resolution.height"]
874
874
  ],
875
- a,
876
- () => new he()
875
+ s,
876
+ () => new be()
877
877
  ), () => {
878
878
  };
879
879
  }
880
- }), Qt = /* @__PURE__ */ c({
880
+ }), oo = /* @__PURE__ */ u({
881
881
  __name: "DotScreenPmndrs",
882
882
  props: {
883
883
  angle: {},
884
884
  scale: {},
885
885
  blendFunction: {}
886
886
  },
887
- setup(r, { expose: e }) {
888
- const t = r, { pass: o, effect: a } = h(() => new pe(t), t);
889
- return e({ pass: o, effect: a }), g(
887
+ setup(r, { expose: t }) {
888
+ const e = r, { pass: o, effect: s } = f(() => new Se(e), e);
889
+ return t({ pass: o, effect: s }), p(
890
890
  [
891
- [() => t.blendFunction, "blendMode.blendFunction"],
892
- [() => t.angle, "angle"],
893
- [() => t.scale, "scale"]
891
+ [() => e.blendFunction, "blendMode.blendFunction"],
892
+ [() => e.angle, "angle"],
893
+ [() => e.scale, "scale"]
894
894
  ],
895
- a,
896
- () => new pe()
895
+ s,
896
+ () => new Se()
897
897
  ), () => {
898
898
  };
899
899
  }
900
- }), Kt = /* @__PURE__ */ c({
900
+ }), so = /* @__PURE__ */ u({
901
901
  __name: "SepiaPmndrs",
902
902
  props: {
903
903
  blendFunction: {},
904
904
  intensity: {}
905
905
  },
906
- setup(r, { expose: e }) {
907
- const t = r, { pass: o, effect: a } = h(() => new me(t), t);
908
- return e({ pass: o, effect: a }), g(
906
+ setup(r, { expose: t }) {
907
+ const e = r, { pass: o, effect: s } = f(() => new we(e), e);
908
+ return t({ pass: o, effect: s }), p(
909
909
  [
910
- [() => t.blendFunction, "blendMode.blendFunction"],
911
- [() => t.intensity, "intensity"]
910
+ [() => e.blendFunction, "blendMode.blendFunction"],
911
+ [() => e.intensity, "intensity"]
912
912
  ],
913
- a,
914
- () => new me()
913
+ s,
914
+ () => new we()
915
915
  ), () => {
916
916
  };
917
917
  }
918
918
  });
919
- class we extends Z {
919
+ class Le extends k {
920
920
  /**
921
921
  * Creates a new LinocutEffect instance.
922
922
  *
923
923
  * @param {LinocutPmndrsProps} [options] - Configuration options for the effect.
924
924
  *
925
925
  */
926
- constructor({ blendFunction: e = _.NORMAL, scale: t = 0.85, noiseScale: o = 0, center: a = [0.5, 0.5], rotation: s = 0 } = {}) {
927
- const i = Array.isArray(a) ? new d().fromArray(a) : a;
926
+ constructor({ blendFunction: t = q.NORMAL, scale: e = 0.85, noiseScale: o = 0, center: s = [0.5, 0.5], rotation: a = 0 } = {}) {
927
+ const i = Array.isArray(s) ? new c().fromArray(s) : s;
928
928
  super("LinocutEffect", `
929
929
  uniform float scale;
930
930
  uniform float noiseScale;
@@ -986,45 +986,45 @@ class we extends Z {
986
986
  outputColor = vec4(vec3(f), 1.0);
987
987
  }
988
988
  `, {
989
- blendFunction: e,
989
+ blendFunction: t,
990
990
  uniforms: /* @__PURE__ */ new Map([
991
- ["scale", new E(t)],
992
- ["noiseScale", new E(o)],
993
- ["center", new E(i)],
994
- ["rotation", new E(s)]
991
+ ["scale", new y(e)],
992
+ ["noiseScale", new y(o)],
993
+ ["center", new y(i)],
994
+ ["rotation", new y(a)]
995
995
  ])
996
996
  });
997
997
  }
998
998
  get scale() {
999
- var e;
1000
- return (e = this.uniforms.get("scale")) == null ? void 0 : e.value;
999
+ var t;
1000
+ return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1001
1001
  }
1002
- set scale(e) {
1003
- this.uniforms.get("scale").value = e;
1002
+ set scale(t) {
1003
+ this.uniforms.get("scale").value = t;
1004
1004
  }
1005
1005
  get noiseScale() {
1006
- var e;
1007
- return (e = this.uniforms.get("noiseScale")) == null ? void 0 : e.value;
1006
+ var t;
1007
+ return (t = this.uniforms.get("noiseScale")) == null ? void 0 : t.value;
1008
1008
  }
1009
- set noiseScale(e) {
1010
- this.uniforms.get("noiseScale").value = e;
1009
+ set noiseScale(t) {
1010
+ this.uniforms.get("noiseScale").value = t;
1011
1011
  }
1012
1012
  get center() {
1013
- var e;
1014
- return (e = this.uniforms.get("center")) == null ? void 0 : e.value;
1013
+ var t;
1014
+ return (t = this.uniforms.get("center")) == null ? void 0 : t.value;
1015
1015
  }
1016
- set center(e) {
1017
- this.uniforms.get("center").value = Array.isArray(e) ? new d().fromArray(e) : e;
1016
+ set center(t) {
1017
+ this.uniforms.get("center").value = Array.isArray(t) ? new c().fromArray(t) : t;
1018
1018
  }
1019
1019
  get rotation() {
1020
- var e;
1021
- return (e = this.uniforms.get("rotation")) == null ? void 0 : e.value;
1020
+ var t;
1021
+ return (t = this.uniforms.get("rotation")) == null ? void 0 : t.value;
1022
1022
  }
1023
- set rotation(e) {
1024
- this.uniforms.get("rotation").value = e;
1023
+ set rotation(t) {
1024
+ this.uniforms.get("rotation").value = t;
1025
1025
  }
1026
1026
  }
1027
- const Jt = /* @__PURE__ */ c({
1027
+ const ao = /* @__PURE__ */ u({
1028
1028
  __name: "LinocutPmndrs",
1029
1029
  props: {
1030
1030
  blendFunction: {},
@@ -1033,28 +1033,292 @@ const Jt = /* @__PURE__ */ c({
1033
1033
  center: {},
1034
1034
  rotation: {}
1035
1035
  },
1036
- setup(r, { expose: e }) {
1037
- const t = r, { pass: o, effect: a } = h(
1038
- () => new we({
1039
- ...t,
1040
- center: t.center instanceof d ? [t.center.x, t.center.y] : t.center
1036
+ setup(r, { expose: t }) {
1037
+ const e = r, { pass: o, effect: s } = f(
1038
+ () => new Le({
1039
+ ...e,
1040
+ center: e.center instanceof c ? [e.center.x, e.center.y] : e.center
1041
1041
  }),
1042
- t
1042
+ e
1043
1043
  );
1044
- return e({ pass: o, effect: a }), g(
1044
+ return t({ pass: o, effect: s }), p(
1045
1045
  [
1046
- [() => t.blendFunction, "blendMode.blendFunction"],
1047
- [() => t.scale, "scale"],
1048
- [() => t.noiseScale, "noiseScale"],
1049
- [() => t.center, "center"],
1050
- [() => t.rotation, "rotation"]
1046
+ [() => e.blendFunction, "blendMode.blendFunction"],
1047
+ [() => e.scale, "scale"],
1048
+ [() => e.noiseScale, "noiseScale"],
1049
+ [() => e.center, "center"],
1050
+ [() => e.rotation, "rotation"]
1051
+ ],
1052
+ s,
1053
+ () => new Le()
1054
+ ), () => {
1055
+ };
1056
+ }
1057
+ }), ro = /* @__PURE__ */ u({
1058
+ __name: "DepthPickingPassPmndrs",
1059
+ props: {
1060
+ depthPacking: {},
1061
+ mode: {}
1062
+ },
1063
+ setup(r, { expose: t }) {
1064
+ const e = r, o = oe(re), s = new Qe(e), a = v(() => {
1065
+ o != null && o.value && (se(() => a()), o.value.addPass(s));
1066
+ });
1067
+ return W(() => {
1068
+ var i;
1069
+ !(o != null && o.value) || !s || ((i = o == null ? void 0 : o.value) == null || i.removePass(s), s.dispose());
1070
+ }), t({ pass: s }), () => {
1071
+ };
1072
+ }
1073
+ }), io = /* @__PURE__ */ u({
1074
+ __name: "GodRaysPmndrs",
1075
+ props: {
1076
+ blendFunction: {},
1077
+ lightSource: {},
1078
+ opacity: {},
1079
+ density: {},
1080
+ decay: {},
1081
+ kernelSize: {},
1082
+ resolutionScale: {},
1083
+ blur: { type: Boolean },
1084
+ resolutionX: {},
1085
+ resolutionY: {},
1086
+ weight: {},
1087
+ exposure: {},
1088
+ samples: {},
1089
+ clampMax: {}
1090
+ },
1091
+ setup(r, { expose: t }) {
1092
+ const e = r, { camera: o } = A(), { pass: s, effect: a } = f(
1093
+ () => new $(o.value, ne(e.lightSource), e),
1094
+ e
1095
+ );
1096
+ return t({ pass: s, effect: a }), p(
1097
+ [
1098
+ [() => e.blendFunction, "blendMode.blendFunction"],
1099
+ [() => e.density, "godRaysMaterial.density"],
1100
+ [() => e.decay, "godRaysMaterial.decay"],
1101
+ [() => e.weight, "godRaysMaterial.weight"],
1102
+ [() => e.exposure, "godRaysMaterial.exposure"],
1103
+ [() => e.samples, "godRaysMaterial.samples"],
1104
+ [() => e.clampMax, "godRaysMaterial.maxIntensity"],
1105
+ [() => e.resolutionScale, "resolution.scale"],
1106
+ [() => e.resolutionX, "resolution.width"],
1107
+ [() => e.resolutionY, "resolution.height"],
1108
+ [() => e.kernelSize, "kernelSize"],
1109
+ [() => e.blur, "blur"]
1051
1110
  ],
1052
1111
  a,
1053
- () => new we()
1112
+ () => new $()
1113
+ ), w(
1114
+ [() => e.opacity],
1115
+ () => {
1116
+ var i, n;
1117
+ if (e.opacity !== void 0)
1118
+ (i = a.value) == null || i.blendMode.setOpacity(e.opacity);
1119
+ else {
1120
+ const l = new $(o.value, ne(e.lightSource));
1121
+ (n = a.value) == null || n.blendMode.setOpacity(l.blendMode.getOpacity()), l.dispose();
1122
+ }
1123
+ },
1124
+ {
1125
+ immediate: !0
1126
+ }
1054
1127
  ), () => {
1055
1128
  };
1056
1129
  }
1057
- }), Be = {
1130
+ }), no = /* @__PURE__ */ u({
1131
+ __name: "ColorDepthPmndrs",
1132
+ props: {
1133
+ blendFunction: {},
1134
+ bits: {},
1135
+ opacity: {}
1136
+ },
1137
+ setup(r, { expose: t }) {
1138
+ const e = r, { pass: o, effect: s } = f(() => new X(e), e);
1139
+ return t({ pass: o, effect: s }), Q(
1140
+ () => e.blendFunction,
1141
+ s,
1142
+ "blendMode.blendFunction",
1143
+ () => new X()
1144
+ ), w(
1145
+ [s, () => e.bits],
1146
+ () => {
1147
+ var a, i;
1148
+ if (s.value)
1149
+ if (e.bits !== void 0)
1150
+ (a = s.value) == null || a.setBitDepth(e.bits);
1151
+ else {
1152
+ const n = new X();
1153
+ (i = s.value) == null || i.setBitDepth(n.getBitDepth()), n.dispose();
1154
+ }
1155
+ }
1156
+ ), w(
1157
+ [s, () => e.opacity],
1158
+ () => {
1159
+ var a, i;
1160
+ if (s.value)
1161
+ if (e.opacity !== void 0)
1162
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
1163
+ else {
1164
+ const n = new X();
1165
+ (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
1166
+ }
1167
+ }
1168
+ ), () => {
1169
+ };
1170
+ }
1171
+ }), lo = /* @__PURE__ */ u({
1172
+ __name: "GridPmndrs",
1173
+ props: {
1174
+ blendFunction: {},
1175
+ scale: {},
1176
+ lineWidth: {}
1177
+ },
1178
+ setup(r, { expose: t }) {
1179
+ const e = r, { pass: o, effect: s } = f(() => new Ae(e), e);
1180
+ return t({ pass: o, effect: s }), p(
1181
+ [
1182
+ [() => e.blendFunction, "blendMode.blendFunction"],
1183
+ [() => e.scale, "scale"],
1184
+ [() => e.lineWidth, "lineWidth"]
1185
+ ],
1186
+ s,
1187
+ () => new Ae()
1188
+ ), () => {
1189
+ };
1190
+ }
1191
+ });
1192
+ class Oe extends k {
1193
+ /**
1194
+ * Creates a new FishEyeEffect instance.
1195
+ *
1196
+ * @param {object} [options] - Configuration options for the effect.
1197
+ * @param {BlendFunction} [options.blendFunction] - Blend mode.
1198
+ * @param {Vector2} [options.lensS] - Lens scale.
1199
+ * @param {Vector2} [options.lensF] - Lens factor.
1200
+ * @param {number} [options.scale] - Scale.
1201
+ *
1202
+ */
1203
+ constructor({ blendFunction: t = q.NORMAL, lensS: e = new c(1, 1), lensF: o = new c(0, 1), scale: s = 1 } = {}) {
1204
+ super("FishEyeEffect", `
1205
+ uniform vec2 lensS;
1206
+ uniform vec2 lensF;
1207
+ uniform float scale;
1208
+
1209
+ void mainUv(inout vec2 uv) {
1210
+ vec2 newUv = uv * 2.0 - 1.0;
1211
+ newUv.x = newUv.x + ((pow(newUv.y, 2.0) / scale) * newUv.x / scale) * -lensF.x;
1212
+ newUv.y = newUv.y + ((pow(newUv.x, 2.0) / scale) * newUv.y / scale) * -lensF.y;
1213
+ newUv = newUv * lensS;
1214
+ newUv = newUv / scale * 0.5 + 0.5;
1215
+
1216
+ uv = newUv;
1217
+ }
1218
+
1219
+ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
1220
+ outputColor = vec4(inputColor.rgb, inputColor.a); // Preserves original alpha
1221
+ }
1222
+ `, {
1223
+ blendFunction: t,
1224
+ uniforms: /* @__PURE__ */ new Map([
1225
+ ["lensS", new y(e)],
1226
+ ["lensF", new y(o)],
1227
+ ["scale", new y(s)]
1228
+ ])
1229
+ });
1230
+ }
1231
+ /**
1232
+ * The lensS.
1233
+ *
1234
+ * @type {Vector2}
1235
+ */
1236
+ get lensS() {
1237
+ var t;
1238
+ return (t = this.uniforms.get("lensS")) == null ? void 0 : t.value;
1239
+ }
1240
+ set lensS(t) {
1241
+ this.uniforms.get("lensS").value = t;
1242
+ }
1243
+ /**
1244
+ * The lensF.
1245
+ *
1246
+ * @type {Vector2}
1247
+ */
1248
+ get lensF() {
1249
+ var t;
1250
+ return (t = this.uniforms.get("lensF")) == null ? void 0 : t.value;
1251
+ }
1252
+ set lensF(t) {
1253
+ this.uniforms.get("lensF").value = t;
1254
+ }
1255
+ /**
1256
+ * The scale.
1257
+ *
1258
+ * @type {number}
1259
+ */
1260
+ get scale() {
1261
+ var t;
1262
+ return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1263
+ }
1264
+ set scale(t) {
1265
+ this.uniforms.get("scale").value = t;
1266
+ }
1267
+ }
1268
+ const uo = /* @__PURE__ */ u({
1269
+ __name: "FishEyePmndrs",
1270
+ props: {
1271
+ blendFunction: {},
1272
+ lensS: {},
1273
+ lensF: {},
1274
+ scale: {}
1275
+ },
1276
+ setup(r, { expose: t }) {
1277
+ const e = r, o = L(
1278
+ () => Array.isArray(e.lensS) ? new c(...e.lensS) : e.lensS
1279
+ ), s = L(
1280
+ () => Array.isArray(e.lensF) ? new c(...e.lensF) : e.lensF
1281
+ ), { pass: a, effect: i } = f(
1282
+ () => new Oe({
1283
+ ...e,
1284
+ lensS: o.value,
1285
+ lensF: s.value
1286
+ }),
1287
+ e
1288
+ );
1289
+ return t({ pass: a, effect: i }), p(
1290
+ [
1291
+ [() => e.blendFunction, "blendMode.blendFunction"],
1292
+ [() => o.value, "lensS"],
1293
+ [() => s.value, "lensF"],
1294
+ [() => e.scale, "scale"]
1295
+ ],
1296
+ i,
1297
+ () => new Oe()
1298
+ ), () => {
1299
+ };
1300
+ }
1301
+ }), co = /* @__PURE__ */ u({
1302
+ __name: "BrightnessContrastPmndrs",
1303
+ props: {
1304
+ blendFunction: {},
1305
+ brightness: {},
1306
+ contrast: {}
1307
+ },
1308
+ setup(r, { expose: t }) {
1309
+ const e = r, { pass: o, effect: s } = f(() => new ye(e), e);
1310
+ return t({ pass: o, effect: s }), p(
1311
+ [
1312
+ [() => e.blendFunction, "blendMode.blendFunction"],
1313
+ [() => e.brightness, "brightness"],
1314
+ [() => e.contrast, "contrast"]
1315
+ ],
1316
+ s,
1317
+ () => new ye()
1318
+ ), () => {
1319
+ };
1320
+ }
1321
+ }), Ge = {
1058
1322
  name: "CopyShader",
1059
1323
  uniforms: {
1060
1324
  tDiffuse: { value: null },
@@ -1104,190 +1368,190 @@ class T {
1104
1368
  dispose() {
1105
1369
  }
1106
1370
  }
1107
- const ht = new Ie(-1, 1, 1, -1, 0, 1);
1108
- class pt extends je {
1371
+ const wt = new Ke(-1, 1, 1, -1, 0, 1);
1372
+ class At extends Je {
1109
1373
  constructor() {
1110
- super(), this.setAttribute("position", new ge([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new ge([0, 2, 0, 0, 2, 0], 2));
1374
+ super(), this.setAttribute("position", new Me([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new Me([0, 2, 0, 0, 2, 0], 2));
1111
1375
  }
1112
1376
  }
1113
- const mt = new pt();
1114
- class L {
1115
- constructor(e) {
1116
- this._mesh = new Ve(mt, e);
1377
+ const yt = new At();
1378
+ class O {
1379
+ constructor(t) {
1380
+ this._mesh = new Ze(yt, t);
1117
1381
  }
1118
1382
  dispose() {
1119
1383
  this._mesh.geometry.dispose();
1120
1384
  }
1121
- render(e) {
1122
- e.render(this._mesh, ht);
1385
+ render(t) {
1386
+ t.render(this._mesh, wt);
1123
1387
  }
1124
1388
  get material() {
1125
1389
  return this._mesh.material;
1126
1390
  }
1127
- set material(e) {
1128
- this._mesh.material = e;
1391
+ set material(t) {
1392
+ this._mesh.material = t;
1129
1393
  }
1130
1394
  }
1131
- class gt extends T {
1132
- constructor(e, t) {
1133
- super(), this.textureID = t !== void 0 ? t : "tDiffuse", e instanceof S ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = M.clone(e.uniforms), this.material = new S({
1134
- name: e.name !== void 0 ? e.name : "unspecified",
1135
- defines: Object.assign({}, e.defines),
1395
+ class Mt extends T {
1396
+ constructor(t, e) {
1397
+ super(), this.textureID = e !== void 0 ? e : "tDiffuse", t instanceof S ? (this.uniforms = t.uniforms, this.material = t) : t && (this.uniforms = E.clone(t.uniforms), this.material = new S({
1398
+ name: t.name !== void 0 ? t.name : "unspecified",
1399
+ defines: Object.assign({}, t.defines),
1136
1400
  uniforms: this.uniforms,
1137
- vertexShader: e.vertexShader,
1138
- fragmentShader: e.fragmentShader
1139
- })), this.fsQuad = new L(this.material);
1401
+ vertexShader: t.vertexShader,
1402
+ fragmentShader: t.fragmentShader
1403
+ })), this.fsQuad = new O(this.material);
1140
1404
  }
1141
- render(e, t, o) {
1142
- 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));
1405
+ render(t, e, o) {
1406
+ this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = o.texture), this.fsQuad.material = this.material, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), this.fsQuad.render(t));
1143
1407
  }
1144
1408
  dispose() {
1145
1409
  this.material.dispose(), this.fsQuad.dispose();
1146
1410
  }
1147
1411
  }
1148
- class Te extends T {
1149
- constructor(e, t) {
1150
- super(), this.scene = e, this.camera = t, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1412
+ class Re extends T {
1413
+ constructor(t, e) {
1414
+ super(), this.scene = t, this.camera = e, this.clear = !0, this.needsSwap = !1, this.inverse = !1;
1151
1415
  }
1152
- render(e, t, o) {
1153
- const a = e.getContext(), s = e.state;
1154
- s.buffers.color.setMask(!1), s.buffers.depth.setMask(!1), s.buffers.color.setLocked(!0), s.buffers.depth.setLocked(!0);
1416
+ render(t, e, o) {
1417
+ const s = t.getContext(), a = t.state;
1418
+ a.buffers.color.setMask(!1), a.buffers.depth.setMask(!1), a.buffers.color.setLocked(!0), a.buffers.depth.setLocked(!0);
1155
1419
  let i, n;
1156
- this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), s.buffers.stencil.setTest(!0), s.buffers.stencil.setOp(a.REPLACE, a.REPLACE, a.REPLACE), s.buffers.stencil.setFunc(a.ALWAYS, i, 4294967295), s.buffers.stencil.setClear(n), s.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), s.buffers.color.setLocked(!1), s.buffers.depth.setLocked(!1), s.buffers.color.setMask(!0), s.buffers.depth.setMask(!0), s.buffers.stencil.setLocked(!1), s.buffers.stencil.setFunc(a.EQUAL, 1, 4294967295), s.buffers.stencil.setOp(a.KEEP, a.KEEP, a.KEEP), s.buffers.stencil.setLocked(!0);
1420
+ this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, i, 4294967295), a.buffers.stencil.setClear(n), a.buffers.stencil.setLocked(!0), t.setRenderTarget(o), this.clear && t.clear(), t.render(this.scene, this.camera), t.setRenderTarget(e), this.clear && t.clear(), t.render(this.scene, this.camera), a.buffers.color.setLocked(!1), a.buffers.depth.setLocked(!1), a.buffers.color.setMask(!0), a.buffers.depth.setMask(!0), a.buffers.stencil.setLocked(!1), a.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), a.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), a.buffers.stencil.setLocked(!0);
1157
1421
  }
1158
1422
  }
1159
- class vt extends T {
1423
+ class Tt extends T {
1160
1424
  constructor() {
1161
1425
  super(), this.needsSwap = !1;
1162
1426
  }
1163
- render(e) {
1164
- e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1427
+ render(t) {
1428
+ t.state.buffers.stencil.setLocked(!1), t.state.buffers.stencil.setTest(!1);
1165
1429
  }
1166
1430
  }
1167
- class xt {
1168
- constructor(e, t) {
1169
- if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1170
- const o = e.getSize(new d());
1171
- this._width = o.width, this._height = o.height, t = new D(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: w }), t.texture.name = "EffectComposer.rt1";
1431
+ class Ct {
1432
+ constructor(t, e) {
1433
+ if (this.renderer = t, this._pixelRatio = t.getPixelRatio(), e === void 0) {
1434
+ const o = t.getSize(new c());
1435
+ this._width = o.width, this._height = o.height, e = new D(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: M }), e.texture.name = "EffectComposer.rt1";
1172
1436
  } else
1173
- this._width = t.width, this._height = t.height;
1174
- 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 gt(Be), this.copyPass.material.blending = Ye, this.clock = new qe();
1437
+ this._width = e.width, this._height = e.height;
1438
+ this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Mt(Ge), this.copyPass.material.blending = _e, this.clock = new $e();
1175
1439
  }
1176
1440
  swapBuffers() {
1177
- const e = this.readBuffer;
1178
- this.readBuffer = this.writeBuffer, this.writeBuffer = e;
1441
+ const t = this.readBuffer;
1442
+ this.readBuffer = this.writeBuffer, this.writeBuffer = t;
1179
1443
  }
1180
- addPass(e) {
1181
- this.passes.push(e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1444
+ addPass(t) {
1445
+ this.passes.push(t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1182
1446
  }
1183
- insertPass(e, t) {
1184
- this.passes.splice(t, 0, e), e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1447
+ insertPass(t, e) {
1448
+ this.passes.splice(e, 0, t), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1185
1449
  }
1186
- removePass(e) {
1187
- const t = this.passes.indexOf(e);
1188
- t !== -1 && this.passes.splice(t, 1);
1450
+ removePass(t) {
1451
+ const e = this.passes.indexOf(t);
1452
+ e !== -1 && this.passes.splice(e, 1);
1189
1453
  }
1190
- isLastEnabledPass(e) {
1191
- for (let t = e + 1; t < this.passes.length; t++)
1192
- if (this.passes[t].enabled)
1454
+ isLastEnabledPass(t) {
1455
+ for (let e = t + 1; e < this.passes.length; e++)
1456
+ if (this.passes[e].enabled)
1193
1457
  return !1;
1194
1458
  return !0;
1195
1459
  }
1196
- render(e) {
1197
- e === void 0 && (e = this.clock.getDelta());
1198
- const t = this.renderer.getRenderTarget();
1460
+ render(t) {
1461
+ t === void 0 && (t = this.clock.getDelta());
1462
+ const e = this.renderer.getRenderTarget();
1199
1463
  let o = !1;
1200
- for (let a = 0, s = this.passes.length; a < s; a++) {
1201
- const i = this.passes[a];
1464
+ for (let s = 0, a = this.passes.length; s < a; s++) {
1465
+ const i = this.passes[s];
1202
1466
  if (i.enabled !== !1) {
1203
- if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(a), i.render(this.renderer, this.writeBuffer, this.readBuffer, e, o), i.needsSwap) {
1467
+ if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, t, o), i.needsSwap) {
1204
1468
  if (o) {
1205
1469
  const n = this.renderer.getContext(), l = this.renderer.state.buffers.stencil;
1206
- l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e), l.setFunc(n.EQUAL, 1, 4294967295);
1470
+ l.setFunc(n.NOTEQUAL, 1, 4294967295), this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, t), l.setFunc(n.EQUAL, 1, 4294967295);
1207
1471
  }
1208
1472
  this.swapBuffers();
1209
1473
  }
1210
- Te !== void 0 && (i instanceof Te ? o = !0 : i instanceof vt && (o = !1));
1474
+ Re !== void 0 && (i instanceof Re ? o = !0 : i instanceof Tt && (o = !1));
1211
1475
  }
1212
1476
  }
1213
- this.renderer.setRenderTarget(t);
1477
+ this.renderer.setRenderTarget(e);
1214
1478
  }
1215
- reset(e) {
1216
- if (e === void 0) {
1217
- const t = this.renderer.getSize(new d());
1218
- 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);
1479
+ reset(t) {
1480
+ if (t === void 0) {
1481
+ const e = this.renderer.getSize(new c());
1482
+ this._pixelRatio = this.renderer.getPixelRatio(), this._width = e.width, this._height = e.height, t = this.renderTarget1.clone(), t.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio);
1219
1483
  }
1220
- this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = e, this.renderTarget2 = e.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1484
+ this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2;
1221
1485
  }
1222
- setSize(e, t) {
1223
- this._width = e, this._height = t;
1224
- const o = this._width * this._pixelRatio, a = this._height * this._pixelRatio;
1225
- this.renderTarget1.setSize(o, a), this.renderTarget2.setSize(o, a);
1226
- for (let s = 0; s < this.passes.length; s++)
1227
- this.passes[s].setSize(o, a);
1486
+ setSize(t, e) {
1487
+ this._width = t, this._height = e;
1488
+ const o = this._width * this._pixelRatio, s = this._height * this._pixelRatio;
1489
+ this.renderTarget1.setSize(o, s), this.renderTarget2.setSize(o, s);
1490
+ for (let a = 0; a < this.passes.length; a++)
1491
+ this.passes[a].setSize(o, s);
1228
1492
  }
1229
- setPixelRatio(e) {
1230
- this._pixelRatio = e, this.setSize(this._width, this._height);
1493
+ setPixelRatio(t) {
1494
+ this._pixelRatio = t, this.setSize(this._width, this._height);
1231
1495
  }
1232
1496
  dispose() {
1233
1497
  this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();
1234
1498
  }
1235
1499
  }
1236
- class bt extends T {
1237
- constructor(e, t, o = null, a = null, s = null) {
1238
- super(), this.scene = e, this.camera = t, this.overrideMaterial = o, this.clearColor = a, this.clearAlpha = s, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new j();
1500
+ class Et extends T {
1501
+ constructor(t, e, o = null, s = null, a = null) {
1502
+ super(), this.scene = t, this.camera = e, this.overrideMaterial = o, this.clearColor = s, this.clearAlpha = a, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new Y();
1239
1503
  }
1240
- render(e, t, o) {
1241
- const a = e.autoClear;
1242
- e.autoClear = !1;
1243
- let s, i;
1244
- 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 && (s = 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(s), this.overrideMaterial !== null && (this.scene.overrideMaterial = i), e.autoClear = a;
1504
+ render(t, e, o) {
1505
+ const s = t.autoClear;
1506
+ t.autoClear = !1;
1507
+ let a, i;
1508
+ this.overrideMaterial !== null && (i = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (t.getClearColor(this._oldClearColor), t.setClearColor(this.clearColor, t.getClearAlpha())), this.clearAlpha !== null && (a = t.getClearAlpha(), t.setClearAlpha(this.clearAlpha)), this.clearDepth == !0 && t.clearDepth(), t.setRenderTarget(this.renderToScreen ? null : o), this.clear === !0 && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), t.render(this.scene, this.camera), this.clearColor !== null && t.setClearColor(this._oldClearColor), this.clearAlpha !== null && t.setClearAlpha(a), this.overrideMaterial !== null && (this.scene.overrideMaterial = i), t.autoClear = s;
1245
1509
  }
1246
1510
  }
1247
- const Ne = Symbol("effectComposerThree"), Zt = /* @__PURE__ */ c({
1511
+ const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
1248
1512
  __name: "EffectComposer",
1249
1513
  props: {
1250
1514
  enabled: { type: Boolean, default: !0 },
1251
1515
  withoutRenderPass: { type: Boolean }
1252
1516
  },
1253
- setup(r, { expose: e }) {
1254
- const t = r, o = z(null);
1255
- Ce(Ne, o), e({ composer: o });
1256
- const { renderer: a, sizes: s, scene: i, camera: n, render: l } = A();
1517
+ setup(r, { expose: t }) {
1518
+ const e = r, o = z(null);
1519
+ Ne(He, o), t({ composer: o });
1520
+ const { renderer: s, sizes: a, scene: i, camera: n, render: l } = A();
1257
1521
  v(() => {
1258
- var f;
1259
- (f = o.value) == null || f.dispose(), o.value = new xt(a.value);
1522
+ var h;
1523
+ (h = o.value) == null || h.dispose(), o.value = new Ct(s.value);
1260
1524
  }), v(() => {
1261
1525
  var H;
1262
- const { width: f, height: y } = s;
1263
- y.value && f.value && ((H = o.value) == null || H.setSize(f.value, y.value));
1526
+ const { width: h, height: C } = a;
1527
+ C.value && h.value && ((H = o.value) == null || H.setSize(h.value, C.value));
1264
1528
  });
1265
- const { pixelRatio: u } = Le();
1529
+ const { pixelRatio: d } = We();
1266
1530
  v(() => {
1267
- var f;
1268
- (f = o.value) == null || f.setPixelRatio(u.value);
1269
- }), t.withoutRenderPass || v(() => {
1270
- n.value && i.value && o.value && o.value.addPass(new bt(i.value, n.value));
1531
+ var h;
1532
+ (h = o.value) == null || h.setPixelRatio(d.value);
1533
+ }), e.withoutRenderPass || v(() => {
1534
+ n.value && i.value && o.value && o.value.addPass(new Et(i.value, n.value));
1271
1535
  });
1272
- const { render: p } = W();
1273
- return p(() => {
1274
- 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);
1275
- }), V(() => {
1276
- var f;
1277
- (f = o.value) == null || f.dispose();
1278
- }), (f, y) => Ee(f.$slots, "default");
1279
- }
1280
- }), B = (r, e) => {
1281
- const t = De(Ne), o = z(r()), { sizes: a, invalidate: s } = A();
1282
- e && C(e, () => s());
1536
+ const { render: m } = U();
1537
+ return m(() => {
1538
+ l.frames.value > 0 && o.value && e.enabled && o.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
1539
+ }), W(() => {
1540
+ var h;
1541
+ (h = o.value) == null || h.dispose();
1542
+ }), (h, C) => ze(h.$slots, "default");
1543
+ }
1544
+ }), F = (r, t) => {
1545
+ const e = oe(He), o = z(r()), { sizes: s, invalidate: a } = A();
1546
+ t && w(t, () => a());
1283
1547
  const i = v(() => {
1284
- !(t != null && t.value) || !a.height.value || !a.width.value || (t.value.addPass(o.value), Pe(() => i()));
1548
+ !(e != null && e.value) || !s.height.value || !s.width.value || (e.value.addPass(o.value), se(() => i()));
1285
1549
  });
1286
- return V(() => {
1550
+ return W(() => {
1287
1551
  var n;
1288
- (n = t == null ? void 0 : t.value) == null || n.removePass(o.value), o.value.dispose();
1552
+ (n = e == null ? void 0 : e.value) == null || n.removePass(o.value), o.value.dispose();
1289
1553
  }), { pass: o };
1290
- }, St = {
1554
+ }, Dt = {
1291
1555
  uniforms: {
1292
1556
  tDiffuse: { value: null },
1293
1557
  //diffuse texture
@@ -1382,53 +1646,53 @@ const Ne = Symbol("effectComposerThree"), Zt = /* @__PURE__ */ c({
1382
1646
  }`
1383
1647
  )
1384
1648
  };
1385
- class ye extends T {
1386
- constructor(e = 64) {
1649
+ class Be extends T {
1650
+ constructor(t = 64) {
1387
1651
  super();
1388
- const t = St;
1389
- this.uniforms = M.clone(t.uniforms), this.heightMap = this.generateHeightmap(e), this.uniforms.tDisp.value = this.heightMap, this.material = new S({
1652
+ const e = Dt;
1653
+ this.uniforms = E.clone(e.uniforms), this.heightMap = this.generateHeightmap(t), this.uniforms.tDisp.value = this.heightMap, this.material = new S({
1390
1654
  uniforms: this.uniforms,
1391
- vertexShader: t.vertexShader,
1392
- fragmentShader: t.fragmentShader
1393
- }), this.fsQuad = new L(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1655
+ vertexShader: e.vertexShader,
1656
+ fragmentShader: e.fragmentShader
1657
+ }), this.fsQuad = new O(this.material), this.goWild = !1, this.curF = 0, this.generateTrigger();
1394
1658
  }
1395
- render(e, t, o) {
1396
- this.uniforms.tDiffuse.value = o.texture, this.uniforms.seed.value = Math.random(), this.uniforms.byp.value = 0, this.curF % this.randX == 0 || this.goWild == !0 ? (this.uniforms.amount.value = Math.random() / 30, this.uniforms.angle.value = b.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = b.randFloat(-1, 1), this.uniforms.seed_y.value = b.randFloat(-1, 1), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.randFloat(0, 1), this.curF = 0, this.generateTrigger()) : this.curF % this.randX < this.randX / 5 ? (this.uniforms.amount.value = Math.random() / 90, this.uniforms.angle.value = b.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.randFloat(0, 1), this.uniforms.seed_x.value = b.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = b.randFloat(-0.3, 0.3)) : this.goWild == !1 && (this.uniforms.byp.value = 1), this.curF++, this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(t), this.clear && e.clear(), this.fsQuad.render(e));
1659
+ render(t, e, o) {
1660
+ this.uniforms.tDiffuse.value = o.texture, this.uniforms.seed.value = Math.random(), this.uniforms.byp.value = 0, this.curF % this.randX == 0 || this.goWild == !0 ? (this.uniforms.amount.value = Math.random() / 30, this.uniforms.angle.value = b.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = b.randFloat(-1, 1), this.uniforms.seed_y.value = b.randFloat(-1, 1), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.randFloat(0, 1), this.curF = 0, this.generateTrigger()) : this.curF % this.randX < this.randX / 5 ? (this.uniforms.amount.value = Math.random() / 90, this.uniforms.angle.value = b.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = b.randFloat(0, 1), this.uniforms.distortion_y.value = b.randFloat(0, 1), this.uniforms.seed_x.value = b.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = b.randFloat(-0.3, 0.3)) : this.goWild == !1 && (this.uniforms.byp.value = 1), this.curF++, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
1397
1661
  }
1398
1662
  generateTrigger() {
1399
1663
  this.randX = b.randInt(120, 240);
1400
1664
  }
1401
- generateHeightmap(e) {
1402
- const t = new Float32Array(e * e), o = e * e;
1403
- for (let s = 0; s < o; s++) {
1665
+ generateHeightmap(t) {
1666
+ const e = new Float32Array(t * t), o = t * t;
1667
+ for (let a = 0; a < o; a++) {
1404
1668
  const i = b.randFloat(0, 1);
1405
- t[s] = i;
1669
+ e[a] = i;
1406
1670
  }
1407
- const a = new ke(t, e, e, Qe, Ke);
1408
- return a.needsUpdate = !0, a;
1671
+ const s = new et(e, t, t, tt, ot);
1672
+ return s.needsUpdate = !0, s;
1409
1673
  }
1410
1674
  dispose() {
1411
1675
  this.material.dispose(), this.heightMap.dispose(), this.fsQuad.dispose();
1412
1676
  }
1413
1677
  }
1414
- const _t = /* @__PURE__ */ c({
1678
+ const ho = /* @__PURE__ */ u({
1415
1679
  __name: "Glitch",
1416
1680
  props: {
1417
1681
  dtSize: {},
1418
1682
  goWild: { type: Boolean }
1419
1683
  },
1420
- setup(r, { expose: e }) {
1421
- const t = r, { pass: o } = B(() => new ye(t.dtSize), t);
1422
- e({ pass: o });
1423
- const { onBeforeRender: a } = W();
1424
- return a(({ invalidate: s }) => s()), g(
1425
- [[() => t.goWild, "goWild"]],
1684
+ setup(r, { expose: t }) {
1685
+ const e = r, { pass: o } = F(() => new Be(e.dtSize), e);
1686
+ t({ pass: o });
1687
+ const { onBeforeRender: s } = U();
1688
+ return s(({ invalidate: a }) => a()), p(
1689
+ [[() => e.goWild, "goWild"]],
1426
1690
  o,
1427
- () => new ye()
1691
+ () => new Be()
1428
1692
  ), () => {
1429
1693
  };
1430
1694
  }
1431
- }), I = {
1695
+ }), V = {
1432
1696
  name: "HalftoneShader",
1433
1697
  uniforms: {
1434
1698
  tDiffuse: { value: null },
@@ -1732,28 +1996,28 @@ const _t = /* @__PURE__ */ c({
1732
1996
  }`
1733
1997
  )
1734
1998
  };
1735
- class At extends T {
1736
- constructor(e, t, o) {
1737
- super(), this.uniforms = M.clone(I.uniforms), this.material = new S({
1999
+ class Pt extends T {
2000
+ constructor(t, e, o) {
2001
+ super(), this.uniforms = E.clone(V.uniforms), this.material = new S({
1738
2002
  uniforms: this.uniforms,
1739
- fragmentShader: I.fragmentShader,
1740
- vertexShader: I.vertexShader
1741
- }), this.uniforms.width.value = e, this.uniforms.height.value = t;
1742
- for (const a in o)
1743
- o.hasOwnProperty(a) && this.uniforms.hasOwnProperty(a) && (this.uniforms[a].value = o[a]);
1744
- this.fsQuad = new L(this.material);
2003
+ fragmentShader: V.fragmentShader,
2004
+ vertexShader: V.vertexShader
2005
+ }), this.uniforms.width.value = t, this.uniforms.height.value = e;
2006
+ for (const s in o)
2007
+ o.hasOwnProperty(s) && this.uniforms.hasOwnProperty(s) && (this.uniforms[s].value = o[s]);
2008
+ this.fsQuad = new O(this.material);
1745
2009
  }
1746
- render(e, t, o) {
1747
- 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));
2010
+ render(t, e, o) {
2011
+ this.material.uniforms.tDiffuse.value = o.texture, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
1748
2012
  }
1749
- setSize(e, t) {
1750
- this.uniforms.width.value = e, this.uniforms.height.value = t;
2013
+ setSize(t, e) {
2014
+ this.uniforms.width.value = t, this.uniforms.height.value = e;
1751
2015
  }
1752
2016
  dispose() {
1753
2017
  this.material.dispose(), this.fsQuad.dispose();
1754
2018
  }
1755
2019
  }
1756
- const $t = /* @__PURE__ */ c({
2020
+ const po = /* @__PURE__ */ u({
1757
2021
  __name: "Halftone",
1758
2022
  props: {
1759
2023
  shape: {},
@@ -1766,46 +2030,46 @@ const $t = /* @__PURE__ */ c({
1766
2030
  greyscale: { type: Boolean },
1767
2031
  blendingMode: {}
1768
2032
  },
1769
- setup(r, { expose: e }) {
1770
- const t = r, { sizes: o } = A(), a = F(
2033
+ setup(r, { expose: t }) {
2034
+ const e = r, { sizes: o } = A(), s = L(
1771
2035
  () => Object.fromEntries(
1772
- Object.entries(t).filter(([i, n]) => n !== void 0)
2036
+ Object.entries(e).filter(([i, n]) => n !== void 0)
1773
2037
  )
1774
- ), { pass: s } = B(() => new At(
2038
+ ), { pass: a } = F(() => new Pt(
1775
2039
  o.width.value,
1776
2040
  o.height.value,
1777
- a.value
1778
- ), t);
1779
- return e({ pass: s }), v(() => {
1780
- s.value.setSize(o.width.value, o.height.value);
2041
+ s.value
2042
+ ), e);
2043
+ return t({ pass: a }), v(() => {
2044
+ a.value.setSize(o.width.value, o.height.value);
1781
2045
  }), v(() => {
1782
- Object.entries(t).forEach(([i, n]) => {
1783
- i in s.value.uniforms && (s.value.uniforms[i].value = n ?? I.uniforms[i].value);
2046
+ Object.entries(e).forEach(([i, n]) => {
2047
+ i in a.value.uniforms && (a.value.uniforms[i].value = n ?? V.uniforms[i].value);
1784
2048
  });
1785
2049
  }), () => {
1786
2050
  };
1787
2051
  }
1788
2052
  });
1789
- class Me extends T {
1790
- constructor(e, t, o, a = {}) {
1791
- super(), this.pixelSize = e, this.resolution = new d(), this.renderResolution = new d(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new Je(), this.fsQuad = new L(this.pixelatedMaterial), this.scene = t, this.camera = o, this.normalEdgeStrength = a.normalEdgeStrength || 0.3, this.depthEdgeStrength = a.depthEdgeStrength || 0.4, this.beautyRenderTarget = new D(), this.beautyRenderTarget.texture.minFilter = O, this.beautyRenderTarget.texture.magFilter = O, this.beautyRenderTarget.texture.type = w, this.beautyRenderTarget.depthTexture = new Ze(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = O, this.normalRenderTarget.texture.magFilter = O, this.normalRenderTarget.texture.type = w;
2053
+ class Fe extends T {
2054
+ constructor(t, e, o, s = {}) {
2055
+ super(), this.pixelSize = t, this.resolution = new c(), this.renderResolution = new c(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new st(), this.fsQuad = new O(this.pixelatedMaterial), this.scene = e, this.camera = o, this.normalEdgeStrength = s.normalEdgeStrength || 0.3, this.depthEdgeStrength = s.depthEdgeStrength || 0.4, this.beautyRenderTarget = new D(), this.beautyRenderTarget.texture.minFilter = R, this.beautyRenderTarget.texture.magFilter = R, this.beautyRenderTarget.texture.type = M, this.beautyRenderTarget.depthTexture = new at(), this.normalRenderTarget = new D(), this.normalRenderTarget.texture.minFilter = R, this.normalRenderTarget.texture.magFilter = R, this.normalRenderTarget.texture.type = M;
1792
2056
  }
1793
2057
  dispose() {
1794
2058
  this.beautyRenderTarget.dispose(), this.normalRenderTarget.dispose(), this.pixelatedMaterial.dispose(), this.normalMaterial.dispose(), this.fsQuad.dispose();
1795
2059
  }
1796
- setSize(e, t) {
1797
- this.resolution.set(e, t), this.renderResolution.set(e / this.pixelSize | 0, t / this.pixelSize | 0);
1798
- const { x: o, y: a } = this.renderResolution;
1799
- this.beautyRenderTarget.setSize(o, a), this.normalRenderTarget.setSize(o, a), this.fsQuad.material.uniforms.resolution.value.set(o, a, 1 / o, 1 / a);
2060
+ setSize(t, e) {
2061
+ this.resolution.set(t, e), this.renderResolution.set(t / this.pixelSize | 0, e / this.pixelSize | 0);
2062
+ const { x: o, y: s } = this.renderResolution;
2063
+ this.beautyRenderTarget.setSize(o, s), this.normalRenderTarget.setSize(o, s), this.fsQuad.material.uniforms.resolution.value.set(o, s, 1 / o, 1 / s);
1800
2064
  }
1801
- setPixelSize(e) {
1802
- this.pixelSize = e, this.setSize(this.resolution.x, this.resolution.y);
2065
+ setPixelSize(t) {
2066
+ this.pixelSize = t, this.setSize(this.resolution.x, this.resolution.y);
1803
2067
  }
1804
- render(e, t) {
2068
+ render(t, e) {
1805
2069
  const o = this.fsQuad.material.uniforms;
1806
- o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, e.setRenderTarget(this.beautyRenderTarget), e.render(this.scene, this.camera);
1807
- const a = this.scene.overrideMaterial;
1808
- e.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, e.render(this.scene, this.camera), this.scene.overrideMaterial = a, o.tDiffuse.value = this.beautyRenderTarget.texture, o.tDepth.value = this.beautyRenderTarget.depthTexture, o.tNormal.value = this.normalRenderTarget.texture, this.renderToScreen ? e.setRenderTarget(null) : (e.setRenderTarget(t), this.clear && e.clear()), this.fsQuad.render(e);
2070
+ o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, t.setRenderTarget(this.beautyRenderTarget), t.render(this.scene, this.camera);
2071
+ const s = this.scene.overrideMaterial;
2072
+ t.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, t.render(this.scene, this.camera), this.scene.overrideMaterial = s, o.tDiffuse.value = this.beautyRenderTarget.texture, o.tDepth.value = this.beautyRenderTarget.depthTexture, o.tNormal.value = this.normalRenderTarget.texture, this.renderToScreen ? t.setRenderTarget(null) : (t.setRenderTarget(e), this.clear && t.clear()), this.fsQuad.render(t);
1809
2073
  }
1810
2074
  createPixelatedMaterial() {
1811
2075
  return new S({
@@ -1814,7 +2078,7 @@ class Me extends T {
1814
2078
  tDepth: { value: null },
1815
2079
  tNormal: { value: null },
1816
2080
  resolution: {
1817
- value: new _e(
2081
+ value: new rt(
1818
2082
  this.renderResolution.x,
1819
2083
  this.renderResolution.y,
1820
2084
  1 / this.renderResolution.x,
@@ -1933,28 +2197,28 @@ class Me extends T {
1933
2197
  });
1934
2198
  }
1935
2199
  }
1936
- const eo = /* @__PURE__ */ c({
2200
+ const mo = /* @__PURE__ */ u({
1937
2201
  __name: "Pixelation",
1938
2202
  props: {
1939
2203
  pixelSize: {},
1940
2204
  depthEdgeStrength: {},
1941
2205
  normalEdgeStrength: {}
1942
2206
  },
1943
- setup(r, { expose: e }) {
1944
- const t = r, { scene: o, camera: a } = A(), { pass: s } = B(() => new Me(t.pixelSize, o.value, a.value), t);
1945
- return e({ pass: s }), v(() => {
1946
- s.value.setPixelSize(t.pixelSize);
1947
- }), g(
2207
+ setup(r, { expose: t }) {
2208
+ const e = r, { scene: o, camera: s } = A(), { pass: a } = F(() => new Fe(e.pixelSize, o.value, s.value), e);
2209
+ return t({ pass: a }), v(() => {
2210
+ a.value.setPixelSize(e.pixelSize);
2211
+ }), p(
1948
2212
  [
1949
- [() => t.depthEdgeStrength, "depthEdgeStrength"],
1950
- [() => t.normalEdgeStrength, "normalEdgeStrength"]
2213
+ [() => e.depthEdgeStrength, "depthEdgeStrength"],
2214
+ [() => e.normalEdgeStrength, "normalEdgeStrength"]
1951
2215
  ],
1952
- s,
1953
- () => new Me(1, o.value, a.value)
2216
+ a,
2217
+ () => new Fe(1, o.value, s.value)
1954
2218
  ), () => {
1955
2219
  };
1956
2220
  }
1957
- }), wt = {
2221
+ }), Lt = {
1958
2222
  name: "OutputShader",
1959
2223
  uniforms: {
1960
2224
  tDiffuse: { value: null },
@@ -1983,7 +2247,7 @@ const eo = /* @__PURE__ */ c({
1983
2247
  fragmentShader: (
1984
2248
  /* glsl */
1985
2249
  `
1986
-
2250
+
1987
2251
  precision highp float;
1988
2252
 
1989
2253
  uniform sampler2D tDiffuse;
@@ -2023,6 +2287,10 @@ const eo = /* @__PURE__ */ c({
2023
2287
 
2024
2288
  gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );
2025
2289
 
2290
+ #elif defined( CUSTOM_TONE_MAPPING )
2291
+
2292
+ gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );
2293
+
2026
2294
  #endif
2027
2295
 
2028
2296
  // color space
@@ -2036,39 +2304,39 @@ const eo = /* @__PURE__ */ c({
2036
2304
  }`
2037
2305
  )
2038
2306
  };
2039
- class Tt extends T {
2307
+ class Ot extends T {
2040
2308
  constructor() {
2041
2309
  super();
2042
- const e = wt;
2043
- this.uniforms = M.clone(e.uniforms), this.material = new $e({
2044
- name: e.name,
2310
+ const t = Lt;
2311
+ this.uniforms = E.clone(t.uniforms), this.material = new it({
2312
+ name: t.name,
2045
2313
  uniforms: this.uniforms,
2046
- vertexShader: e.vertexShader,
2047
- fragmentShader: e.fragmentShader
2048
- }), this.fsQuad = new L(this.material), this._outputColorSpace = null, this._toneMapping = null;
2314
+ vertexShader: t.vertexShader,
2315
+ fragmentShader: t.fragmentShader
2316
+ }), this.fsQuad = new O(this.material), this._outputColorSpace = null, this._toneMapping = null;
2049
2317
  }
2050
- render(e, t, o) {
2051
- 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 = {}, et.getTransfer(this._outputColorSpace) === tt && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === ot ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === at ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === st ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === rt ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === it ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === nt && (this.material.defines.NEUTRAL_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));
2318
+ render(t, e, o) {
2319
+ this.uniforms.tDiffuse.value = o.texture, this.uniforms.toneMappingExposure.value = t.toneMappingExposure, (this._outputColorSpace !== t.outputColorSpace || this._toneMapping !== t.toneMapping) && (this._outputColorSpace = t.outputColorSpace, this._toneMapping = t.toneMapping, this.material.defines = {}, nt.getTransfer(this._outputColorSpace) === lt && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === ut ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === ct ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === dt ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === ft ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === ht ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === pt ? this.material.defines.NEUTRAL_TONE_MAPPING = "" : this._toneMapping === mt && (this.material.defines.CUSTOM_TONE_MAPPING = ""), this.material.needsUpdate = !0), this.renderToScreen === !0 ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil), this.fsQuad.render(t));
2052
2320
  }
2053
2321
  dispose() {
2054
2322
  this.material.dispose(), this.fsQuad.dispose();
2055
2323
  }
2056
2324
  }
2057
- const to = /* @__PURE__ */ c({
2325
+ const go = /* @__PURE__ */ u({
2058
2326
  __name: "Output",
2059
- setup(r, { expose: e }) {
2060
- const { pass: t } = B(() => new Tt());
2061
- return e({ pass: t }), () => {
2327
+ setup(r, { expose: t }) {
2328
+ const { pass: e } = F(() => new Ot());
2329
+ return t({ pass: e }), () => {
2062
2330
  };
2063
2331
  }
2064
- }), G = {
2332
+ }), I = {
2065
2333
  name: "SMAAEdgesShader",
2066
2334
  defines: {
2067
2335
  SMAA_THRESHOLD: "0.1"
2068
2336
  },
2069
2337
  uniforms: {
2070
2338
  tDiffuse: { value: null },
2071
- resolution: { value: new d(1 / 1024, 1 / 512) }
2339
+ resolution: { value: new c(1 / 1024, 1 / 512) }
2072
2340
  },
2073
2341
  vertexShader: (
2074
2342
  /* glsl */
@@ -2162,7 +2430,7 @@ const to = /* @__PURE__ */ c({
2162
2430
 
2163
2431
  }`
2164
2432
  )
2165
- }, X = {
2433
+ }, j = {
2166
2434
  name: "SMAAWeightsShader",
2167
2435
  defines: {
2168
2436
  SMAA_MAX_SEARCH_STEPS: "8",
@@ -2174,7 +2442,7 @@ const to = /* @__PURE__ */ c({
2174
2442
  tDiffuse: { value: null },
2175
2443
  tArea: { value: null },
2176
2444
  tSearch: { value: null },
2177
- resolution: { value: new d(1 / 1024, 1 / 512) }
2445
+ resolution: { value: new c(1 / 1024, 1 / 512) }
2178
2446
  },
2179
2447
  vertexShader: (
2180
2448
  /* glsl */
@@ -2412,12 +2680,12 @@ const to = /* @__PURE__ */ c({
2412
2680
 
2413
2681
  }`
2414
2682
  )
2415
- }, J = {
2683
+ }, te = {
2416
2684
  name: "SMAABlendShader",
2417
2685
  uniforms: {
2418
2686
  tDiffuse: { value: null },
2419
2687
  tColor: { value: null },
2420
- resolution: { value: new d(1 / 1024, 1 / 512) }
2688
+ resolution: { value: new c(1 / 1024, 1 / 512) }
2421
2689
  },
2422
2690
  vertexShader: (
2423
2691
  /* glsl */
@@ -2502,43 +2770,43 @@ const to = /* @__PURE__ */ c({
2502
2770
  }`
2503
2771
  )
2504
2772
  };
2505
- class yt extends T {
2506
- constructor(e, t) {
2507
- super(), this.edgesRT = new D(e, t, {
2773
+ class Rt extends T {
2774
+ constructor(t, e) {
2775
+ super(), this.edgesRT = new D(t, e, {
2508
2776
  depthBuffer: !1,
2509
- type: w
2510
- }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(e, t, {
2777
+ type: M
2778
+ }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(t, e, {
2511
2779
  depthBuffer: !1,
2512
- type: w
2780
+ type: M
2513
2781
  }), this.weightsRT.texture.name = "SMAAPass.weights";
2514
- const o = this, a = new Image();
2515
- a.src = this.getAreaTexture(), a.onload = function() {
2782
+ const o = this, s = new Image();
2783
+ s.src = this.getAreaTexture(), s.onload = function() {
2516
2784
  o.areaTexture.needsUpdate = !0;
2517
- }, this.areaTexture = new ve(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = a, this.areaTexture.minFilter = lt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2518
- const s = new Image();
2519
- s.src = this.getSearchTexture(), s.onload = function() {
2785
+ }, this.areaTexture = new Te(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = gt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2786
+ const a = new Image();
2787
+ a.src = this.getSearchTexture(), a.onload = function() {
2520
2788
  o.searchTexture.needsUpdate = !0;
2521
- }, this.searchTexture = new ve(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = s, this.searchTexture.magFilter = O, this.searchTexture.minFilter = O, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = M.clone(G.uniforms), this.uniformsEdges.resolution.value.set(1 / e, 1 / t), this.materialEdges = new S({
2522
- defines: Object.assign({}, G.defines),
2789
+ }, this.searchTexture = new Te(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = R, this.searchTexture.minFilter = R, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = E.clone(I.uniforms), this.uniformsEdges.resolution.value.set(1 / t, 1 / e), this.materialEdges = new S({
2790
+ defines: Object.assign({}, I.defines),
2523
2791
  uniforms: this.uniformsEdges,
2524
- vertexShader: G.vertexShader,
2525
- fragmentShader: G.fragmentShader
2526
- }), this.uniformsWeights = M.clone(X.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 S({
2527
- defines: Object.assign({}, X.defines),
2792
+ vertexShader: I.vertexShader,
2793
+ fragmentShader: I.fragmentShader
2794
+ }), this.uniformsWeights = E.clone(j.uniforms), this.uniformsWeights.resolution.value.set(1 / t, 1 / e), this.uniformsWeights.tDiffuse.value = this.edgesRT.texture, this.uniformsWeights.tArea.value = this.areaTexture, this.uniformsWeights.tSearch.value = this.searchTexture, this.materialWeights = new S({
2795
+ defines: Object.assign({}, j.defines),
2528
2796
  uniforms: this.uniformsWeights,
2529
- vertexShader: X.vertexShader,
2530
- fragmentShader: X.fragmentShader
2531
- }), this.uniformsBlend = M.clone(J.uniforms), this.uniformsBlend.resolution.value.set(1 / e, 1 / t), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new S({
2797
+ vertexShader: j.vertexShader,
2798
+ fragmentShader: j.fragmentShader
2799
+ }), this.uniformsBlend = E.clone(te.uniforms), this.uniformsBlend.resolution.value.set(1 / t, 1 / e), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new S({
2532
2800
  uniforms: this.uniformsBlend,
2533
- vertexShader: J.vertexShader,
2534
- fragmentShader: J.fragmentShader
2535
- }), this.fsQuad = new L(null);
2801
+ vertexShader: te.vertexShader,
2802
+ fragmentShader: te.fragmentShader
2803
+ }), this.fsQuad = new O(null);
2536
2804
  }
2537
- render(e, t, o) {
2538
- 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));
2805
+ render(t, e, o) {
2806
+ this.uniformsEdges.tDiffuse.value = o.texture, this.fsQuad.material = this.materialEdges, t.setRenderTarget(this.edgesRT), this.clear && t.clear(), this.fsQuad.render(t), this.fsQuad.material = this.materialWeights, t.setRenderTarget(this.weightsRT), this.clear && t.clear(), this.fsQuad.render(t), this.uniformsBlend.tColor.value = o.texture, this.fsQuad.material = this.materialBlend, this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(e), this.clear && t.clear(), this.fsQuad.render(t));
2539
2807
  }
2540
- setSize(e, t) {
2541
- 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);
2808
+ setSize(t, e) {
2809
+ this.edgesRT.setSize(t, e), this.weightsRT.setSize(t, e), this.materialEdges.uniforms.resolution.value.set(1 / t, 1 / e), this.materialWeights.uniforms.resolution.value.set(1 / t, 1 / e), this.materialBlend.uniforms.resolution.value.set(1 / t, 1 / e);
2542
2810
  }
2543
2811
  getAreaTexture() {
2544
2812
  return "data:image/png;base64,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";
@@ -2550,27 +2818,27 @@ class yt extends T {
2550
2818
  this.edgesRT.dispose(), this.weightsRT.dispose(), this.areaTexture.dispose(), this.searchTexture.dispose(), this.materialEdges.dispose(), this.materialWeights.dispose(), this.materialBlend.dispose(), this.fsQuad.dispose();
2551
2819
  }
2552
2820
  }
2553
- const oo = /* @__PURE__ */ c({
2821
+ const vo = /* @__PURE__ */ u({
2554
2822
  __name: "SMAA",
2555
2823
  props: {
2556
2824
  width: {},
2557
2825
  height: {}
2558
2826
  },
2559
- setup(r, { expose: e }) {
2560
- const t = r, { sizes: o } = A(), { pixelRatio: a } = Le(), s = F(() => t.width ?? o.width.value * a.value), i = F(() => t.height ?? o.height.value * a.value), { pass: n } = B(() => new yt(s.value, i.value), t);
2561
- return e({ pass: n }), v(() => {
2562
- n.value.setSize(s.value, i.value);
2827
+ setup(r, { expose: t }) {
2828
+ const e = r, { sizes: o } = A(), { pixelRatio: s } = We(), a = L(() => e.width ?? o.width.value * s.value), i = L(() => e.height ?? o.height.value * s.value), { pass: n } = F(() => new Rt(a.value, i.value), e);
2829
+ return t({ pass: n }), v(() => {
2830
+ n.value.setSize(a.value, i.value);
2563
2831
  }), () => {
2564
2832
  };
2565
2833
  }
2566
- }), ze = {
2834
+ }), Xe = {
2567
2835
  name: "LuminosityHighPassShader",
2568
2836
  shaderID: "luminosityHighPass",
2569
2837
  uniforms: {
2570
2838
  tDiffuse: { value: null },
2571
2839
  luminosityThreshold: { value: 1 },
2572
2840
  smoothWidth: { value: 1 },
2573
- defaultColor: { value: new j(0) },
2841
+ defaultColor: { value: new Y(0) },
2574
2842
  defaultOpacity: { value: 0 }
2575
2843
  },
2576
2844
  vertexShader: (
@@ -2614,80 +2882,80 @@ const oo = /* @__PURE__ */ c({
2614
2882
  }`
2615
2883
  )
2616
2884
  };
2617
- class R extends T {
2618
- constructor(e, t, o, a) {
2619
- super(), this.strength = t !== void 0 ? t : 1, this.radius = o, this.threshold = a, this.resolution = e !== void 0 ? new d(e.x, e.y) : new d(256, 256), this.clearColor = new j(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
2620
- let s = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2621
- this.renderTargetBright = new D(s, i, { type: w }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2622
- for (let p = 0; p < this.nMips; p++) {
2623
- const f = new D(s, i, { type: w });
2624
- f.texture.name = "UnrealBloomPass.h" + p, f.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(f);
2625
- const y = new D(s, i, { type: w });
2626
- y.texture.name = "UnrealBloomPass.v" + p, y.texture.generateMipmaps = !1, this.renderTargetsVertical.push(y), s = Math.round(s / 2), i = Math.round(i / 2);
2885
+ class B extends T {
2886
+ constructor(t, e, o, s) {
2887
+ super(), this.strength = e !== void 0 ? e : 1, this.radius = o, this.threshold = s, this.resolution = t !== void 0 ? new c(t.x, t.y) : new c(256, 256), this.clearColor = new Y(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
2888
+ let a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2889
+ this.renderTargetBright = new D(a, i, { type: M }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
2890
+ for (let m = 0; m < this.nMips; m++) {
2891
+ const h = new D(a, i, { type: M });
2892
+ h.texture.name = "UnrealBloomPass.h" + m, h.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(h);
2893
+ const C = new D(a, i, { type: M });
2894
+ C.texture.name = "UnrealBloomPass.v" + m, C.texture.generateMipmaps = !1, this.renderTargetsVertical.push(C), a = Math.round(a / 2), i = Math.round(i / 2);
2627
2895
  }
2628
- const n = ze;
2629
- this.highPassUniforms = M.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = a, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new S({
2896
+ const n = Xe;
2897
+ this.highPassUniforms = E.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = s, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new S({
2630
2898
  uniforms: this.highPassUniforms,
2631
2899
  vertexShader: n.vertexShader,
2632
2900
  fragmentShader: n.fragmentShader
2633
2901
  }), this.separableBlurMaterials = [];
2634
2902
  const l = [3, 5, 7, 9, 11];
2635
- s = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2636
- for (let p = 0; p < this.nMips; p++)
2637
- this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[p])), this.separableBlurMaterials[p].uniforms.invSize.value = new d(1 / s, 1 / i), s = Math.round(s / 2), i = Math.round(i / 2);
2638
- 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;
2903
+ a = Math.round(this.resolution.x / 2), i = Math.round(this.resolution.y / 2);
2904
+ for (let m = 0; m < this.nMips; m++)
2905
+ this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[m])), this.separableBlurMaterials[m].uniforms.invSize.value = new c(1 / a, 1 / i), a = Math.round(a / 2), i = Math.round(i / 2);
2906
+ this.compositeMaterial = this.getCompositeMaterial(this.nMips), this.compositeMaterial.uniforms.blurTexture1.value = this.renderTargetsVertical[0].texture, this.compositeMaterial.uniforms.blurTexture2.value = this.renderTargetsVertical[1].texture, this.compositeMaterial.uniforms.blurTexture3.value = this.renderTargetsVertical[2].texture, this.compositeMaterial.uniforms.blurTexture4.value = this.renderTargetsVertical[3].texture, this.compositeMaterial.uniforms.blurTexture5.value = this.renderTargetsVertical[4].texture, this.compositeMaterial.uniforms.bloomStrength.value = e, this.compositeMaterial.uniforms.bloomRadius.value = 0.1;
2639
2907
  const x = [1, 0.8, 0.6, 0.4, 0.2];
2640
2908
  this.compositeMaterial.uniforms.bloomFactors.value = x, this.bloomTintColors = [new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2641
- const u = Be;
2642
- this.copyUniforms = M.clone(u.uniforms), this.blendMaterial = new S({
2909
+ const d = Ge;
2910
+ this.copyUniforms = E.clone(d.uniforms), this.blendMaterial = new S({
2643
2911
  uniforms: this.copyUniforms,
2644
- vertexShader: u.vertexShader,
2645
- fragmentShader: u.fragmentShader,
2646
- blending: ut,
2912
+ vertexShader: d.vertexShader,
2913
+ fragmentShader: d.fragmentShader,
2914
+ blending: vt,
2647
2915
  depthTest: !1,
2648
2916
  depthWrite: !1,
2649
2917
  transparent: !0
2650
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new j(), this.oldClearAlpha = 1, this.basic = new ct(), this.fsQuad = new L(null);
2918
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Y(), this.oldClearAlpha = 1, this.basic = new xt(), this.fsQuad = new O(null);
2651
2919
  }
2652
2920
  dispose() {
2653
- for (let e = 0; e < this.renderTargetsHorizontal.length; e++)
2654
- this.renderTargetsHorizontal[e].dispose();
2655
- for (let e = 0; e < this.renderTargetsVertical.length; e++)
2656
- this.renderTargetsVertical[e].dispose();
2921
+ for (let t = 0; t < this.renderTargetsHorizontal.length; t++)
2922
+ this.renderTargetsHorizontal[t].dispose();
2923
+ for (let t = 0; t < this.renderTargetsVertical.length; t++)
2924
+ this.renderTargetsVertical[t].dispose();
2657
2925
  this.renderTargetBright.dispose();
2658
- for (let e = 0; e < this.separableBlurMaterials.length; e++)
2659
- this.separableBlurMaterials[e].dispose();
2926
+ for (let t = 0; t < this.separableBlurMaterials.length; t++)
2927
+ this.separableBlurMaterials[t].dispose();
2660
2928
  this.compositeMaterial.dispose(), this.blendMaterial.dispose(), this.basic.dispose(), this.fsQuad.dispose();
2661
2929
  }
2662
- setSize(e, t) {
2663
- let o = Math.round(e / 2), a = Math.round(t / 2);
2664
- this.renderTargetBright.setSize(o, a);
2665
- for (let s = 0; s < this.nMips; s++)
2666
- this.renderTargetsHorizontal[s].setSize(o, a), this.renderTargetsVertical[s].setSize(o, a), this.separableBlurMaterials[s].uniforms.invSize.value = new d(1 / o, 1 / a), o = Math.round(o / 2), a = Math.round(a / 2);
2930
+ setSize(t, e) {
2931
+ let o = Math.round(t / 2), s = Math.round(e / 2);
2932
+ this.renderTargetBright.setSize(o, s);
2933
+ for (let a = 0; a < this.nMips; a++)
2934
+ this.renderTargetsHorizontal[a].setSize(o, s), this.renderTargetsVertical[a].setSize(o, s), this.separableBlurMaterials[a].uniforms.invSize.value = new c(1 / o, 1 / s), o = Math.round(o / 2), s = Math.round(s / 2);
2667
2935
  }
2668
- render(e, t, o, a, s) {
2669
- e.getClearColor(this._oldClearColor), this.oldClearAlpha = e.getClearAlpha();
2670
- const i = e.autoClear;
2671
- e.autoClear = !1, e.setClearColor(this.clearColor, 0), s && 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);
2936
+ render(t, e, o, s, a) {
2937
+ t.getClearColor(this._oldClearColor), this.oldClearAlpha = t.getClearAlpha();
2938
+ const i = t.autoClear;
2939
+ t.autoClear = !1, t.setClearColor(this.clearColor, 0), a && t.state.buffers.stencil.setTest(!1), this.renderToScreen && (this.fsQuad.material = this.basic, this.basic.map = o.texture, t.setRenderTarget(null), t.clear(), this.fsQuad.render(t)), this.highPassUniforms.tDiffuse.value = o.texture, this.highPassUniforms.luminosityThreshold.value = this.threshold, this.fsQuad.material = this.materialHighPassFilter, t.setRenderTarget(this.renderTargetBright), t.clear(), this.fsQuad.render(t);
2672
2940
  let n = this.renderTargetBright;
2673
2941
  for (let l = 0; l < this.nMips; l++)
2674
- this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = R.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 = R.BlurDirectionY, e.setRenderTarget(this.renderTargetsVertical[l]), e.clear(), this.fsQuad.render(e), n = this.renderTargetsVertical[l];
2675
- 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, s && 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;
2942
+ this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionX, t.setRenderTarget(this.renderTargetsHorizontal[l]), t.clear(), this.fsQuad.render(t), this.separableBlurMaterials[l].uniforms.colorTexture.value = this.renderTargetsHorizontal[l].texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionY, t.setRenderTarget(this.renderTargetsVertical[l]), t.clear(), this.fsQuad.render(t), n = this.renderTargetsVertical[l];
2943
+ this.fsQuad.material = this.compositeMaterial, this.compositeMaterial.uniforms.bloomStrength.value = this.strength, this.compositeMaterial.uniforms.bloomRadius.value = this.radius, this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors, t.setRenderTarget(this.renderTargetsHorizontal[0]), t.clear(), this.fsQuad.render(t), this.fsQuad.material = this.blendMaterial, this.copyUniforms.tDiffuse.value = this.renderTargetsHorizontal[0].texture, a && t.state.buffers.stencil.setTest(!0), this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(o), this.fsQuad.render(t)), t.setClearColor(this._oldClearColor, this.oldClearAlpha), t.autoClear = i;
2676
2944
  }
2677
- getSeparableBlurMaterial(e) {
2678
- const t = [];
2679
- for (let o = 0; o < e; o++)
2680
- t.push(0.39894 * Math.exp(-0.5 * o * o / (e * e)) / e);
2945
+ getSeparableBlurMaterial(t) {
2946
+ const e = [];
2947
+ for (let o = 0; o < t; o++)
2948
+ e.push(0.39894 * Math.exp(-0.5 * o * o / (t * t)) / t);
2681
2949
  return new S({
2682
2950
  defines: {
2683
- KERNEL_RADIUS: e
2951
+ KERNEL_RADIUS: t
2684
2952
  },
2685
2953
  uniforms: {
2686
2954
  colorTexture: { value: null },
2687
- invSize: { value: new d(0.5, 0.5) },
2955
+ invSize: { value: new c(0.5, 0.5) },
2688
2956
  // inverse texture size
2689
- direction: { value: new d(0.5, 0.5) },
2690
- gaussianCoefficients: { value: t }
2957
+ direction: { value: new c(0.5, 0.5) },
2958
+ gaussianCoefficients: { value: e }
2691
2959
  // precomputed Gaussian coefficients
2692
2960
  },
2693
2961
  vertexShader: `varying vec2 vUv;
@@ -2718,10 +2986,10 @@ class R extends T {
2718
2986
  }`
2719
2987
  });
2720
2988
  }
2721
- getCompositeMaterial(e) {
2989
+ getCompositeMaterial(t) {
2722
2990
  return new S({
2723
2991
  defines: {
2724
- NUM_MIPS: e
2992
+ NUM_MIPS: t
2725
2993
  },
2726
2994
  uniforms: {
2727
2995
  blurTexture1: { value: null },
@@ -2765,64 +3033,70 @@ class R extends T {
2765
3033
  });
2766
3034
  }
2767
3035
  }
2768
- R.BlurDirectionX = new d(1, 0);
2769
- R.BlurDirectionY = new d(0, 1);
2770
- const ao = /* @__PURE__ */ c({
3036
+ B.BlurDirectionX = new c(1, 0);
3037
+ B.BlurDirectionY = new c(0, 1);
3038
+ const xo = /* @__PURE__ */ u({
2771
3039
  __name: "UnrealBloom",
2772
3040
  props: {
2773
3041
  radius: { default: 0 },
2774
3042
  strength: { default: 1 },
2775
3043
  threshold: { default: 0 }
2776
3044
  },
2777
- setup(r, { expose: e }) {
2778
- const t = r, { sizes: o } = A(), { pass: a } = B(() => new R(
2779
- new d(o.width.value, o.height.value),
2780
- t.radius,
2781
- t.strength,
2782
- t.threshold
2783
- ), t);
2784
- return e({ pass: a }), v(() => {
2785
- var s;
2786
- a.value.radius = t.radius ?? ((s = a.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : s.value) ?? 0.1;
3045
+ setup(r, { expose: t }) {
3046
+ const e = r, { sizes: o } = A(), { pass: s } = F(() => new B(
3047
+ new c(o.width.value, o.height.value),
3048
+ e.radius,
3049
+ e.strength,
3050
+ e.threshold
3051
+ ), e);
3052
+ return t({ pass: s }), v(() => {
3053
+ var a;
3054
+ s.value.radius = e.radius ?? ((a = s.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : a.value) ?? 0.1;
2787
3055
  }), v(() => {
2788
- var s;
2789
- a.value.strength = t.strength ?? ((s = a.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : s.value) ?? 1;
3056
+ var a;
3057
+ s.value.strength = e.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
2790
3058
  }), v(() => {
2791
- var s;
2792
- a.value.threshold = t.threshold ?? ((s = ze.uniforms.luminosityThreshold) == null ? void 0 : s.value) ?? 1;
3059
+ var a;
3060
+ s.value.threshold = e.threshold ?? ((a = Xe.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
2793
3061
  }), () => {
2794
3062
  };
2795
3063
  }
2796
3064
  });
2797
3065
  export {
2798
- Ut as BarrelBlurPmndrs,
2799
- Ot as BloomPmndrs,
2800
- Gt as ChromaticAberrationPmndrs,
2801
- Vt as ColorAveragePmndrs,
2802
- Rt as DepthOfFieldPmndrs,
2803
- Qt as DotScreenPmndrs,
2804
- Zt as EffectComposer,
2805
- Lt as EffectComposerPmndrs,
2806
- _t as Glitch,
2807
- Bt as GlitchPmndrs,
2808
- $t as Halftone,
2809
- Xt as HueSaturationPmndrs,
2810
- jt as KuwaharaPmndrs,
2811
- Yt as LensDistortionPmndrs,
2812
- Jt as LinocutPmndrs,
2813
- Nt as NoisePmndrs,
2814
- zt as OutlinePmndrs,
2815
- to as Output,
2816
- eo as Pixelation,
2817
- Ft as PixelationPmndrs,
2818
- oo as SMAA,
2819
- It as ScanlinePmndrs,
2820
- Kt as SepiaPmndrs,
2821
- qt as ShockWavePmndrs,
2822
- kt as TiltShiftPmndrs,
2823
- Ht as ToneMappingPmndrs,
2824
- ao as UnrealBloom,
2825
- Wt as VignettePmndrs,
2826
- B as useEffect,
2827
- h as useEffectPmndrs
3066
+ kt as BarrelBlurPmndrs,
3067
+ Gt as BloomPmndrs,
3068
+ co as BrightnessContrastPmndrs,
3069
+ Qt as ChromaticAberrationPmndrs,
3070
+ _t as ColorAveragePmndrs,
3071
+ no as ColorDepthPmndrs,
3072
+ Ht as DepthOfFieldPmndrs,
3073
+ ro as DepthPickingPassPmndrs,
3074
+ oo as DotScreenPmndrs,
3075
+ fo as EffectComposer,
3076
+ Ut as EffectComposerPmndrs,
3077
+ uo as FishEyePmndrs,
3078
+ ho as Glitch,
3079
+ Xt as GlitchPmndrs,
3080
+ io as GodRaysPmndrs,
3081
+ lo as GridPmndrs,
3082
+ po as Halftone,
3083
+ Kt as HueSaturationPmndrs,
3084
+ Zt as KuwaharaPmndrs,
3085
+ $t as LensDistortionPmndrs,
3086
+ ao as LinocutPmndrs,
3087
+ It as NoisePmndrs,
3088
+ jt as OutlinePmndrs,
3089
+ go as Output,
3090
+ mo as Pixelation,
3091
+ Vt as PixelationPmndrs,
3092
+ vo as SMAA,
3093
+ Jt as ScanlinePmndrs,
3094
+ so as SepiaPmndrs,
3095
+ eo as ShockWavePmndrs,
3096
+ to as TiltShiftPmndrs,
3097
+ qt as ToneMappingPmndrs,
3098
+ xo as UnrealBloom,
3099
+ Yt as VignettePmndrs,
3100
+ F as useEffect,
3101
+ f as useEffectPmndrs
2828
3102
  };