@tresjs/post-processing 2.0.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.
Files changed (29) hide show
  1. package/dist/core/pmndrs/BarrelBlurPmndrs.vue.d.ts +26 -0
  2. package/dist/core/pmndrs/BrightnessContrastPmndrs.vue.d.ts +20 -0
  3. package/dist/core/pmndrs/ChromaticAberrationPmndrs.vue.d.ts +27 -0
  4. package/dist/core/pmndrs/ColorAveragePmndrs.vue.d.ts +16 -0
  5. package/dist/core/pmndrs/ColorDepthPmndrs.vue.d.ts +20 -0
  6. package/dist/core/pmndrs/DepthPickingPassPmndrs.vue.d.ts +18 -0
  7. package/dist/core/pmndrs/DotScreenPmndrs.vue.d.ts +22 -0
  8. package/dist/core/pmndrs/FishEyePmndrs.vue.d.ts +30 -0
  9. package/dist/core/pmndrs/GodRaysPmndrs.vue.d.ts +65 -0
  10. package/dist/core/pmndrs/GridPmndrs.vue.d.ts +20 -0
  11. package/dist/core/pmndrs/HueSaturationPmndrs.vue.d.ts +22 -0
  12. package/dist/core/pmndrs/KuwaharaPmndrs.vue.d.ts +27 -0
  13. package/dist/core/pmndrs/LensDistortionPmndrs.vue.d.ts +25 -0
  14. package/dist/core/pmndrs/LinocutPmndrs.vue.d.ts +15 -0
  15. package/dist/core/pmndrs/NoisePmndrs.vue.d.ts +0 -1
  16. package/dist/core/pmndrs/ScanlinePmndrs.vue.d.ts +24 -0
  17. package/dist/core/pmndrs/SepiaPmndrs.vue.d.ts +16 -0
  18. package/dist/core/pmndrs/ShockWavePmndrs.vue.d.ts +29 -0
  19. package/dist/core/pmndrs/TiltShiftPmndrs.vue.d.ts +49 -0
  20. package/dist/core/pmndrs/ToneMappingPmndrs.vue.d.ts +36 -0
  21. package/dist/core/pmndrs/VignettePmndrs.vue.d.ts +4 -9
  22. package/dist/core/pmndrs/custom/barrel-blur/index.d.ts +36 -0
  23. package/dist/core/pmndrs/custom/fish-eye/index.d.ts +44 -0
  24. package/dist/core/pmndrs/custom/kuwahara/index.d.ts +31 -0
  25. package/dist/core/pmndrs/custom/linocut/index.d.ts +27 -0
  26. package/dist/core/pmndrs/index.d.ts +20 -1
  27. package/dist/tres-post-processing.js +1514 -541
  28. package/dist/tres-post-processing.umd.cjs +236 -14
  29. package/package.json +20 -19
