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