@@ -1,58 +1,58 @@
1
1
  /**
2
2
  * name: @tresjs/post-processing
3
- * version: v2.0.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 D, defineComponent as p, shallowRef as N, provide as de, computed as O, onUnmounted as j, renderSlot as ue, inject as ce, watchEffect as m, nextTick as fe } from "vue";
9
- import { EffectComposer as K, RenderPass as Te, NormalPass as we, DepthDownsamplingPass as Me, EffectPass as ye, BloomEffect as Z, DepthOfFieldEffect as J, GlitchEffect as V, GlitchMode as Ce, BlendFunction as he, NoiseEffect as _, OutlineEffect as $, PixelationEffect as ee, VignetteTechnique as Ee, VignetteEffect as te } from "postprocessing";
10
- import { useTresContext as S, useLoop as z, normalizeColor as Y } from "@tresjs/core";
11
- import { HalfFloatType as b, OrthographicCamera as De, BufferGeometry as Le, Float32BufferAttribute as se, Mesh as Pe, ShaderMaterial as x, UniformsUtils as w, Vector2 as h, WebGLRenderTarget as M, NoBlending as Be, Clock as Re, Color as X, MathUtils as v, DataTexture as Ne, RedFormat as Oe, FloatType as ze, MeshNormalMaterial as Fe, NearestFilter as E, DepthTexture as We, Vector4 as Ue, RawShaderMaterial as He, ColorManagement as Ge, SRGBTransfer as Xe, LinearToneMapping as je, ReinhardToneMapping as Ie, CineonToneMapping as Ve, ACESFilmicToneMapping as Ye, AgXToneMapping as Qe, NeutralToneMapping as qe, Texture as ae, LinearFilter as ke, Vector3 as R, AdditiveBlending as Ke, MeshBasicMaterial as Ze } from "three";
12
- import { useDevicePixelRatio as me } from "@vueuse/core";
13
- const pe = /([^[.\]])+/g, Je = (i, 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(pe);
17
- return t == null ? void 0 : t.reduce((s, a) => s && s[a], i);
18
- }, re = (i, e, t) => {
19
- const s = Array.isArray(e) ? e : e.match(pe);
20
- s && s.reduce((a, r, o) => (a[r] === void 0 && (a[r] = {}), o === s.length - 1 && (a[r] = t), a[r]), i);
21
- }, q = (i, e) => {
22
- const t = { ...i };
23
- return e.forEach((s) => delete t[s]), t;
24
- }, ge = (i, e, t, s, a = {}) => D(i, (r) => {
25
- var o;
26
- if (e.value)
27
- if (r === void 0) {
28
- const n = s();
29
- re(e.value, t, Je(n, t)), (o = n.dispose) == null || o.call(n);
16
+ const e = Array.isArray(t) ? t : t.match(Ue);
17
+ return e == null ? void 0 : e.reduce((o, s) => o && o[s], r);
18
+ }, Ce = (r, t, e) => {
19
+ const o = Array.isArray(t) ? t : t.match(Ue);
20
+ o && o.reduce((s, a, i) => (s[a] === void 0 && (s[a] = {}), i === o.length - 1 && (s[a] = e), s[a]), r);
21
+ }, ae = (r, t) => {
22
+ const e = { ...r };
23
+ return t.forEach((o) => delete e[o]), e;
24
+ }, Q = (r, t, e, o, s = {}) => w(r, (a) => {
25
+ var i;
26
+ if (t.value)
27
+ if (a === void 0) {
28
+ const n = o();
29
+ Ce(t.value, e, bt(n, e)), (i = n.dispose) == null || i.call(n);
30
30
  } else
31
- re(e.value, t, i());
32
- }, a), F = (i, e, t) => i.map(([s, a]) => ge(
31
+ Ce(t.value, e, r());
32
+ }, s), p = (r, t, e) => r.map(([o, s]) => Q(
33
+ o,
34
+ t,
33
35
  s,
34
- e,
35
- a,
36
- t
37
- )), I = (i, e, t) => Object.keys(i).map((s) => ge(
38
- () => i[s],
39
- e,
40
- s,
41
- t
36
+ e
37
+ )), G = (r, t, e) => Object.keys(r).map((o) => Q(
38
+ () => r[o],
39
+ t,
40
+ o,
41
+ e
42
42
  ));
43
- class oe {
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"), s = window.WebGL2RenderingContext && t.getContext("webgl2");
55
- return s.drawingBufferColorSpace = e, s.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 oe {
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
- }, s = {
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 r = document.createElement("div");
73
- return r.id = "webglmessage", r.style.fontFamily = "monospace", r.style.fontSize = "13px", r.style.fontWeight = "normal", r.style.textAlign = "center", r.style.background = "#fff", r.style.color = "#000", r.style.padding = "1.5em", r.style.width = "400px", r.style.margin = "5em auto 0", s[e] ? a = a.replace("$0", "graphics card") : a = a.replace("$0", "browser"), a = a.replace("$1", t[e]), r.innerHTML = a, r;
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 oe {
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 ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
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 ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
96
96
  resolutionScale: {},
97
97
  autoClear: { type: Boolean, default: !0 },
98
98
  multisampling: { default: 0 },
99
- frameBufferType: { default: b }
99
+ frameBufferType: { default: M }
100
100
  },
101
101
  emits: ["render"],
102
- setup(i, { expose: e, emit: t }) {
103
- const s = i, a = t, { scene: r, camera: o, renderer: n, sizes: l, render: g } = S(), d = N(null);
104
- let c = null, u = null;
105
- de(ve, d), e({ composer: d });
106
- const T = () => {
107
- d.value && (u = new we(r.value, o.value), u.enabled = !1, d.value.addPass(u), s.resolutionScale !== void 0 && oe.isWebGL2Available() && (c = new Me({
108
- normalBuffer: u.texture,
109
- resolutionScale: s.resolutionScale
110
- }), c.enabled = !1, d.value.addPass(c)));
111
- }, W = O(() => {
112
- const f = new K(), B = {
113
- depthBuffer: s.depthBuffer !== void 0 ? s.depthBuffer : f.inputBuffer.depthBuffer,
114
- stencilBuffer: s.stencilBuffer !== void 0 ? s.stencilBuffer : f.inputBuffer.stencilBuffer,
115
- multisampling: oe.isWebGL2Available() ? s.multisampling !== void 0 ? s.multisampling : f.multisampling : 0,
116
- frameBufferType: s.frameBufferType !== void 0 ? s.frameBufferType : b
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
+ resolutionScale: o.resolutionScale
110
+ }), m.enabled = !1, d.value.addPass(m)));
111
+ }, H = L(() => {
112
+ const g = new le(), N = {
113
+ depthBuffer: o.depthBuffer !== void 0 ? o.depthBuffer : g.inputBuffer.depthBuffer,
114
+ stencilBuffer: o.stencilBuffer !== void 0 ? o.stencilBuffer : g.inputBuffer.stencilBuffer,
115
+ multisampling: Ee.isWebGL2Available() ? o.multisampling !== void 0 ? o.multisampling : g.multisampling : 0,
116
+ frameBufferType: o.frameBufferType !== void 0 ? o.frameBufferType : M
117
117
  };
118
- return f.dispose(), B;
119
- }), k = () => {
120
- var f;
121
- !n.value && !r.value && !o.value || ((f = d.value) == null || f.dispose(), d.value = new K(n.value, W.value), d.value.addPass(new Te(r.value, o.value)), s.disableNormalPass || T());
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
- D([n, r, o, () => s.disableNormalPass], () => {
124
- !l.width.value || !l.height.value || k();
125
- }), D(() => [l.width.value, l.height.value], ([f, B]) => {
126
- !f && !B || (d.value ? d.value.setSize(f, B) : k());
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: Ae } = z();
131
- return Ae(() => {
132
- if (s.enabled && n.value && d.value && l.width.value && l.height.value && g.frames.value > 0) {
133
- const f = n.value.autoClear;
134
- n.value.autoClear = s.autoClear, s.stencilBuffer && !s.autoClear && n.value.clearStencil(), d.value.render(), a("render", d.value), n.value.autoClear = f;
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
- g.frames.value = g.mode.value === "always" ? 1 : Math.max(0, g.frames.value - 1);
137
- }), j(() => {
138
- var f;
139
- (f = d.value) == null || f.dispose();
140
- }), (f, B) => ue(f.$slots, "default");
141
- }
142
- }), y = (i, e) => {
143
- const t = ce(ve), s = N(null), a = N(null), { scene: r, camera: o, invalidate: n } = S();
144
- e && D(e, () => n()), m(() => {
145
- !o.value || !(a != null && a.value) || (a.value.mainCamera = o.value);
136
+ x.frames.value = x.mode.value === "always" ? 1 : Math.max(0, x.frames.value - 1);
137
+ }), W(() => {
138
+ var g;
139
+ (g = d.value) == null || g.dispose();
140
+ }), (g, N) => ze(g.$slots, "default");
141
+ }
142
+ }), f = (r, t) => {
143
+ const e = oe(re), o = z(null), s = z(null), { scene: a, camera: i, invalidate: n } = A();
144
+ t && w(t, () => n()), v(() => {
145
+ !i.value || !(s != null && s.value) || (s.value.mainCamera = i.value);
146
146
  });
147
- const l = m(() => {
148
- !o.value || !(t != null && t.value) || !r.value || (fe(() => l()), !a.value && (a.value = i(), s.value = new ye(o.value, a.value), t.value.addPass(s.value)));
147
+ const l = v(() => {
148
+ !i.value || !(e != null && e.value) || !a.value || (se(() => l()), !s.value && (s.value = r(), o.value = new ke(i.value, s.value), e.value.addPass(o.value)));
149
149
  });
150
- return j(() => {
151
- var g, d, c;
152
- s.value && ((g = t == null ? void 0 : t.value) == null || g.removePass(s.value)), (d = a.value) == null || d.dispose(), (c = s.value) == null || c.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
- pass: s,
155
- effect: a
154
+ pass: o,
155
+ effect: s
156
156
  };
157
- }, gt = /* @__PURE__ */ p({
157
+ }, Gt = /* @__PURE__ */ u({
158
158
  __name: "BloomPmndrs",
159
159
  props: {
160
160
  blendFunction: {},
@@ -164,22 +164,22 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
164
164
  luminanceSmoothing: {},
165
165
  mipmapBlur: { type: Boolean, default: void 0 }
166
166
  },
167
- setup(i, { expose: e }) {
168
- const t = i, { pass: s, effect: a } = y(() => new Z(t), t);
169
- return e({ pass: s, effect: a }), F(
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 Z()
177
+ s,
178
+ () => new ue()
179
179
  ), () => {
180
180
  };
181
181
  }
182
- }), vt = /* @__PURE__ */ p({
182
+ }), Ht = /* @__PURE__ */ u({
183
183
  __name: "DepthOfFieldPmndrs",
184
184
  props: {
185
185
  blendFunction: {},
@@ -192,26 +192,26 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
192
192
  resolutionX: {},
193
193
  resolutionY: {}
194
194
  },
195
- setup(i, { expose: e }) {
196
- const t = i, { camera: s } = S(), { pass: a, effect: r } = y(() => new J(s.value, t), t);
197
- return e({ pass: a, effect: r }), F(
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
- r,
210
- () => new J()
209
+ a,
210
+ () => new ce()
211
211
  ), () => {
212
212
  };
213
213
  }
214
- }), xt = /* @__PURE__ */ p({
214
+ }), Xt = /* @__PURE__ */ u({
215
215
  __name: "GlitchPmndrs",
216
216
  props: {
217
217
  blendFunction: {},
@@ -226,43 +226,43 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
226
226
  perturbationMap: {},
227
227
  dtSize: {}
228
228
  },
229
- setup(i, { expose: e }) {
230
- const t = i, { pass: s, effect: a } = y(() => new V(t), t);
231
- e({ pass: s, effect: a });
232
- const { onBeforeRender: r } = z();
233
- return r(({ invalidate: o }) => o()), m(() => {
234
- const o = () => {
235
- if (t.mode !== void 0)
236
- return t.active === !1 ? Ce.DISABLED : t.mode;
237
- const n = new V(), l = n.mode;
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
+ const i = () => {
235
+ if (e.mode !== void 0)
236
+ return e.active === !1 ? qe.DISABLED : e.mode;
237
+ const n = new K(), l = n.mode;
238
238
  return n.dispose(), l;
239
239
  };
240
- a.value && (a.value.mode = o());
241
- }), I(
242
- q(t, ["active", "mode", "blendFunction"]),
243
- a,
244
- () => new V()
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
- }), bt = /* @__PURE__ */ p({
248
+ }), It = /* @__PURE__ */ u({
249
249
  __name: "NoisePmndrs",
250
250
  props: {
251
- premultiply: { type: Boolean, default: !1 },
252
- blendFunction: { default: he.SCREEN }
251
+ premultiply: { type: Boolean, default: void 0 },
252
+ blendFunction: {}
253
253
  },
254
- setup(i, { expose: e }) {
255
- const t = i, { pass: s, effect: a } = y(() => new _(t), t);
256
- e({ pass: s, effect: a });
257
- const { onBeforeRender: r } = z();
258
- return r(({ invalidate: o }) => o()), I(
259
- q(t, ["blendFunction"]),
260
- a,
261
- () => new _()
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
- }), St = /* @__PURE__ */ p({
265
+ }), jt = /* @__PURE__ */ u({
266
266
  __name: "OutlinePmndrs",
267
267
  props: {
268
268
  outlinedObjects: {},
@@ -281,39 +281,39 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
281
281
  hiddenEdgeColor: {},
282
282
  visibleEdgeColor: {}
283
283
  },
284
- setup(i, { expose: e }) {
285
- const t = i, s = (d) => d !== void 0 ? Y(d).getHex() : void 0, { camera: a, scene: r } = S(), o = {
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: s(t.hiddenEdgeColor),
299
- visibleEdgeColor: s(t.visibleEdgeColor)
300
- }, { pass: n, effect: l } = y(() => new $(r.value, a.value, o), t);
301
- e({ pass: n, effect: l }), D(
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
305
  var d;
306
- (d = l.value) == null || d.selection.set(t.outlinedObjects || []);
306
+ (d = l.value) == null || d.selection.set(e.outlinedObjects || []);
307
307
  },
308
308
  {
309
309
  immediate: !0
310
310
  }
311
311
  );
312
- const g = O(() => ({
313
- hiddenEdgeColor: t.hiddenEdgeColor ? Y(t.hiddenEdgeColor) : void 0,
314
- visibleEdgeColor: t.visibleEdgeColor ? Y(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 F(
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,53 +322,1003 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
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"],
332
- [() => g.value.hiddenEdgeColor, "hiddenEdgeColor"],
333
- [() => g.value.visibleEdgeColor, "visibleEdgeColor"]
325
+ [() => e.blur, "blur"],
326
+ [() => e.xRay, "xRay"],
327
+ [() => e.pulseSpeed, "pulseSpeed"],
328
+ [() => e.kernelSize, "kernelSize"],
329
+ [() => e.edgeStrength, "edgeStrength"],
330
+ [() => e.patternScale, "patternScale"],
331
+ [() => e.multisampling, "multisampling"],
332
+ [() => x.value.hiddenEdgeColor, "hiddenEdgeColor"],
333
+ [() => x.value.visibleEdgeColor, "visibleEdgeColor"]
334
334
  ],
335
335
  l,
336
- () => new $()
336
+ () => new fe()
337
337
  ), () => {
338
338
  };
339
339
  }
340
- }), At = /* @__PURE__ */ p({
340
+ }), Vt = /* @__PURE__ */ u({
341
341
  __name: "PixelationPmndrs",
342
342
  props: {
343
343
  granularity: {}
344
344
  },
345
- setup(i, { expose: e }) {
346
- const t = i, { pass: s, effect: a } = y(() => new ee(t.granularity), t);
347
- return e({ pass: s, effect: a }), I(
348
- t,
349
- a,
350
- () => new ee()
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
- }), Tt = /* @__PURE__ */ p({
354
+ }), Yt = /* @__PURE__ */ u({
355
355
  __name: "VignettePmndrs",
356
356
  props: {
357
- technique: { default: Ee.DEFAULT },
358
- blendFunction: { default: he.NORMAL },
359
- offset: { default: 0.5 },
360
- darkness: { default: 0.5 }
357
+ technique: {},
358
+ blendFunction: {},
359
+ offset: {},
360
+ darkness: {}
361
+ },
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
+ ), () => {
369
+ };
370
+ }
371
+ });
372
+ class De extends k {
373
+ /**
374
+ * Creates a new BarrelBlurEffect instance.
375
+ *
376
+ * @param {object} [options] - Configuration options for the effect.
377
+ * @param {BlendFunction} [options.blendFunction] - Blend mode.
378
+ * @param {number} [options.amount] - Intensity of the barrel distortion (0 to 1).
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
+ *
381
+ */
382
+ constructor({ blendFunction: t = q.NORMAL, amount: e = 0.15, offset: o = new c(0.5, 0.5) } = {}) {
383
+ super("BarrelBlurEffect", `
384
+ uniform float amount;
385
+ uniform vec2 offset;
386
+
387
+ #define NUM_ITER 16
388
+ #define RECIP_NUM_ITER 0.0625
389
+ #define GAMMA 1.0
390
+
391
+ vec3 spectrum_offset(float t) {
392
+ float lo = step(t, 0.5);
393
+ float hi = 1.0 - lo;
394
+ float w = 1.0 - abs(2.0 * t - 1.0);
395
+ return pow(vec3(lo, 1.0, hi) * vec3(1.0 - w, w, 1.0 - w), vec3(1.0 / GAMMA));
396
+ }
397
+
398
+ vec2 barrelDistortion(vec2 p, float amt) {
399
+ p = p - offset;
400
+ float theta = atan(p.y, p.x);
401
+ float radius = pow(length(p), 1.0 + 3.0 * amt);
402
+ return vec2(cos(theta), sin(theta)) * radius + offset;
403
+ }
404
+
405
+ void mainUv(inout vec2 uv) {
406
+ uv = barrelDistortion(uv, amount * 0.5);
407
+ }
408
+
409
+ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
410
+ vec3 sumcol = vec3(0.0);
411
+ vec3 sumw = vec3(0.0);
412
+
413
+ for (int i = 0; i < NUM_ITER; ++i) {
414
+ float t = float(i) * RECIP_NUM_ITER;
415
+ vec3 w = spectrum_offset(t);
416
+ vec2 distortedUV = barrelDistortion(uv, amount * t);
417
+ sumcol += w * texture(inputBuffer, distortedUV).rgb;
418
+ sumw += w;
419
+ }
420
+
421
+ vec3 outcol = pow(sumcol / sumw, vec3(1.0 / GAMMA));
422
+
423
+ outcol = clamp(outcol, 0.0, 1.0); // Ensures normalized color values
424
+
425
+ outputColor = vec4(outcol, inputColor.a); // Preserves original alpha
426
+ }
427
+ `, {
428
+ blendFunction: t,
429
+ uniforms: /* @__PURE__ */ new Map([
430
+ ["amount", new y(e)],
431
+ // Uniform controlling the intensity of distortion
432
+ ["offset", new y(o)]
433
+ // Uniform controlling the offset of distortion
434
+ ])
435
+ });
436
+ }
437
+ /**
438
+ * The amount.
439
+ *
440
+ * @type {number}
441
+ */
442
+ get amount() {
443
+ var t;
444
+ return (t = this.uniforms.get("amount")) == null ? void 0 : t.value;
445
+ }
446
+ set amount(t) {
447
+ this.uniforms.get("amount").value = t;
448
+ }
449
+ /**
450
+ * The offset.
451
+ *
452
+ * @type {Vector2}
453
+ */
454
+ get offset() {
455
+ var t;
456
+ return (t = this.uniforms.get("offset")) == null ? void 0 : t.value;
457
+ }
458
+ set offset(t) {
459
+ this.uniforms.get("offset").value = t;
460
+ }
461
+ }
462
+ const kt = /* @__PURE__ */ u({
463
+ __name: "BarrelBlurPmndrs",
464
+ props: {
465
+ blendFunction: {},
466
+ amount: {},
467
+ offset: {}
468
+ },
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
+ }),
475
+ e
476
+ );
477
+ return t({ pass: o, effect: s }), p(
478
+ [
479
+ [() => e.blendFunction, "blendMode.blendFunction"],
480
+ [() => e.amount, "amount"],
481
+ [() => e.offset, "offset"]
482
+ ],
483
+ s,
484
+ () => new De()
485
+ ), () => {
486
+ };
487
+ }
488
+ }), qt = /* @__PURE__ */ u({
489
+ __name: "ToneMappingPmndrs",
490
+ props: {
491
+ mode: {},
492
+ blendFunction: {},
493
+ resolution: {},
494
+ averageLuminance: {},
495
+ middleGrey: {},
496
+ minLuminance: {},
497
+ whitePoint: {}
498
+ },
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
+ [
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
+ ],
511
+ s,
512
+ () => new me()
513
+ ), () => {
514
+ };
515
+ }
516
+ }), Qt = /* @__PURE__ */ u({
517
+ __name: "ChromaticAberrationPmndrs",
518
+ props: {
519
+ blendFunction: {},
520
+ offset: {},
521
+ radialModulation: { type: Boolean, default: void 0 },
522
+ modulationOffset: {}
523
+ },
524
+ setup(r, { expose: t }) {
525
+ const e = r, o = new J(), { pass: s, effect: a } = f(() => new J({
526
+ ...e,
527
+ // Unfortunately, these defaults must be set this way as the type in postprocessing is not correct.
528
+ // The arguments are optional in the actual constructor, but not in the type.
529
+ radialModulation: e.radialModulation ?? o.radialModulation,
530
+ modulationOffset: e.modulationOffset ?? o.modulationOffset
531
+ }), e);
532
+ return o.dispose(), t({ pass: s, effect: a }), p(
533
+ [
534
+ [() => e.blendFunction, "blendMode.blendFunction"],
535
+ [() => e.offset, "offset"],
536
+ [() => e.radialModulation, "radialModulation"],
537
+ [() => e.modulationOffset, "modulationOffset"]
538
+ ],
539
+ a,
540
+ () => new J()
541
+ ), () => {
542
+ };
543
+ }
544
+ }), Kt = /* @__PURE__ */ u({
545
+ __name: "HueSaturationPmndrs",
546
+ props: {
547
+ saturation: {},
548
+ hue: {},
549
+ blendFunction: {}
550
+ },
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
+ [
555
+ [() => e.blendFunction, "blendMode.blendFunction"],
556
+ [() => e.hue, "hue"],
557
+ [() => e.saturation, "saturation"]
558
+ ],
559
+ s,
560
+ () => new ge()
561
+ ), () => {
562
+ };
563
+ }
564
+ }), Jt = /* @__PURE__ */ u({
565
+ __name: "ScanlinePmndrs",
566
+ props: {
567
+ blendFunction: {},
568
+ density: {},
569
+ scrollSpeed: {},
570
+ opacity: {}
571
+ },
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
+ [
576
+ [() => e.blendFunction, "blendMode.blendFunction"],
577
+ [() => e.density, "density"],
578
+ [() => e.scrollSpeed, "scrollSpeed"]
579
+ ],
580
+ s,
581
+ () => new Z()
582
+ ), w(
583
+ [() => e.opacity],
584
+ () => {
585
+ var a, i;
586
+ if (e.opacity !== void 0)
587
+ (a = s.value) == null || a.blendMode.setOpacity(e.opacity);
588
+ else {
589
+ const n = new Z();
590
+ (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
591
+ }
592
+ },
593
+ {
594
+ immediate: !0
595
+ }
596
+ ), () => {
597
+ };
598
+ }
599
+ }), St = `
600
+ uniform float radius;
601
+ uniform int sectorCount;
602
+
603
+ const int MAX_SECTOR_COUNT = 8;
604
+
605
+ float polynomialWeight(float x, float y, float eta, float lambda) {
606
+ float polyValue = (x + eta) - lambda * (y * y);
607
+ return max(0.0, polyValue * polyValue);
608
+ }
609
+
610
+ void getSectorVarianceAndAverageColor(mat2 anisotropyMat, float angle, float radius, out vec3 avgColor, out float variance) {
611
+ vec3 weightedColorSum = vec3(0.0);
612
+ vec3 weightedSquaredColorSum = vec3(0.0);
613
+ float totalWeight = 0.0;
614
+
615
+ float eta = 0.1;
616
+ float lambda = 0.5;
617
+ float angleStep = 0.196349; // Precompute angle step
618
+ float halfAngleRange = 0.392699; // Precompute half angle range
619
+
620
+ float cosAngle = cos(angle);
621
+ float sinAngle = sin(angle);
622
+
623
+ for (float r = 1.0; r <= radius; r += 1.0) {
624
+ float rCosAngle = r * cosAngle;
625
+ float rSinAngle = r * sinAngle;
626
+ for (float a = -halfAngleRange; a <= halfAngleRange; a += angleStep) {
627
+ float cosA = cos(a);
628
+ float sinA = sin(a);
629
+ vec2 sampleOffset = vec2(rCosAngle * cosA - rSinAngle * sinA, rCosAngle * sinA + rSinAngle * cosA) / resolution;
630
+ sampleOffset *= anisotropyMat;
631
+
632
+ vec3 color = texture2D(inputBuffer, vUv + sampleOffset).rgb;
633
+ float weight = polynomialWeight(sampleOffset.x, sampleOffset.y, eta, lambda);
634
+
635
+ weightedColorSum += color * weight;
636
+ weightedSquaredColorSum += color * color * weight;
637
+ totalWeight += weight;
638
+ }
639
+ }
640
+
641
+ // Calculate average color and variance
642
+ avgColor = weightedColorSum / totalWeight;
643
+ vec3 varianceRes = (weightedSquaredColorSum / totalWeight) - (avgColor * avgColor);
644
+ variance = dot(varianceRes, vec3(0.299, 0.587, 0.114)); // Convert to luminance
645
+ }
646
+
647
+ vec4 getDominantOrientation(vec4 structureTensor) {
648
+ float Jxx = structureTensor.r;
649
+ float Jyy = structureTensor.g;
650
+ float Jxy = structureTensor.b;
651
+
652
+ float trace = Jxx + Jyy;
653
+ float det = Jxx * Jyy - Jxy * Jxy;
654
+ float lambda1 = 0.5 * (trace + sqrt(trace * trace - 4.0 * det));
655
+ float lambda2 = 0.5 * (trace - sqrt(trace * trace - 4.0 * det));
656
+
657
+ float dominantOrientation = atan(2.0 * Jxy, Jxx - Jyy) / 2.0;
658
+ return vec4(dominantOrientation, lambda1, lambda2, 0.0);
659
+ }
660
+
661
+ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
662
+ vec4 structureTensor = texture2D(inputBuffer, uv);
663
+
664
+ vec3 sectorAvgColors[MAX_SECTOR_COUNT];
665
+ float sectorVariances[MAX_SECTOR_COUNT];
666
+
667
+ vec4 orientationAndAnisotropy = getDominantOrientation(structureTensor);
668
+ vec2 orientation = orientationAndAnisotropy.xy;
669
+
670
+ float anisotropy = (orientationAndAnisotropy.z - orientationAndAnisotropy.w) / (orientationAndAnisotropy.z + orientationAndAnisotropy.w + 1e-7);
671
+
672
+ float alpha = 25.0;
673
+ float scaleX = alpha / (anisotropy + alpha);
674
+ float scaleY = (anisotropy + alpha) / alpha;
675
+
676
+ mat2 anisotropyMat = mat2(orientation.x, -orientation.y, orientation.y, orientation.x) * mat2(scaleX, 0.0, 0.0, scaleY);
677
+
678
+ for (int i = 0; i < sectorCount; i++) {
679
+ float angle = float(i) * 6.28318 / float(sectorCount); // 2π / sectorCount
680
+ getSectorVarianceAndAverageColor(anisotropyMat, angle, float(radius), sectorAvgColors[i], sectorVariances[i]);
681
+ }
682
+
683
+ float minVariance = sectorVariances[0];
684
+ vec3 finalColor = sectorAvgColors[0];
685
+
686
+ for (int i = 1; i < sectorCount; i++) {
687
+ if (sectorVariances[i] < minVariance) {
688
+ minVariance = sectorVariances[i];
689
+ finalColor = sectorAvgColors[i];
690
+ }
691
+ }
692
+
693
+ outputColor = vec4(finalColor, inputColor.a);
694
+ }
695
+ `;
696
+ class Pe extends k {
697
+ /**
698
+ * Creates a new KuwaharaEffect instance.
699
+ *
700
+ * @param {object} [options] - Configuration options for the effect.
701
+ * @param {BlendFunction} [options.blendFunction] - Blend mode.
702
+ * @param {number} [options.radius] - Intensity of the effect.
703
+ * @param {number} [options.sectorCount] - Number of sectors.
704
+ *
705
+ */
706
+ constructor({ blendFunction: t = q.NORMAL, radius: e = 1, sectorCount: o = 4 } = {}) {
707
+ super("KuwaharaEffect", St, {
708
+ blendFunction: t,
709
+ uniforms: /* @__PURE__ */ new Map([
710
+ ["radius", new y(e)],
711
+ ["sectorCount", new y(o)]
712
+ ])
713
+ });
714
+ }
715
+ /**
716
+ * The radius.
717
+ *
718
+ * @type {number}
719
+ */
720
+ get radius() {
721
+ var t;
722
+ return (t = this.uniforms.get("radius")) == null ? void 0 : t.value;
723
+ }
724
+ set radius(t) {
725
+ this.uniforms.get("radius").value = t;
726
+ }
727
+ /**
728
+ * The sector count.
729
+ *
730
+ * @type {number}
731
+ */
732
+ get sectorCount() {
733
+ var t;
734
+ return (t = this.uniforms.get("sectorCount")) == null ? void 0 : t.value;
735
+ }
736
+ set sectorCount(t) {
737
+ this.uniforms.get("sectorCount").value = t;
738
+ }
739
+ }
740
+ const Zt = /* @__PURE__ */ u({
741
+ __name: "KuwaharaPmndrs",
742
+ props: {
743
+ blendFunction: {},
744
+ radius: {},
745
+ sectorCount: {}
746
+ },
747
+ setup(r, { expose: t }) {
748
+ const e = r, { pass: o, effect: s } = f(
749
+ () => new Pe(e),
750
+ e
751
+ );
752
+ return t({ pass: o, effect: s }), p(
753
+ [
754
+ [() => e.blendFunction, "blendMode.blendFunction"],
755
+ [() => e.radius, "radius"],
756
+ [() => e.sectorCount, "sectorCount"]
757
+ ],
758
+ s,
759
+ () => new Pe()
760
+ ), () => {
761
+ };
762
+ }
763
+ }), _t = /* @__PURE__ */ u({
764
+ __name: "ColorAveragePmndrs",
765
+ props: {
766
+ blendFunction: {},
767
+ opacity: {}
361
768
  },
362
- setup(i, { expose: e }) {
363
- const t = i, { pass: s, effect: a } = y(() => new te(t), t);
364
- return e({ pass: s, effect: a }), I(
365
- q(t, ["blendFunction"]),
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
+ "blendMode.blendFunction",
775
+ () => new _()
776
+ ), w(
777
+ [s, () => e.opacity],
778
+ () => {
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
+ else {
784
+ const n = new _();
785
+ (i = s.value) == null || i.blendMode.setOpacity(n.blendMode.getOpacity()), n.dispose();
786
+ }
787
+ }
788
+ ), () => {
789
+ };
790
+ }
791
+ }), $t = /* @__PURE__ */ u({
792
+ __name: "LensDistortionPmndrs",
793
+ props: {
794
+ distortion: {},
795
+ principalPoint: {},
796
+ focalLength: {},
797
+ skew: {}
798
+ },
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
+ }),
807
+ e
808
+ );
809
+ return t({ pass: o, effect: s }), G(
810
+ e,
811
+ s,
812
+ () => new ve()
813
+ ), () => {
814
+ };
815
+ }
816
+ }), eo = /* @__PURE__ */ u({
817
+ __name: "ShockWavePmndrs",
818
+ props: {
819
+ position: {},
820
+ amplitude: {},
821
+ speed: {},
822
+ maxRadius: {},
823
+ waveSize: {}
824
+ },
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
+ );
830
+ return t({ pass: s, effect: a }), w(
831
+ () => e.position,
832
+ (i) => {
833
+ a.value && (Array.isArray(i) ? a.value.position.set(...i) : i instanceof P && a.value.position.copy(i));
834
+ },
835
+ { immediate: !0 }
836
+ ), p(
837
+ [
838
+ [() => e.amplitude, "amplitude"],
839
+ [() => e.waveSize, "waveSize"],
840
+ [() => e.maxRadius, "maxRadius"],
841
+ [() => e.speed, "speed"]
842
+ ],
366
843
  a,
367
- () => new te()
844
+ () => new xe()
368
845
  ), () => {
369
846
  };
370
847
  }
371
- }), xe = {
848
+ }), to = /* @__PURE__ */ u({
849
+ __name: "TiltShiftPmndrs",
850
+ props: {
851
+ blendFunction: {},
852
+ offset: {},
853
+ rotation: {},
854
+ focusArea: {},
855
+ feather: {},
856
+ kernelSize: {},
857
+ resolutionScale: {},
858
+ resolutionX: {},
859
+ resolutionY: {}
860
+ },
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
+ [
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
+ ],
875
+ s,
876
+ () => new be()
877
+ ), () => {
878
+ };
879
+ }
880
+ }), oo = /* @__PURE__ */ u({
881
+ __name: "DotScreenPmndrs",
882
+ props: {
883
+ angle: {},
884
+ scale: {},
885
+ blendFunction: {}
886
+ },
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
+ [
891
+ [() => e.blendFunction, "blendMode.blendFunction"],
892
+ [() => e.angle, "angle"],
893
+ [() => e.scale, "scale"]
894
+ ],
895
+ s,
896
+ () => new Se()
897
+ ), () => {
898
+ };
899
+ }
900
+ }), so = /* @__PURE__ */ u({
901
+ __name: "SepiaPmndrs",
902
+ props: {
903
+ blendFunction: {},
904
+ intensity: {}
905
+ },
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
+ [
910
+ [() => e.blendFunction, "blendMode.blendFunction"],
911
+ [() => e.intensity, "intensity"]
912
+ ],
913
+ s,
914
+ () => new we()
915
+ ), () => {
916
+ };
917
+ }
918
+ });
919
+ class Le extends k {
920
+ /**
921
+ * Creates a new LinocutEffect instance.
922
+ *
923
+ * @param {LinocutPmndrsProps} [options] - Configuration options for the effect.
924
+ *
925
+ */
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
+ super("LinocutEffect", `
929
+ uniform float scale;
930
+ uniform float noiseScale;
931
+ uniform vec2 center;
932
+ uniform float rotation;
933
+
934
+ float luma(vec3 color) {
935
+ return dot(color, vec3(0.299, 0.587, 0.114));
936
+ }
937
+
938
+ float luma(vec4 color) {
939
+ return dot(color.rgb, vec3(0.299, 0.587, 0.114));
940
+ }
941
+
942
+ // Simple pseudo-random noise function
943
+ float noise(vec2 p) {
944
+ return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453123);
945
+ }
946
+
947
+ void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) {
948
+ // Calculate the center based on center
949
+ vec2 fragCoord = uv * resolution.xy;
950
+
951
+ // Apply rotation to the coordinates
952
+ vec2 d = fragCoord - center * resolution.xy;
953
+ mat2 rotMat = mat2(cos(rotation), -sin(rotation), sin(rotation), cos(rotation));
954
+ vec2 rotatedD = d * rotMat;
955
+
956
+ // Calculate radial distance and angle
957
+ float r = length(rotatedD) / (1000.0 / max(scale, 0.01)); // Normalization to avoid artifacts
958
+ float a = atan(rotatedD.y, rotatedD.x) + scale * (0.5 - r) / 0.5;
959
+
960
+ // Calculate transformed coordinates
961
+ vec2 uvt = center * resolution.xy + r * vec2(cos(a), sin(a));
962
+
963
+ // Normalize UV coordinates
964
+ vec2 uv2 = fragCoord / resolution.xy;
965
+
966
+ // Generate sinusoidal line patterns
967
+ float c = (0.75 + 0.25 * sin(uvt.x * 1000.0 * max(scale, 0.01))); // Prevent excessive distortions
968
+
969
+ // Load the texture and convert to grayscale
970
+ vec4 color = texture(inputBuffer, uv2);
971
+ color.rgb = color.rgb * color.rgb; // Convert from sRGB to linear
972
+ float l = luma(color);
973
+
974
+ // Add noise based on noiseScale
975
+ float n = noise(uv2 * 10.0); // Generate noise
976
+ l += noiseScale * (n - 0.5); // Apply noise as a perturbation
977
+
978
+ // Apply smoothing to achieve the linocut effect
979
+ float f = smoothstep(0.5 * c, c, l);
980
+ f = smoothstep(0.0, 0.5, f);
981
+
982
+ // Convert the final value back to sRGB
983
+ f = sqrt(f);
984
+
985
+ // Output the final color in black and white
986
+ outputColor = vec4(vec3(f), 1.0);
987
+ }
988
+ `, {
989
+ blendFunction: t,
990
+ uniforms: /* @__PURE__ */ new Map([
991
+ ["scale", new y(e)],
992
+ ["noiseScale", new y(o)],
993
+ ["center", new y(i)],
994
+ ["rotation", new y(a)]
995
+ ])
996
+ });
997
+ }
998
+ get scale() {
999
+ var t;
1000
+ return (t = this.uniforms.get("scale")) == null ? void 0 : t.value;
1001
+ }
1002
+ set scale(t) {
1003
+ this.uniforms.get("scale").value = t;
1004
+ }
1005
+ get noiseScale() {
1006
+ var t;
1007
+ return (t = this.uniforms.get("noiseScale")) == null ? void 0 : t.value;
1008
+ }
1009
+ set noiseScale(t) {
1010
+ this.uniforms.get("noiseScale").value = t;
1011
+ }
1012
+ get center() {
1013
+ var t;
1014
+ return (t = this.uniforms.get("center")) == null ? void 0 : t.value;
1015
+ }
1016
+ set center(t) {
1017
+ this.uniforms.get("center").value = Array.isArray(t) ? new c().fromArray(t) : t;
1018
+ }
1019
+ get rotation() {
1020
+ var t;
1021
+ return (t = this.uniforms.get("rotation")) == null ? void 0 : t.value;
1022
+ }
1023
+ set rotation(t) {
1024
+ this.uniforms.get("rotation").value = t;
1025
+ }
1026
+ }
1027
+ const ao = /* @__PURE__ */ u({
1028
+ __name: "LinocutPmndrs",
1029
+ props: {
1030
+ blendFunction: {},
1031
+ scale: {},
1032
+ noiseScale: {},
1033
+ center: {},
1034
+ rotation: {}
1035
+ },
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
+ }),
1042
+ e
1043
+ );
1044
+ return t({ pass: o, effect: s }), p(
1045
+ [
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"]
1110
+ ],
1111
+ a,
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
+ }
1127
+ ), () => {
1128
+ };
1129
+ }
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 = {
372
1322
  name: "CopyShader",
373
1323
  uniforms: {
374
1324
  tDiffuse: { value: null },
@@ -406,7 +1356,7 @@ const ve = Symbol("effectComposerPmndrs"), pt = /* @__PURE__ */ p({
406
1356
  }`
407
1357
  )
408
1358
  };
409
- class A {
1359
+ class T {
410
1360
  constructor() {
411
1361
  this.isPass = !0, this.enabled = !0, this.needsSwap = !0, this.clear = !1, this.renderToScreen = !1;
412
1362
  }
@@ -418,190 +1368,190 @@ class A {
418
1368
  dispose() {
419
1369
  }
420
1370
  }
421
- const _e = new De(-1, 1, 1, -1, 0, 1);
422
- class $e extends Le {
1371
+ const wt = new Ke(-1, 1, 1, -1, 0, 1);
1372
+ class At extends Je {
423
1373
  constructor() {
424
- super(), this.setAttribute("position", new se([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)), this.setAttribute("uv", new se([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));
425
1375
  }
426
1376
  }
427
- const et = new $e();
428
- class C {
429
- constructor(e) {
430
- this._mesh = new Pe(et, e);
1377
+ const yt = new At();
1378
+ class O {
1379
+ constructor(t) {
1380
+ this._mesh = new Ze(yt, t);
431
1381
  }
432
1382
  dispose() {
433
1383
  this._mesh.geometry.dispose();
434
1384
  }
435
- render(e) {
436
- e.render(this._mesh, _e);
1385
+ render(t) {
1386
+ t.render(this._mesh, wt);
437
1387
  }
438
1388
  get material() {
439
1389
  return this._mesh.material;
440
1390
  }
441
- set material(e) {
442
- this._mesh.material = e;
1391
+ set material(t) {
1392
+ this._mesh.material = t;
443
1393
  }
444
1394
  }
445
- class tt extends A {
446
- constructor(e, t) {
447
- super(), this.textureID = t !== void 0 ? t : "tDiffuse", e instanceof x ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = w.clone(e.uniforms), this.material = new x({
448
- name: e.name !== void 0 ? e.name : "unspecified",
449
- 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),
450
1400
  uniforms: this.uniforms,
451
- vertexShader: e.vertexShader,
452
- fragmentShader: e.fragmentShader
453
- })), this.fsQuad = new C(this.material);
1401
+ vertexShader: t.vertexShader,
1402
+ fragmentShader: t.fragmentShader
1403
+ })), this.fsQuad = new O(this.material);
454
1404
  }
455
- render(e, t, s) {
456
- this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = s.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));
457
1407
  }
458
1408
  dispose() {
459
1409
  this.material.dispose(), this.fsQuad.dispose();
460
1410
  }
461
1411
  }
462
- class ie extends A {
463
- constructor(e, t) {
464
- 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;
465
1415
  }
466
- render(e, t, s) {
467
- const a = e.getContext(), r = e.state;
468
- r.buffers.color.setMask(!1), r.buffers.depth.setMask(!1), r.buffers.color.setLocked(!0), r.buffers.depth.setLocked(!0);
469
- let o, n;
470
- this.inverse ? (o = 0, n = 1) : (o = 1, n = 0), r.buffers.stencil.setTest(!0), r.buffers.stencil.setOp(a.REPLACE, a.REPLACE, a.REPLACE), r.buffers.stencil.setFunc(a.ALWAYS, o, 4294967295), r.buffers.stencil.setClear(n), r.buffers.stencil.setLocked(!0), e.setRenderTarget(s), this.clear && e.clear(), e.render(this.scene, this.camera), e.setRenderTarget(t), this.clear && e.clear(), e.render(this.scene, this.camera), r.buffers.color.setLocked(!1), r.buffers.depth.setLocked(!1), r.buffers.color.setMask(!0), r.buffers.depth.setMask(!0), r.buffers.stencil.setLocked(!1), r.buffers.stencil.setFunc(a.EQUAL, 1, 4294967295), r.buffers.stencil.setOp(a.KEEP, a.KEEP, a.KEEP), r.buffers.stencil.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);
1419
+ let i, n;
1420
+ this.inverse ? (i = 0, n = 1) : (i = 1, n = 0), a.buffers.stencil.setTest(!0), a.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), a.buffers.stencil.setFunc(s.ALWAYS, i, 4294967295), a.buffers.stencil.setClear(n), a.buffers.stencil.setLocked(!0), t.setRenderTarget(o), this.clear && t.clear(), t.render(this.scene, this.camera), t.setRenderTarget(e), this.clear && t.clear(), t.render(this.scene, this.camera), a.buffers.color.setLocked(!1), a.buffers.depth.setLocked(!1), a.buffers.color.setMask(!0), a.buffers.depth.setMask(!0), a.buffers.stencil.setLocked(!1), a.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), a.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), a.buffers.stencil.setLocked(!0);
471
1421
  }
472
1422
  }
473
- class st extends A {
1423
+ class Tt extends T {
474
1424
  constructor() {
475
1425
  super(), this.needsSwap = !1;
476
1426
  }
477
- render(e) {
478
- 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);
479
1429
  }
480
1430
  }
481
- class at {
482
- constructor(e, t) {
483
- if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
484
- const s = e.getSize(new h());
485
- this._width = s.width, this._height = s.height, t = new M(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: b }), 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";
486
1436
  } else
487
- this._width = t.width, this._height = t.height;
488
- this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new tt(xe), this.copyPass.material.blending = Be, this.clock = new Re();
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();
489
1439
  }
490
1440
  swapBuffers() {
491
- const e = this.readBuffer;
492
- this.readBuffer = this.writeBuffer, this.writeBuffer = e;
1441
+ const t = this.readBuffer;
1442
+ this.readBuffer = this.writeBuffer, this.writeBuffer = t;
493
1443
  }
494
- addPass(e) {
495
- 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);
496
1446
  }
497
- insertPass(e, t) {
498
- 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);
499
1449
  }
500
- removePass(e) {
501
- const t = this.passes.indexOf(e);
502
- 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);
503
1453
  }
504
- isLastEnabledPass(e) {
505
- for (let t = e + 1; t < this.passes.length; t++)
506
- 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)
507
1457
  return !1;
508
1458
  return !0;
509
1459
  }
510
- render(e) {
511
- e === void 0 && (e = this.clock.getDelta());
512
- const t = this.renderer.getRenderTarget();
513
- let s = !1;
514
- for (let a = 0, r = this.passes.length; a < r; a++) {
515
- const o = this.passes[a];
516
- if (o.enabled !== !1) {
517
- if (o.renderToScreen = this.renderToScreen && this.isLastEnabledPass(a), o.render(this.renderer, this.writeBuffer, this.readBuffer, e, s), o.needsSwap) {
518
- if (s) {
1460
+ render(t) {
1461
+ t === void 0 && (t = this.clock.getDelta());
1462
+ const e = this.renderer.getRenderTarget();
1463
+ let o = !1;
1464
+ for (let s = 0, a = this.passes.length; s < a; s++) {
1465
+ const i = this.passes[s];
1466
+ if (i.enabled !== !1) {
1467
+ if (i.renderToScreen = this.renderToScreen && this.isLastEnabledPass(s), i.render(this.renderer, this.writeBuffer, this.readBuffer, t, o), i.needsSwap) {
1468
+ if (o) {
519
1469
  const n = this.renderer.getContext(), l = this.renderer.state.buffers.stencil;
520
- 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);
521
1471
  }
522
1472
  this.swapBuffers();
523
1473
  }
524
- ie !== void 0 && (o instanceof ie ? s = !0 : o instanceof st && (s = !1));
1474
+ Re !== void 0 && (i instanceof Re ? o = !0 : i instanceof Tt && (o = !1));
525
1475
  }
526
1476
  }
527
- this.renderer.setRenderTarget(t);
1477
+ this.renderer.setRenderTarget(e);
528
1478
  }
529
- reset(e) {
530
- if (e === void 0) {
531
- const t = this.renderer.getSize(new h());
532
- 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);
533
1483
  }
534
- 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;
535
1485
  }
536
- setSize(e, t) {
537
- this._width = e, this._height = t;
538
- const s = this._width * this._pixelRatio, a = this._height * this._pixelRatio;
539
- this.renderTarget1.setSize(s, a), this.renderTarget2.setSize(s, a);
540
- for (let r = 0; r < this.passes.length; r++)
541
- this.passes[r].setSize(s, 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);
542
1492
  }
543
- setPixelRatio(e) {
544
- this._pixelRatio = e, this.setSize(this._width, this._height);
1493
+ setPixelRatio(t) {
1494
+ this._pixelRatio = t, this.setSize(this._width, this._height);
545
1495
  }
546
1496
  dispose() {
547
1497
  this.renderTarget1.dispose(), this.renderTarget2.dispose(), this.copyPass.dispose();
548
1498
  }
549
1499
  }
550
- class rt extends A {
551
- constructor(e, t, s = null, a = null, r = null) {
552
- super(), this.scene = e, this.camera = t, this.overrideMaterial = s, this.clearColor = a, this.clearAlpha = r, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this._oldClearColor = new X();
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();
553
1503
  }
554
- render(e, t, s) {
555
- const a = e.autoClear;
556
- e.autoClear = !1;
557
- let r, o;
558
- this.overrideMaterial !== null && (o = this.scene.overrideMaterial, this.scene.overrideMaterial = this.overrideMaterial), this.clearColor !== null && (e.getClearColor(this._oldClearColor), e.setClearColor(this.clearColor, e.getClearAlpha())), this.clearAlpha !== null && (r = e.getClearAlpha(), e.setClearAlpha(this.clearAlpha)), this.clearDepth == !0 && e.clearDepth(), e.setRenderTarget(this.renderToScreen ? null : s), 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(r), this.overrideMaterial !== null && (this.scene.overrideMaterial = o), 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;
559
1509
  }
560
1510
  }
561
- const be = Symbol("effectComposerThree"), wt = /* @__PURE__ */ p({
1511
+ const He = Symbol("effectComposerThree"), fo = /* @__PURE__ */ u({
562
1512
  __name: "EffectComposer",
563
1513
  props: {
564
1514
  enabled: { type: Boolean, default: !0 },
565
1515
  withoutRenderPass: { type: Boolean }
566
1516
  },
567
- setup(i, { expose: e }) {
568
- const t = i, s = N(null);
569
- de(be, s), e({ composer: s });
570
- const { renderer: a, sizes: r, scene: o, camera: n, render: l } = S();
571
- m(() => {
572
- var u;
573
- (u = s.value) == null || u.dispose(), s.value = new at(a.value);
574
- }), m(() => {
575
- var W;
576
- const { width: u, height: T } = r;
577
- T.value && u.value && ((W = s.value) == null || W.setSize(u.value, T.value));
1517
+ setup(r, { expose: t }) {
1518
+ const e = r, o = z(null);
1519
+ Ne(He, o), t({ composer: o });
1520
+ const { renderer: s, sizes: a, scene: i, camera: n, render: l } = A();
1521
+ v(() => {
1522
+ var h;
1523
+ (h = o.value) == null || h.dispose(), o.value = new Ct(s.value);
1524
+ }), v(() => {
1525
+ var H;
1526
+ const { width: h, height: C } = a;
1527
+ C.value && h.value && ((H = o.value) == null || H.setSize(h.value, C.value));
578
1528
  });
579
- const { pixelRatio: d } = me();
580
- m(() => {
581
- var u;
582
- (u = s.value) == null || u.setPixelRatio(d.value);
583
- }), t.withoutRenderPass || m(() => {
584
- n.value && o.value && s.value && s.value.addPass(new rt(o.value, n.value));
1529
+ const { pixelRatio: d } = We();
1530
+ v(() => {
1531
+ var h;
1532
+ (h = o.value) == null || h.setPixelRatio(d.value);
1533
+ }), e.withoutRenderPass || v(() => {
1534
+ n.value && i.value && o.value && o.value.addPass(new Et(i.value, n.value));
585
1535
  });
586
- const { render: c } = z();
587
- return c(() => {
588
- l.frames.value > 0 && s.value && t.enabled && s.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
589
- }), j(() => {
590
- var u;
591
- (u = s.value) == null || u.dispose();
592
- }), (u, T) => ue(u.$slots, "default");
593
- }
594
- }), P = (i, e) => {
595
- const t = ce(be), s = N(i()), { sizes: a, invalidate: r } = S();
596
- e && D(e, () => r());
597
- const o = m(() => {
598
- !(t != null && t.value) || !a.height.value || !a.width.value || (t.value.addPass(s.value), fe(() => o()));
1536
+ const { render: m } = U();
1537
+ return m(() => {
1538
+ l.frames.value > 0 && o.value && e.enabled && o.value.render(), l.frames.value = l.mode.value === "always" ? 1 : Math.max(0, l.frames.value - 1);
1539
+ }), W(() => {
1540
+ var h;
1541
+ (h = o.value) == null || h.dispose();
1542
+ }), (h, C) => ze(h.$slots, "default");
1543
+ }
1544
+ }), F = (r, t) => {
1545
+ const e = oe(He), o = z(r()), { sizes: s, invalidate: a } = A();
1546
+ t && w(t, () => a());
1547
+ const i = v(() => {
1548
+ !(e != null && e.value) || !s.height.value || !s.width.value || (e.value.addPass(o.value), se(() => i()));
599
1549
  });
600
- return j(() => {
1550
+ return W(() => {
601
1551
  var n;
602
- (n = t == null ? void 0 : t.value) == null || n.removePass(s.value), s.value.dispose();
603
- }), { pass: s };
604
- }, ot = {
1552
+ (n = e == null ? void 0 : e.value) == null || n.removePass(o.value), o.value.dispose();
1553
+ }), { pass: o };
1554
+ }, Dt = {
605
1555
  uniforms: {
606
1556
  tDiffuse: { value: null },
607
1557
  //diffuse texture
@@ -696,53 +1646,53 @@ const be = Symbol("effectComposerThree"), wt = /* @__PURE__ */ p({
696
1646
  }`
697
1647
  )
698
1648
  };
699
- class ne extends A {
700
- constructor(e = 64) {
1649
+ class Be extends T {
1650
+ constructor(t = 64) {
701
1651
  super();
702
- const t = ot;
703
- this.uniforms = w.clone(t.uniforms), this.heightMap = this.generateHeightmap(e), this.uniforms.tDisp.value = this.heightMap, this.material = new x({
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({
704
1654
  uniforms: this.uniforms,
705
- vertexShader: t.vertexShader,
706
- fragmentShader: t.fragmentShader
707
- }), this.fsQuad = new C(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();
708
1658
  }
709
- render(e, t, s) {
710
- this.uniforms.tDiffuse.value = s.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 = v.randFloat(-Math.PI, Math.PI), this.uniforms.seed_x.value = v.randFloat(-1, 1), this.uniforms.seed_y.value = v.randFloat(-1, 1), this.uniforms.distortion_x.value = v.randFloat(0, 1), this.uniforms.distortion_y.value = v.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 = v.randFloat(-Math.PI, Math.PI), this.uniforms.distortion_x.value = v.randFloat(0, 1), this.uniforms.distortion_y.value = v.randFloat(0, 1), this.uniforms.seed_x.value = v.randFloat(-0.3, 0.3), this.uniforms.seed_y.value = v.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));
711
1661
  }
712
1662
  generateTrigger() {
713
- this.randX = v.randInt(120, 240);
1663
+ this.randX = b.randInt(120, 240);
714
1664
  }
715
- generateHeightmap(e) {
716
- const t = new Float32Array(e * e), s = e * e;
717
- for (let r = 0; r < s; r++) {
718
- const o = v.randFloat(0, 1);
719
- t[r] = o;
1665
+ generateHeightmap(t) {
1666
+ const e = new Float32Array(t * t), o = t * t;
1667
+ for (let a = 0; a < o; a++) {
1668
+ const i = b.randFloat(0, 1);
1669
+ e[a] = i;
720
1670
  }
721
- const a = new Ne(t, e, e, Oe, ze);
722
- return a.needsUpdate = !0, a;
1671
+ const s = new et(e, t, t, tt, ot);
1672
+ return s.needsUpdate = !0, s;
723
1673
  }
724
1674
  dispose() {
725
1675
  this.material.dispose(), this.heightMap.dispose(), this.fsQuad.dispose();
726
1676
  }
727
1677
  }
728
- const Mt = /* @__PURE__ */ p({
1678
+ const ho = /* @__PURE__ */ u({
729
1679
  __name: "Glitch",
730
1680
  props: {
731
1681
  dtSize: {},
732
1682
  goWild: { type: Boolean }
733
1683
  },
734
- setup(i, { expose: e }) {
735
- const t = i, { pass: s } = P(() => new ne(t.dtSize), t);
736
- e({ pass: s });
737
- const { onBeforeRender: a } = z();
738
- return a(({ invalidate: r }) => r()), F(
739
- [[() => t.goWild, "goWild"]],
740
- s,
741
- () => new ne()
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"]],
1690
+ o,
1691
+ () => new Be()
742
1692
  ), () => {
743
1693
  };
744
1694
  }
745
- }), G = {
1695
+ }), V = {
746
1696
  name: "HalftoneShader",
747
1697
  uniforms: {
748
1698
  tDiffuse: { value: null },
@@ -1046,28 +1996,28 @@ const Mt = /* @__PURE__ */ p({
1046
1996
  }`
1047
1997
  )
1048
1998
  };
1049
- class it extends A {
1050
- constructor(e, t, s) {
1051
- super(), this.uniforms = w.clone(G.uniforms), this.material = new x({
1999
+ class Pt extends T {
2000
+ constructor(t, e, o) {
2001
+ super(), this.uniforms = E.clone(V.uniforms), this.material = new S({
1052
2002
  uniforms: this.uniforms,
1053
- fragmentShader: G.fragmentShader,
1054
- vertexShader: G.vertexShader
1055
- }), this.uniforms.width.value = e, this.uniforms.height.value = t;
1056
- for (const a in s)
1057
- s.hasOwnProperty(a) && this.uniforms.hasOwnProperty(a) && (this.uniforms[a].value = s[a]);
1058
- this.fsQuad = new C(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);
1059
2009
  }
1060
- render(e, t, s) {
1061
- this.material.uniforms.tDiffuse.value = s.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));
1062
2012
  }
1063
- setSize(e, t) {
1064
- 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;
1065
2015
  }
1066
2016
  dispose() {
1067
2017
  this.material.dispose(), this.fsQuad.dispose();
1068
2018
  }
1069
2019
  }
1070
- const yt = /* @__PURE__ */ p({
2020
+ const po = /* @__PURE__ */ u({
1071
2021
  __name: "Halftone",
1072
2022
  props: {
1073
2023
  shape: {},
@@ -1080,55 +2030,55 @@ const yt = /* @__PURE__ */ p({
1080
2030
  greyscale: { type: Boolean },
1081
2031
  blendingMode: {}
1082
2032
  },
1083
- setup(i, { expose: e }) {
1084
- const t = i, { sizes: s } = S(), a = O(
2033
+ setup(r, { expose: t }) {
2034
+ const e = r, { sizes: o } = A(), s = L(
1085
2035
  () => Object.fromEntries(
1086
- Object.entries(t).filter(([o, n]) => n !== void 0)
2036
+ Object.entries(e).filter(([i, n]) => n !== void 0)
1087
2037
  )
1088
- ), { pass: r } = P(() => new it(
1089
- s.width.value,
1090
- s.height.value,
1091
- a.value
1092
- ), t);
1093
- return e({ pass: r }), m(() => {
1094
- r.value.setSize(s.width.value, s.height.value);
1095
- }), m(() => {
1096
- Object.entries(t).forEach(([o, n]) => {
1097
- o in r.value.uniforms && (r.value.uniforms[o].value = n ?? G.uniforms[o].value);
2038
+ ), { pass: a } = F(() => new Pt(
2039
+ o.width.value,
2040
+ o.height.value,
2041
+ s.value
2042
+ ), e);
2043
+ return t({ pass: a }), v(() => {
2044
+ a.value.setSize(o.width.value, o.height.value);
2045
+ }), v(() => {
2046
+ Object.entries(e).forEach(([i, n]) => {
2047
+ i in a.value.uniforms && (a.value.uniforms[i].value = n ?? V.uniforms[i].value);
1098
2048
  });
1099
2049
  }), () => {
1100
2050
  };
1101
2051
  }
1102
2052
  });
1103
- class le extends A {
1104
- constructor(e, t, s, a = {}) {
1105
- super(), this.pixelSize = e, this.resolution = new h(), this.renderResolution = new h(), this.pixelatedMaterial = this.createPixelatedMaterial(), this.normalMaterial = new Fe(), this.fsQuad = new C(this.pixelatedMaterial), this.scene = t, this.camera = s, this.normalEdgeStrength = a.normalEdgeStrength || 0.3, this.depthEdgeStrength = a.depthEdgeStrength || 0.4, this.beautyRenderTarget = new M(), this.beautyRenderTarget.texture.minFilter = E, this.beautyRenderTarget.texture.magFilter = E, this.beautyRenderTarget.texture.type = b, this.beautyRenderTarget.depthTexture = new We(), this.normalRenderTarget = new M(), this.normalRenderTarget.texture.minFilter = E, this.normalRenderTarget.texture.magFilter = E, this.normalRenderTarget.texture.type = b;
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;
1106
2056
  }
1107
2057
  dispose() {
1108
2058
  this.beautyRenderTarget.dispose(), this.normalRenderTarget.dispose(), this.pixelatedMaterial.dispose(), this.normalMaterial.dispose(), this.fsQuad.dispose();
1109
2059
  }
1110
- setSize(e, t) {
1111
- this.resolution.set(e, t), this.renderResolution.set(e / this.pixelSize | 0, t / this.pixelSize | 0);
1112
- const { x: s, y: a } = this.renderResolution;
1113
- this.beautyRenderTarget.setSize(s, a), this.normalRenderTarget.setSize(s, a), this.fsQuad.material.uniforms.resolution.value.set(s, a, 1 / s, 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);
1114
2064
  }
1115
- setPixelSize(e) {
1116
- 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);
1117
2067
  }
1118
- render(e, t) {
1119
- const s = this.fsQuad.material.uniforms;
1120
- s.normalEdgeStrength.value = this.normalEdgeStrength, s.depthEdgeStrength.value = this.depthEdgeStrength, e.setRenderTarget(this.beautyRenderTarget), e.render(this.scene, this.camera);
1121
- const a = this.scene.overrideMaterial;
1122
- e.setRenderTarget(this.normalRenderTarget), this.scene.overrideMaterial = this.normalMaterial, e.render(this.scene, this.camera), this.scene.overrideMaterial = a, s.tDiffuse.value = this.beautyRenderTarget.texture, s.tDepth.value = this.beautyRenderTarget.depthTexture, s.tNormal.value = this.normalRenderTarget.texture, this.renderToScreen ? e.setRenderTarget(null) : (e.setRenderTarget(t), this.clear && e.clear()), this.fsQuad.render(e);
2068
+ render(t, e) {
2069
+ const o = this.fsQuad.material.uniforms;
2070
+ o.normalEdgeStrength.value = this.normalEdgeStrength, o.depthEdgeStrength.value = this.depthEdgeStrength, t.setRenderTarget(this.beautyRenderTarget), t.render(this.scene, this.camera);
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);
1123
2073
  }
1124
2074
  createPixelatedMaterial() {
1125
- return new x({
2075
+ return new S({
1126
2076
  uniforms: {
1127
2077
  tDiffuse: { value: null },
1128
2078
  tDepth: { value: null },
1129
2079
  tNormal: { value: null },
1130
2080
  resolution: {
1131
- value: new Ue(
2081
+ value: new rt(
1132
2082
  this.renderResolution.x,
1133
2083
  this.renderResolution.y,
1134
2084
  1 / this.renderResolution.x,
@@ -1247,28 +2197,28 @@ class le extends A {
1247
2197
  });
1248
2198
  }
1249
2199
  }
1250
- const Ct = /* @__PURE__ */ p({
2200
+ const mo = /* @__PURE__ */ u({
1251
2201
  __name: "Pixelation",
1252
2202
  props: {
1253
2203
  pixelSize: {},
1254
2204
  depthEdgeStrength: {},
1255
2205
  normalEdgeStrength: {}
1256
2206
  },
1257
- setup(i, { expose: e }) {
1258
- const t = i, { scene: s, camera: a } = S(), { pass: r } = P(() => new le(t.pixelSize, s.value, a.value), t);
1259
- return e({ pass: r }), m(() => {
1260
- r.value.setPixelSize(t.pixelSize);
1261
- }), F(
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(
1262
2212
  [
1263
- [() => t.depthEdgeStrength, "depthEdgeStrength"],
1264
- [() => t.normalEdgeStrength, "normalEdgeStrength"]
2213
+ [() => e.depthEdgeStrength, "depthEdgeStrength"],
2214
+ [() => e.normalEdgeStrength, "normalEdgeStrength"]
1265
2215
  ],
1266
- r,
1267
- () => new le(1, s.value, a.value)
2216
+ a,
2217
+ () => new Fe(1, o.value, s.value)
1268
2218
  ), () => {
1269
2219
  };
1270
2220
  }
1271
- }), nt = {
2221
+ }), Lt = {
1272
2222
  name: "OutputShader",
1273
2223
  uniforms: {
1274
2224
  tDiffuse: { value: null },
@@ -1297,7 +2247,7 @@ const Ct = /* @__PURE__ */ p({
1297
2247
  fragmentShader: (
1298
2248
  /* glsl */
1299
2249
  `
1300
-
2250
+
1301
2251
  precision highp float;
1302
2252
 
1303
2253
  uniform sampler2D tDiffuse;
@@ -1337,6 +2287,10 @@ const Ct = /* @__PURE__ */ p({
1337
2287
 
1338
2288
  gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );
1339
2289
 
2290
+ #elif defined( CUSTOM_TONE_MAPPING )
2291
+
2292
+ gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );
2293
+
1340
2294
  #endif
1341
2295
 
1342
2296
  // color space
@@ -1350,39 +2304,39 @@ const Ct = /* @__PURE__ */ p({
1350
2304
  }`
1351
2305
  )
1352
2306
  };
1353
- class lt extends A {
2307
+ class Ot extends T {
1354
2308
  constructor() {
1355
2309
  super();
1356
- const e = nt;
1357
- this.uniforms = w.clone(e.uniforms), this.material = new He({
1358
- name: e.name,
2310
+ const t = Lt;
2311
+ this.uniforms = E.clone(t.uniforms), this.material = new it({
2312
+ name: t.name,
1359
2313
  uniforms: this.uniforms,
1360
- vertexShader: e.vertexShader,
1361
- fragmentShader: e.fragmentShader
1362
- }), this.fsQuad = new C(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;
1363
2317
  }
1364
- render(e, t, s) {
1365
- this.uniforms.tDiffuse.value = s.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 = {}, Ge.getTransfer(this._outputColorSpace) === Xe && (this.material.defines.SRGB_TRANSFER = ""), this._toneMapping === je ? this.material.defines.LINEAR_TONE_MAPPING = "" : this._toneMapping === Ie ? this.material.defines.REINHARD_TONE_MAPPING = "" : this._toneMapping === Ve ? this.material.defines.CINEON_TONE_MAPPING = "" : this._toneMapping === Ye ? this.material.defines.ACES_FILMIC_TONE_MAPPING = "" : this._toneMapping === Qe ? this.material.defines.AGX_TONE_MAPPING = "" : this._toneMapping === qe && (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));
1366
2320
  }
1367
2321
  dispose() {
1368
2322
  this.material.dispose(), this.fsQuad.dispose();
1369
2323
  }
1370
2324
  }
1371
- const Et = /* @__PURE__ */ p({
2325
+ const go = /* @__PURE__ */ u({
1372
2326
  __name: "Output",
1373
- setup(i, { expose: e }) {
1374
- const { pass: t } = P(() => new lt());
1375
- return e({ pass: t }), () => {
2327
+ setup(r, { expose: t }) {
2328
+ const { pass: e } = F(() => new Ot());
2329
+ return t({ pass: e }), () => {
1376
2330
  };
1377
2331
  }
1378
- }), U = {
2332
+ }), I = {
1379
2333
  name: "SMAAEdgesShader",
1380
2334
  defines: {
1381
2335
  SMAA_THRESHOLD: "0.1"
1382
2336
  },
1383
2337
  uniforms: {
1384
2338
  tDiffuse: { value: null },
1385
- resolution: { value: new h(1 / 1024, 1 / 512) }
2339
+ resolution: { value: new c(1 / 1024, 1 / 512) }
1386
2340
  },
1387
2341
  vertexShader: (
1388
2342
  /* glsl */
@@ -1476,7 +2430,7 @@ const Et = /* @__PURE__ */ p({
1476
2430
 
1477
2431
  }`
1478
2432
  )
1479
- }, H = {
2433
+ }, j = {
1480
2434
  name: "SMAAWeightsShader",
1481
2435
  defines: {
1482
2436
  SMAA_MAX_SEARCH_STEPS: "8",
@@ -1488,7 +2442,7 @@ const Et = /* @__PURE__ */ p({
1488
2442
  tDiffuse: { value: null },
1489
2443
  tArea: { value: null },
1490
2444
  tSearch: { value: null },
1491
- resolution: { value: new h(1 / 1024, 1 / 512) }
2445
+ resolution: { value: new c(1 / 1024, 1 / 512) }
1492
2446
  },
1493
2447
  vertexShader: (
1494
2448
  /* glsl */
@@ -1726,12 +2680,12 @@ const Et = /* @__PURE__ */ p({
1726
2680
 
1727
2681
  }`
1728
2682
  )
1729
- }, Q = {
2683
+ }, te = {
1730
2684
  name: "SMAABlendShader",
1731
2685
  uniforms: {
1732
2686
  tDiffuse: { value: null },
1733
2687
  tColor: { value: null },
1734
- resolution: { value: new h(1 / 1024, 1 / 512) }
2688
+ resolution: { value: new c(1 / 1024, 1 / 512) }
1735
2689
  },
1736
2690
  vertexShader: (
1737
2691
  /* glsl */
@@ -1816,43 +2770,43 @@ const Et = /* @__PURE__ */ p({
1816
2770
  }`
1817
2771
  )
1818
2772
  };
1819
- class dt extends A {
1820
- constructor(e, t) {
1821
- super(), this.edgesRT = new M(e, t, {
2773
+ class Rt extends T {
2774
+ constructor(t, e) {
2775
+ super(), this.edgesRT = new D(t, e, {
1822
2776
  depthBuffer: !1,
1823
- type: b
1824
- }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new M(e, t, {
2777
+ type: M
2778
+ }), this.edgesRT.texture.name = "SMAAPass.edges", this.weightsRT = new D(t, e, {
1825
2779
  depthBuffer: !1,
1826
- type: b
2780
+ type: M
1827
2781
  }), this.weightsRT.texture.name = "SMAAPass.weights";
1828
- const s = this, a = new Image();
1829
- a.src = this.getAreaTexture(), a.onload = function() {
1830
- s.areaTexture.needsUpdate = !0;
1831
- }, this.areaTexture = new ae(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = a, this.areaTexture.minFilter = ke, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
1832
- const r = new Image();
1833
- r.src = this.getSearchTexture(), r.onload = function() {
1834
- s.searchTexture.needsUpdate = !0;
1835
- }, this.searchTexture = new ae(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = r, this.searchTexture.magFilter = E, this.searchTexture.minFilter = E, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = w.clone(U.uniforms), this.uniformsEdges.resolution.value.set(1 / e, 1 / t), this.materialEdges = new x({
1836
- defines: Object.assign({}, U.defines),
2782
+ const o = this, s = new Image();
2783
+ s.src = this.getAreaTexture(), s.onload = function() {
2784
+ o.areaTexture.needsUpdate = !0;
2785
+ }, this.areaTexture = new Te(), this.areaTexture.name = "SMAAPass.area", this.areaTexture.image = s, this.areaTexture.minFilter = gt, this.areaTexture.generateMipmaps = !1, this.areaTexture.flipY = !1;
2786
+ const a = new Image();
2787
+ a.src = this.getSearchTexture(), a.onload = function() {
2788
+ o.searchTexture.needsUpdate = !0;
2789
+ }, this.searchTexture = new Te(), this.searchTexture.name = "SMAAPass.search", this.searchTexture.image = a, this.searchTexture.magFilter = R, this.searchTexture.minFilter = R, this.searchTexture.generateMipmaps = !1, this.searchTexture.flipY = !1, this.uniformsEdges = E.clone(I.uniforms), this.uniformsEdges.resolution.value.set(1 / t, 1 / e), this.materialEdges = new S({
2790
+ defines: Object.assign({}, I.defines),
1837
2791
  uniforms: this.uniformsEdges,
1838
- vertexShader: U.vertexShader,
1839
- fragmentShader: U.fragmentShader
1840
- }), this.uniformsWeights = w.clone(H.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 x({
1841
- defines: Object.assign({}, H.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),
1842
2796
  uniforms: this.uniformsWeights,
1843
- vertexShader: H.vertexShader,
1844
- fragmentShader: H.fragmentShader
1845
- }), this.uniformsBlend = w.clone(Q.uniforms), this.uniformsBlend.resolution.value.set(1 / e, 1 / t), this.uniformsBlend.tDiffuse.value = this.weightsRT.texture, this.materialBlend = new x({
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({
1846
2800
  uniforms: this.uniformsBlend,
1847
- vertexShader: Q.vertexShader,
1848
- fragmentShader: Q.fragmentShader
1849
- }), this.fsQuad = new C(null);
2801
+ vertexShader: te.vertexShader,
2802
+ fragmentShader: te.fragmentShader
2803
+ }), this.fsQuad = new O(null);
1850
2804
  }
1851
- render(e, t, s) {
1852
- this.uniformsEdges.tDiffuse.value = s.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 = s.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));
1853
2807
  }
1854
- setSize(e, t) {
1855
- 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);
1856
2810
  }
1857
2811
  getAreaTexture() {
1858
2812
  return "data:image/png;base64,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";
@@ -1864,27 +2818,27 @@ class dt extends A {
1864
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();
1865
2819
  }
1866
2820
  }
1867
- const Dt = /* @__PURE__ */ p({
2821
+ const vo = /* @__PURE__ */ u({
1868
2822
  __name: "SMAA",
1869
2823
  props: {
1870
2824
  width: {},
1871
2825
  height: {}
1872
2826
  },
1873
- setup(i, { expose: e }) {
1874
- const t = i, { sizes: s } = S(), { pixelRatio: a } = me(), r = O(() => t.width ?? s.width.value * a.value), o = O(() => t.height ?? s.height.value * a.value), { pass: n } = P(() => new dt(r.value, o.value), t);
1875
- return e({ pass: n }), m(() => {
1876
- n.value.setSize(r.value, o.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);
1877
2831
  }), () => {
1878
2832
  };
1879
2833
  }
1880
- }), Se = {
2834
+ }), Xe = {
1881
2835
  name: "LuminosityHighPassShader",
1882
2836
  shaderID: "luminosityHighPass",
1883
2837
  uniforms: {
1884
2838
  tDiffuse: { value: null },
1885
2839
  luminosityThreshold: { value: 1 },
1886
2840
  smoothWidth: { value: 1 },
1887
- defaultColor: { value: new X(0) },
2841
+ defaultColor: { value: new Y(0) },
1888
2842
  defaultOpacity: { value: 0 }
1889
2843
  },
1890
2844
  vertexShader: (
@@ -1928,80 +2882,80 @@ const Dt = /* @__PURE__ */ p({
1928
2882
  }`
1929
2883
  )
1930
2884
  };
1931
- class L extends A {
1932
- constructor(e, t, s, a) {
1933
- super(), this.strength = t !== void 0 ? t : 1, this.radius = s, this.threshold = a, this.resolution = e !== void 0 ? new h(e.x, e.y) : new h(256, 256), this.clearColor = new X(0, 0, 0), this.renderTargetsHorizontal = [], this.renderTargetsVertical = [], this.nMips = 5;
1934
- let r = Math.round(this.resolution.x / 2), o = Math.round(this.resolution.y / 2);
1935
- this.renderTargetBright = new M(r, o, { type: b }), this.renderTargetBright.texture.name = "UnrealBloomPass.bright", this.renderTargetBright.texture.generateMipmaps = !1;
1936
- for (let c = 0; c < this.nMips; c++) {
1937
- const u = new M(r, o, { type: b });
1938
- u.texture.name = "UnrealBloomPass.h" + c, u.texture.generateMipmaps = !1, this.renderTargetsHorizontal.push(u);
1939
- const T = new M(r, o, { type: b });
1940
- T.texture.name = "UnrealBloomPass.v" + c, T.texture.generateMipmaps = !1, this.renderTargetsVertical.push(T), r = Math.round(r / 2), o = Math.round(o / 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);
1941
2895
  }
1942
- const n = Se;
1943
- this.highPassUniforms = w.clone(n.uniforms), this.highPassUniforms.luminosityThreshold.value = a, this.highPassUniforms.smoothWidth.value = 0.01, this.materialHighPassFilter = new x({
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({
1944
2898
  uniforms: this.highPassUniforms,
1945
2899
  vertexShader: n.vertexShader,
1946
2900
  fragmentShader: n.fragmentShader
1947
2901
  }), this.separableBlurMaterials = [];
1948
2902
  const l = [3, 5, 7, 9, 11];
1949
- r = Math.round(this.resolution.x / 2), o = Math.round(this.resolution.y / 2);
1950
- for (let c = 0; c < this.nMips; c++)
1951
- this.separableBlurMaterials.push(this.getSeparableBlurMaterial(l[c])), this.separableBlurMaterials[c].uniforms.invSize.value = new h(1 / r, 1 / o), r = Math.round(r / 2), o = Math.round(o / 2);
1952
- 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;
1953
- const g = [1, 0.8, 0.6, 0.4, 0.2];
1954
- this.compositeMaterial.uniforms.bloomFactors.value = g, this.bloomTintColors = [new R(1, 1, 1), new R(1, 1, 1), new R(1, 1, 1), new R(1, 1, 1), new R(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
1955
- const d = xe;
1956
- this.copyUniforms = w.clone(d.uniforms), this.blendMaterial = new x({
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;
2907
+ const x = [1, 0.8, 0.6, 0.4, 0.2];
2908
+ this.compositeMaterial.uniforms.bloomFactors.value = x, this.bloomTintColors = [new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1), new P(1, 1, 1)], this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors;
2909
+ const d = Ge;
2910
+ this.copyUniforms = E.clone(d.uniforms), this.blendMaterial = new S({
1957
2911
  uniforms: this.copyUniforms,
1958
2912
  vertexShader: d.vertexShader,
1959
2913
  fragmentShader: d.fragmentShader,
1960
- blending: Ke,
2914
+ blending: vt,
1961
2915
  depthTest: !1,
1962
2916
  depthWrite: !1,
1963
2917
  transparent: !0
1964
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new X(), this.oldClearAlpha = 1, this.basic = new Ze(), this.fsQuad = new C(null);
2918
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Y(), this.oldClearAlpha = 1, this.basic = new xt(), this.fsQuad = new O(null);
1965
2919
  }
1966
2920
  dispose() {
1967
- for (let e = 0; e < this.renderTargetsHorizontal.length; e++)
1968
- this.renderTargetsHorizontal[e].dispose();
1969
- for (let e = 0; e < this.renderTargetsVertical.length; e++)
1970
- 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();
1971
2925
  this.renderTargetBright.dispose();
1972
- for (let e = 0; e < this.separableBlurMaterials.length; e++)
1973
- this.separableBlurMaterials[e].dispose();
2926
+ for (let t = 0; t < this.separableBlurMaterials.length; t++)
2927
+ this.separableBlurMaterials[t].dispose();
1974
2928
  this.compositeMaterial.dispose(), this.blendMaterial.dispose(), this.basic.dispose(), this.fsQuad.dispose();
1975
2929
  }
1976
- setSize(e, t) {
1977
- let s = Math.round(e / 2), a = Math.round(t / 2);
1978
- this.renderTargetBright.setSize(s, a);
1979
- for (let r = 0; r < this.nMips; r++)
1980
- this.renderTargetsHorizontal[r].setSize(s, a), this.renderTargetsVertical[r].setSize(s, a), this.separableBlurMaterials[r].uniforms.invSize.value = new h(1 / s, 1 / a), s = Math.round(s / 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);
1981
2935
  }
1982
- render(e, t, s, a, r) {
1983
- e.getClearColor(this._oldClearColor), this.oldClearAlpha = e.getClearAlpha();
1984
- const o = e.autoClear;
1985
- e.autoClear = !1, e.setClearColor(this.clearColor, 0), r && e.state.buffers.stencil.setTest(!1), this.renderToScreen && (this.fsQuad.material = this.basic, this.basic.map = s.texture, e.setRenderTarget(null), e.clear(), this.fsQuad.render(e)), this.highPassUniforms.tDiffuse.value = s.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);
1986
2940
  let n = this.renderTargetBright;
1987
2941
  for (let l = 0; l < this.nMips; l++)
1988
- this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = L.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 = L.BlurDirectionY, e.setRenderTarget(this.renderTargetsVertical[l]), e.clear(), this.fsQuad.render(e), n = this.renderTargetsVertical[l];
1989
- 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, r && e.state.buffers.stencil.setTest(!0), this.renderToScreen ? (e.setRenderTarget(null), this.fsQuad.render(e)) : (e.setRenderTarget(s), this.fsQuad.render(e)), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = o;
1990
- }
1991
- getSeparableBlurMaterial(e) {
1992
- const t = [];
1993
- for (let s = 0; s < e; s++)
1994
- t.push(0.39894 * Math.exp(-0.5 * s * s / (e * e)) / e);
1995
- return new x({
2942
+ this.fsQuad.material = this.separableBlurMaterials[l], this.separableBlurMaterials[l].uniforms.colorTexture.value = n.texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionX, t.setRenderTarget(this.renderTargetsHorizontal[l]), t.clear(), this.fsQuad.render(t), this.separableBlurMaterials[l].uniforms.colorTexture.value = this.renderTargetsHorizontal[l].texture, this.separableBlurMaterials[l].uniforms.direction.value = B.BlurDirectionY, t.setRenderTarget(this.renderTargetsVertical[l]), t.clear(), this.fsQuad.render(t), n = this.renderTargetsVertical[l];
2943
+ this.fsQuad.material = this.compositeMaterial, this.compositeMaterial.uniforms.bloomStrength.value = this.strength, this.compositeMaterial.uniforms.bloomRadius.value = this.radius, this.compositeMaterial.uniforms.bloomTintColors.value = this.bloomTintColors, t.setRenderTarget(this.renderTargetsHorizontal[0]), t.clear(), this.fsQuad.render(t), this.fsQuad.material = this.blendMaterial, this.copyUniforms.tDiffuse.value = this.renderTargetsHorizontal[0].texture, a && t.state.buffers.stencil.setTest(!0), this.renderToScreen ? (t.setRenderTarget(null), this.fsQuad.render(t)) : (t.setRenderTarget(o), this.fsQuad.render(t)), t.setClearColor(this._oldClearColor, this.oldClearAlpha), t.autoClear = i;
2944
+ }
2945
+ getSeparableBlurMaterial(t) {
2946
+ const e = [];
2947
+ for (let o = 0; o < t; o++)
2948
+ e.push(0.39894 * Math.exp(-0.5 * o * o / (t * t)) / t);
2949
+ return new S({
1996
2950
  defines: {
1997
- KERNEL_RADIUS: e
2951
+ KERNEL_RADIUS: t
1998
2952
  },
1999
2953
  uniforms: {
2000
2954
  colorTexture: { value: null },
2001
- invSize: { value: new h(0.5, 0.5) },
2955
+ invSize: { value: new c(0.5, 0.5) },
2002
2956
  // inverse texture size
2003
- direction: { value: new h(0.5, 0.5) },
2004
- gaussianCoefficients: { value: t }
2957
+ direction: { value: new c(0.5, 0.5) },
2958
+ gaussianCoefficients: { value: e }
2005
2959
  // precomputed Gaussian coefficients
2006
2960
  },
2007
2961
  vertexShader: `varying vec2 vUv;
@@ -2032,10 +2986,10 @@ class L extends A {
2032
2986
  }`
2033
2987
  });
2034
2988
  }
2035
- getCompositeMaterial(e) {
2036
- return new x({
2989
+ getCompositeMaterial(t) {
2990
+ return new S({
2037
2991
  defines: {
2038
- NUM_MIPS: e
2992
+ NUM_MIPS: t
2039
2993
  },
2040
2994
  uniforms: {
2041
2995
  blurTexture1: { value: null },
@@ -2079,51 +3033,70 @@ class L extends A {
2079
3033
  });
2080
3034
  }
2081
3035
  }
2082
- L.BlurDirectionX = new h(1, 0);
2083
- L.BlurDirectionY = new h(0, 1);
2084
- const Lt = /* @__PURE__ */ p({
3036
+ B.BlurDirectionX = new c(1, 0);
3037
+ B.BlurDirectionY = new c(0, 1);
3038
+ const xo = /* @__PURE__ */ u({
2085
3039
  __name: "UnrealBloom",
2086
3040
  props: {
2087
3041
  radius: { default: 0 },
2088
3042
  strength: { default: 1 },
2089
3043
  threshold: { default: 0 }
2090
3044
  },
2091
- setup(i, { expose: e }) {
2092
- const t = i, { sizes: s } = S(), { pass: a } = P(() => new L(
2093
- new h(s.width.value, s.height.value),
2094
- t.radius,
2095
- t.strength,
2096
- t.threshold
2097
- ), t);
2098
- return e({ pass: a }), m(() => {
2099
- var r;
2100
- a.value.radius = t.radius ?? ((r = a.value.getCompositeMaterial().uniforms.bloomRadius) == null ? void 0 : r.value) ?? 0.1;
2101
- }), m(() => {
2102
- var r;
2103
- a.value.strength = t.strength ?? ((r = a.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : r.value) ?? 1;
2104
- }), m(() => {
2105
- var r;
2106
- a.value.threshold = t.threshold ?? ((r = Se.uniforms.luminosityThreshold) == null ? void 0 : r.value) ?? 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;
3055
+ }), v(() => {
3056
+ var a;
3057
+ s.value.strength = e.strength ?? ((a = s.value.getCompositeMaterial().uniforms.bloomStrength) == null ? void 0 : a.value) ?? 1;
3058
+ }), v(() => {
3059
+ var a;
3060
+ s.value.threshold = e.threshold ?? ((a = Xe.uniforms.luminosityThreshold) == null ? void 0 : a.value) ?? 1;
2107
3061
  }), () => {
2108
3062
  };
2109
3063
  }
2110
3064
  });
2111
3065
  export {
2112
- gt as BloomPmndrs,
2113
- vt as DepthOfFieldPmndrs,
2114
- wt as EffectComposer,
2115
- pt as EffectComposerPmndrs,
2116
- Mt as Glitch,
2117
- xt as GlitchPmndrs,
2118
- yt as Halftone,
2119
- bt as NoisePmndrs,
2120
- St as OutlinePmndrs,
2121
- Et as Output,
2122
- Ct as Pixelation,
2123
- At as PixelationPmndrs,
2124
- Dt as SMAA,
2125
- Lt as UnrealBloom,
2126
- Tt as VignettePmndrs,
2127
- P as useEffect,
2128
- y 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
2129
3102
  };