@voluma/vlam 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/budget-governor.d.ts +4 -4
- package/dist/camera-budget-governor.d.ts +11 -11
- package/dist/chunk-cache-budget.d.ts +5 -5
- package/dist/chunk-fetch-scheduler.d.ts +4 -4
- package/dist/chunk-loader-DlNwggfG.js +1859 -0
- package/dist/chunk-loader-DlNwggfG.js.map +1 -0
- package/dist/chunk-loader.d.ts +2 -2
- package/dist/compute-sorter.d.ts +1 -1
- package/dist/effects.d.ts +26 -16
- package/dist/effects.js +199 -165
- package/dist/effects.js.map +1 -1
- package/dist/formats/ksplat/index.d.ts +1 -1
- package/dist/formats/lcc/collision-mesh.d.ts +2 -2
- package/dist/formats/lcc.js +17 -16
- package/dist/formats/lcc.js.map +1 -1
- package/dist/formats/ply/index.d.ts +1 -1
- package/dist/formats/ply/parse-splat-ply.d.ts +2 -2
- package/dist/formats/ply.js +1 -1
- package/dist/formats/ply.js.map +1 -1
- package/dist/formats/rad/index.d.ts +1 -1
- package/dist/formats/rad/parse-rad.d.ts +1 -1
- package/dist/formats/rad/rad.d.ts +2 -2
- package/dist/formats/rad.js +3 -3
- package/dist/formats/rad.js.map +1 -1
- package/dist/formats/sog/index.d.ts +1 -1
- package/dist/formats/sog/parse-sog.d.ts +4 -4
- package/dist/formats/sog.js.map +1 -1
- package/dist/formats/splat/index.d.ts +1 -1
- package/dist/formats/spz/index.d.ts +1 -1
- package/dist/index.d.ts +16 -25
- package/dist/index.js +253 -9047
- package/dist/index.js.map +1 -1
- package/dist/{load-scene.d.ts → load-splat-data.d.ts} +15 -13
- package/dist/loaders.d.ts +15 -0
- package/dist/loaders.js +26 -0
- package/dist/loaders.js.map +1 -0
- package/dist/loading-wLo8vRbA.js.map +1 -1
- package/dist/loading.d.ts +8 -8
- package/dist/{splat-mesh-types-CTN_duw2.js → lod-scheduler-B0a_uBlv.js} +133 -140
- package/dist/lod-scheduler-B0a_uBlv.js.map +1 -0
- package/dist/lod-scheduler.d.ts +1 -1
- package/dist/lod-source.d.ts +5 -5
- package/dist/{splat-scene.d.ts → merged-splat-mesh.d.ts} +14 -15
- package/dist/orientation.d.ts +7 -7
- package/dist/{ply-header-BwgExCn-.js → ply-header-B9WllbPg.js} +3 -3
- package/dist/{ply-header-BwgExCn-.js.map → ply-header-B9WllbPg.js.map} +1 -1
- package/dist/radix-sorter-R0FCSqKu.js +178 -0
- package/dist/radix-sorter-R0FCSqKu.js.map +1 -0
- package/dist/relighting-CSQF3UcL.js +969 -0
- package/dist/relighting-CSQF3UcL.js.map +1 -0
- package/dist/relighting.d.ts +1 -1
- package/dist/selection.d.ts +13 -0
- package/dist/selection.js +137 -0
- package/dist/selection.js.map +1 -0
- package/dist/source-transform.d.ts +4 -4
- package/dist/{splat-budget-DXew_86c.js → splat-budget-DuVZspPQ.js} +7 -7
- package/dist/{splat-budget-DXew_86c.js.map → splat-budget-DuVZspPQ.js.map} +1 -1
- package/dist/splat-budget.d.ts +1 -1
- package/dist/splat-data-BZM5dhhx.js.map +1 -1
- package/dist/splat-data.d.ts +4 -4
- package/dist/splat-mesh-aQdcWA6v.js +1942 -0
- package/dist/splat-mesh-aQdcWA6v.js.map +1 -0
- package/dist/splat-mesh-material.d.ts +2 -2
- package/dist/splat-mesh-types-BZIko-_9.js +18 -0
- package/dist/splat-mesh-types-BZIko-_9.js.map +1 -0
- package/dist/splat-mesh-types.d.ts +14 -8
- package/dist/splat-mesh.d.ts +4 -4
- package/dist/splat-modifier.d.ts +5 -5
- package/dist/splat-partition.d.ts +1 -1
- package/dist/static-lod-entry.d.ts +12 -0
- package/dist/static-lod-splat-mesh.d.ts +2 -2
- package/dist/{static-lod-worker-D2fyqQZO.js → static-lod-worker-DktKnJkR.js} +46 -46
- package/dist/{static-lod-worker-D2fyqQZO.js.map → static-lod-worker-DktKnJkR.js.map} +1 -1
- package/dist/static-lod.js +148 -0
- package/dist/static-lod.js.map +1 -0
- package/dist/streamed-splat-mesh.d.ts +21 -27
- package/dist/streaming.d.ts +23 -0
- package/dist/streaming.js +2877 -0
- package/dist/streaming.js.map +1 -0
- package/dist/{unified-splat-renderer.d.ts → unified-splat-mesh.d.ts} +10 -10
- package/dist/unified-work-buffer.d.ts +66 -0
- package/dist/unified.d.ts +11 -0
- package/dist/unified.js +738 -0
- package/dist/unified.js.map +1 -0
- package/dist/webgpu-limits-Y3CI_6_6.js +43 -0
- package/dist/webgpu-limits-Y3CI_6_6.js.map +1 -0
- package/dist/webgpu-limits.d.ts +0 -59
- package/dist/work-buffer-gather.d.ts +1 -1
- package/package.json +24 -4
- package/dist/splat-mesh-types-CTN_duw2.js.map +0 -1
package/dist/effects.js
CHANGED
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import { context as
|
|
3
|
-
import { w as
|
|
4
|
-
const
|
|
1
|
+
import * as w from "three/webgpu";
|
|
2
|
+
import { context as mt, positionWorld as ot, cameraPosition as ft, smoothstep as F, float as a, normalWorld as Q, mix as p, min as ht, vec3 as v, uniform as R, vec4 as U, wgslFn as gt, uniformArray as xt, shadow as L, objectPosition as O, cos as nt, int as bt, mat3 as pt, modelViewMatrix as wt, reference as Mt, frameGroup as vt, vec2 as yt } from "three/tsl";
|
|
3
|
+
import { w as Ct } from "./logging-BfPdd7NJ.js";
|
|
4
|
+
const Z = new w.Vector2(), st = new w.Color(), Tt = mt({
|
|
5
5
|
getOutput: (t) => t
|
|
6
6
|
});
|
|
7
|
-
function
|
|
8
|
-
t.getDrawingBufferSize(
|
|
9
|
-
const
|
|
10
|
-
t.getClearColor(
|
|
7
|
+
function Gt(t, e, c, o) {
|
|
8
|
+
t.getDrawingBufferSize(Z), o.setSize(Math.max(1, Z.x), Math.max(1, Z.y));
|
|
9
|
+
const m = t.getRenderTarget(), l = t.getActiveCubeFace(), d = t.getActiveMipmapLevel(), i = t.getMRT(), b = t.getClearAlpha(), n = t.autoClear, x = t.shadowMap.enabled, u = t.shadowMap.autoUpdate, s = t.contextNode;
|
|
10
|
+
t.getClearColor(st);
|
|
11
11
|
try {
|
|
12
|
-
t.contextNode =
|
|
12
|
+
t.contextNode = Tt, t.autoClear = !0, t.shadowMap.enabled = !0, u === !1 && (t.shadowMap.autoUpdate = !0), t.setMRT(null), t.setRenderTarget(o), t.setClearColor(16777215, 0), t.clear(), t.render(e, c);
|
|
13
13
|
} finally {
|
|
14
|
-
t.setRenderTarget(
|
|
14
|
+
t.setRenderTarget(m, l, d), t.setMRT(i), t.setClearColor(st, b), t.autoClear = n, t.shadowMap.enabled = x, u !== void 0 && (t.shadowMap.autoUpdate = u), t.contextNode = s;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
const
|
|
18
|
-
function
|
|
19
|
-
const
|
|
20
|
-
for (let
|
|
21
|
-
const
|
|
17
|
+
const tt = 5, Rt = { tint: 0, desaturate: 1, hide: 2, rim: 3 }, St = [0, 0, 0], kt = [1, 1, 1], Lt = [0, 0, 0, 1];
|
|
18
|
+
function Vt(t = [], e = {}) {
|
|
19
|
+
const c = Math.max(1, Math.floor(e.maxShapes ?? 32)), o = [];
|
|
20
|
+
for (let n = 0; n < c * tt; n++) o.push(new w.Vector4());
|
|
21
|
+
const m = xt(o, "vec4"), l = R(0, "int");
|
|
22
22
|
let d = !1;
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
`sdfEffects: ${
|
|
23
|
+
const i = (n) => {
|
|
24
|
+
const x = Math.min(n.length, c);
|
|
25
|
+
n.length > c && !d && (d = !0, Ct(
|
|
26
|
+
`sdfEffects: ${n.length} shapes exceeds maxShapes=${c}; extra shapes are ignored. Raise maxShapes if you need more.`
|
|
27
27
|
));
|
|
28
|
-
for (let
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
28
|
+
for (let u = 0; u < x; u++) {
|
|
29
|
+
const s = n[u];
|
|
30
|
+
if (s.kind === "box") {
|
|
31
|
+
const f = s.halfExtents;
|
|
32
|
+
if (!f || !(f[0] > 0) || !(f[1] > 0) || !(f[2] > 0))
|
|
33
33
|
throw new Error(
|
|
34
|
-
`sdfEffects.setShapes: shape ${
|
|
34
|
+
`sdfEffects.setShapes: shape ${u} is a box and requires halfExtents with three positive components (got ${f ? `[${f.join(", ")}]` : "undefined"}).`
|
|
35
35
|
);
|
|
36
|
-
} else if (typeof
|
|
37
|
-
if (
|
|
36
|
+
} else if (typeof s.radius == "number" && s.radius > 0) {
|
|
37
|
+
if (s.kind === "cylinder" && !(typeof s.height == "number" && s.height > 0))
|
|
38
38
|
throw new Error(
|
|
39
|
-
`sdfEffects.setShapes: shape ${
|
|
39
|
+
`sdfEffects.setShapes: shape ${u} is a cylinder and requires a positive height (got ${String(s.height)}).`
|
|
40
40
|
);
|
|
41
41
|
} else throw new Error(
|
|
42
|
-
`sdfEffects.setShapes: shape ${
|
|
42
|
+
`sdfEffects.setShapes: shape ${u} is a ${s.kind} and requires a positive radius (got ${String(s.radius)}).`
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
|
-
for (let
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
} else
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
for (let u = 0; u < x; u++) {
|
|
46
|
+
const s = n[u], f = u * tt, h = s.center ?? St, r = s.color ?? kt, g = s.rotation ?? Lt, y = s.kind === "box" ? 1 : s.kind === "cylinder" ? 2 : 0;
|
|
47
|
+
if (o[f + 0].set(h[0], h[1], h[2], y), s.kind === "box") {
|
|
48
|
+
const M = s.halfExtents;
|
|
49
|
+
o[f + 1].set(M[0], M[1], M[2], s.falloff ?? 0);
|
|
50
|
+
} else s.kind === "cylinder" ? o[f + 1].set(
|
|
51
|
+
s.radius,
|
|
52
|
+
s.height / 2,
|
|
53
53
|
0,
|
|
54
|
-
|
|
55
|
-
) :
|
|
56
|
-
|
|
54
|
+
s.falloff ?? 0
|
|
55
|
+
) : o[f + 1].set(s.radius, 0, 0, s.falloff ?? 0);
|
|
56
|
+
o[f + 2].set(r[0], r[1], r[2], Rt[s.mode]), o[f + 3].set(g[0], g[1], g[2], g[3]), o[f + 4].set(s.invert ? 1 : 0, s.strength ?? 1, 0, 0);
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
l.value = x;
|
|
59
59
|
};
|
|
60
|
-
return
|
|
61
|
-
const
|
|
62
|
-
let
|
|
63
|
-
for (let
|
|
64
|
-
const
|
|
65
|
-
|
|
60
|
+
return i(t), { modifier: (n) => {
|
|
61
|
+
const x = n.localCenter;
|
|
62
|
+
let u = n.color.rgb, s = a(1);
|
|
63
|
+
for (let f = 0; f < c; f++) {
|
|
64
|
+
const h = f * tt, r = (dt) => m.element(h + dt), g = r(0), y = r(1), M = r(2), C = r(3), T = r(4), J = g.xyz, N = g.w, z = y.xyz, _ = y.w.max(1e-4), G = M.xyz, S = M.w, K = T.x, V = T.y, B = bt(f).lessThan(l).select(a(1), a(0)), W = x.sub(J), E = At(C, W), P = E.length().sub(z.x), k = zt(E, z), $ = Et(E, z.x, z.y), D = N.greaterThan(0.5).and(N.lessThan(1.5)).select(a(1), a(0)), j = N.greaterThan(1.5).select(a(1), a(0)), q = p(p(P, k, D), $, j), H = p(q, q.negate(), K), A = a(1).sub(F(0, _, H)).mul(V).mul(B), X = a(1).sub(F(0, _, H.abs())).mul(V).mul(B), Y = S.lessThan(0.5).select(a(1), a(0)), ct = S.greaterThan(0.5).and(S.lessThan(1.5)).select(a(1), a(0)), rt = S.greaterThan(1.5).and(S.lessThan(2.5)).select(a(1), a(0)), lt = S.greaterThan(2.5).select(a(1), a(0)), ut = u.dot(v(0.2126, 0.7152, 0.0722));
|
|
65
|
+
u = p(u, G, A.mul(Y)), u = p(u, v(ut), A.mul(ct)), u = p(u, G, X.mul(lt)), s = s.mul(a(1).sub(A.mul(rt)));
|
|
66
66
|
}
|
|
67
|
-
return { color:
|
|
68
|
-
}, setShapes:
|
|
67
|
+
return { color: U(u, n.color.a.mul(s)) };
|
|
68
|
+
}, setShapes: i, maxShapes: c, _uniforms: { slots: o, count: l } };
|
|
69
69
|
}
|
|
70
|
-
function
|
|
71
|
-
const
|
|
72
|
-
return
|
|
70
|
+
function zt(t, e) {
|
|
71
|
+
const c = t.abs().sub(e), o = c.max(v(0, 0, 0)).length(), m = c.x.max(c.y.max(c.z)).min(0);
|
|
72
|
+
return o.add(m);
|
|
73
73
|
}
|
|
74
|
-
function
|
|
75
|
-
const
|
|
76
|
-
return
|
|
74
|
+
function Et(t, e, c) {
|
|
75
|
+
const o = t.xz.length().sub(e), m = t.y.abs().sub(c), l = yt(o.max(0), m.max(0)).length(), d = o.max(m).min(0);
|
|
76
|
+
return l.add(d);
|
|
77
77
|
}
|
|
78
|
-
function
|
|
79
|
-
const
|
|
80
|
-
return e.sub(
|
|
78
|
+
function At(t, e) {
|
|
79
|
+
const c = t.xyz, o = t.w, m = c.cross(e).mul(2);
|
|
80
|
+
return e.sub(m.mul(o)).add(c.cross(m));
|
|
81
81
|
}
|
|
82
|
-
function
|
|
83
|
-
const e = new
|
|
82
|
+
function Bt(t = {}) {
|
|
83
|
+
const e = new w.Vector3(...t.direction ?? [0.3, 1, 0.6]).normalize(), c = R(e), o = a(t.ambient ?? 0.35), m = a(t.diffuse ?? 0.75);
|
|
84
84
|
return { modifier: (d) => {
|
|
85
|
-
const
|
|
86
|
-
return { color:
|
|
87
|
-
}, direction:
|
|
85
|
+
const i = d.normal.dot(c.normalize()).max(0), b = o.add(i.mul(m));
|
|
86
|
+
return { color: U(d.color.rgb.mul(b), d.color.a) };
|
|
87
|
+
}, direction: c };
|
|
88
88
|
}
|
|
89
|
-
function
|
|
90
|
-
const e =
|
|
91
|
-
return { modifier: (
|
|
92
|
-
const d =
|
|
93
|
-
return { scale:
|
|
94
|
-
}, focusDistance: e, aperture:
|
|
89
|
+
function Wt(t = {}) {
|
|
90
|
+
const e = R(Math.max(1e-4, t.focusDistance ?? 10)), c = R(Math.max(0, t.aperture ?? 0.5)), o = a(Math.max(0, t.maxBlur ?? 6));
|
|
91
|
+
return { modifier: (l) => {
|
|
92
|
+
const d = l.viewCenter.z.negate().max(1e-4), i = e.max(1e-4), b = d.sub(i).abs().div(i).mul(c).min(o), n = a(1).add(b), x = l.color.a.div(n.mul(n));
|
|
93
|
+
return { scale: l.scale.mul(n), color: U(l.color.rgb, x) };
|
|
94
|
+
}, focusDistance: e, aperture: c };
|
|
95
95
|
}
|
|
96
|
-
function
|
|
97
|
-
const e =
|
|
96
|
+
function $t(t = {}) {
|
|
97
|
+
const e = R(0), c = t.frequency ?? 3, o = Math.min(Math.max(t.edge ?? 0.08, 0), 0.5), m = gt(
|
|
98
98
|
/* wgsl */
|
|
99
99
|
`
|
|
100
100
|
fn vnoise( x: vec3<f32> ) -> f32 {
|
|
@@ -122,128 +122,162 @@ function Ot(t = {}) {
|
|
|
122
122
|
`
|
|
123
123
|
);
|
|
124
124
|
return { modifier: (d) => {
|
|
125
|
-
const
|
|
126
|
-
return { color:
|
|
125
|
+
const i = m({ x: d.localCenter.mul(c) }), b = i.mul(1 - 2 * o).add(o), n = F(b.sub(o), b.add(o), e), x = e.greaterThan(b.sub(o));
|
|
126
|
+
return { color: U(d.color.rgb, d.color.a.mul(n)), visible: x };
|
|
127
127
|
}, progress: e };
|
|
128
128
|
}
|
|
129
|
-
function
|
|
130
|
-
const e =
|
|
131
|
-
return { modifier: (
|
|
132
|
-
const
|
|
129
|
+
function jt(t = {}) {
|
|
130
|
+
const e = R(Math.min(1, Math.max(-1, t.intensity ?? 0))), c = R(Math.max(1e-4, t.radius ?? 1));
|
|
131
|
+
return { modifier: (m) => {
|
|
132
|
+
const l = e.clamp(-1, 1), d = c.max(1e-4), i = m.viewCenter, b = l.max(0), n = l.negate().max(0), x = i.z.negate().max(0), u = x.div(d).atan().mul(a(Math.PI * 0.5)), s = u.cos(), f = u.sin(), h = f.negate(), r = v(i.x, i.y.mul(s).sub(i.z.mul(f)), i.y.mul(f).add(i.z.mul(s))), g = v(i.x, i.y.mul(s).sub(i.z.mul(h)), i.y.mul(h).add(i.z.mul(s))), y = p(p(i, r, n), g, b), M = a(Math.PI * 0.5).mul(d), C = i.z.lessThan(0).select(M.negate().div(x.mul(x).add(d.mul(d))), a(0)), T = C.negate(), J = v(1, 0, 0), N = v(0, s, f), z = v(0, f.negate().sub(r.z.mul(C)), s.add(r.y.mul(C))), _ = v(1, 0, 0), G = v(0, s, h), S = v(
|
|
133
133
|
0,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
),
|
|
134
|
+
h.negate().sub(g.z.mul(T)),
|
|
135
|
+
s.add(g.y.mul(T))
|
|
136
|
+
), K = v(1, 0, 0), V = v(0, 1, 0), B = v(0, 0, 1), W = p(p(K, J, n), _, b), E = p(p(V, N, n), G, b), P = p(p(B, z, n), S, b), k = W.div(W.length().max(1e-6)), $ = E.sub(k.mul(k.dot(E))), D = $.div($.length().max(1e-6)), j = P.sub(k.mul(k.dot(P))).sub(D.mul(D.dot(P))), q = j.div(j.length().max(1e-6)), H = pt(k, D, q), A = wt.toMat3(), X = A.transpose(), Y = X.mul(H).mul(A);
|
|
137
137
|
return {
|
|
138
|
-
offset:
|
|
139
|
-
rotation:
|
|
138
|
+
offset: m.offset.add(X.mul(y.sub(i))),
|
|
139
|
+
rotation: Y.mul(m.rotation)
|
|
140
140
|
};
|
|
141
|
-
}, intensity: e, radius:
|
|
141
|
+
}, intensity: e, radius: c };
|
|
142
142
|
}
|
|
143
|
-
const
|
|
143
|
+
const Ft = 32, et = (t) => {
|
|
144
144
|
const e = t.intensity;
|
|
145
145
|
return Number.isFinite(e) ? Math.max(0, e) : 1;
|
|
146
|
-
},
|
|
146
|
+
}, it = (t) => {
|
|
147
|
+
const e = t.fill;
|
|
148
|
+
return Number.isFinite(e) ? Math.max(0, e) : 0;
|
|
149
|
+
}, I = (t, e, c) => {
|
|
150
|
+
const o = Mt(t, e, c);
|
|
151
|
+
return o.setGroup(vt), o;
|
|
152
|
+
}, at = (t) => {
|
|
147
153
|
const e = t;
|
|
148
154
|
if (!(e.isSpotLight === !0 || e.isPointLight === !0)) return a(1);
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
if (!(Number(e.distance) > 0)) return a(1);
|
|
156
|
+
const m = Math.max(Number(e.decay) || 1, 0.01), l = ot.distance(O(e)), d = I("distance", "float", e).max(1e-4), i = l.div(d).pow4().oneMinus().clamp().pow2();
|
|
157
|
+
return i.pow(a(m));
|
|
158
|
+
}, Nt = (t, e, c) => {
|
|
159
|
+
const o = t, m = o.isSpotLight === !0, l = o.isPointLight === !0;
|
|
160
|
+
if (!m && !l) return v(0, 0, 0);
|
|
161
|
+
const d = O(o), i = d.sub(ot), b = i.length().max(1e-4), n = i.div(b), x = Q.dot(n).max(0), u = at(t);
|
|
162
|
+
let s = u.mul(x).mul(c);
|
|
163
|
+
if (m) {
|
|
164
|
+
const h = t, r = O(h.target).sub(d).normalize(), g = I("angle", "float", h).max(1e-3), y = I("penumbra", "float", h).clamp(0, 0.95), M = g.mul(a(1).sub(y)).max(1e-3), C = F(nt(g), nt(M), n.negate().dot(r));
|
|
165
|
+
s = s.mul(C);
|
|
158
166
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
167
|
+
const f = I("color", "color", t);
|
|
168
|
+
return f.mul(a(e)).mul(s);
|
|
169
|
+
}, Pt = (t, e, c) => {
|
|
170
|
+
const o = t;
|
|
171
|
+
if (o.isDirectionalLight !== !0) return v(0, 0, 0);
|
|
172
|
+
const m = O(o.target).sub(O(o)).normalize(), l = Q.dot(m.negate()).max(0), d = I("color", "color", t);
|
|
173
|
+
return d.mul(a(e)).mul(l).mul(c);
|
|
174
|
+
}, Dt = (t) => {
|
|
175
|
+
const e = Array.isArray(t) ? t : [{ light: t, intensity: 1 }], c = [];
|
|
176
|
+
for (const o of e) {
|
|
177
|
+
if (c.length >= Ft) break;
|
|
178
|
+
et(o) <= 0 && it(o) <= 0 || c.push(o);
|
|
179
|
+
}
|
|
180
|
+
return c;
|
|
181
|
+
}, It = (t, e, c) => {
|
|
182
|
+
const o = Number.isFinite(e.nearRadius) ? Math.max(1, e.nearRadius) : e.midLight ? 20 : 100, m = Number.isFinite(e.midRadius) ? Math.max(o, e.midRadius) : 50, l = Number.isFinite(e.outerRadius) ? Math.max(m, e.outerRadius) : 160, d = (b, n, x) => p(b, n, F(a(x * 0.7), a(x * 0.95), c));
|
|
183
|
+
let i = L(t);
|
|
184
|
+
return e.midLight ? (i = d(i, L(e.midLight), o), e.outerLight ? (i = d(i, L(e.outerLight), m), e.farLight && (i = d(i, L(e.farLight), l))) : e.farLight && (i = d(i, L(e.farLight), m))) : e.farLight && (i = d(i, L(e.farLight), o)), i;
|
|
164
185
|
};
|
|
165
|
-
function
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
const d =
|
|
169
|
-
const
|
|
170
|
-
return
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
186
|
+
function qt(t, e = {}) {
|
|
187
|
+
const c = Number.isFinite(e.umbra) ? Math.min(1, Math.max(0, e.umbra)) : 0.45, o = Number.isFinite(e.receiveUpMin) ? Math.min(0.95, Math.max(0, e.receiveUpMin)) : 0.25, m = Number.isFinite(e.diffuse) ? Math.max(0, e.diffuse) : 0, l = new w.MeshStandardNodeMaterial();
|
|
188
|
+
l.side = w.DoubleSide, l.color = new w.Color(1, 1, 1), l.roughness = 1, l.metalness = 0, l.transparent = !1, l.depthWrite = !0, l.polygonOffset = !0, l.polygonOffsetFactor = 2, l.polygonOffsetUnits = 2;
|
|
189
|
+
const d = ot.distance(ft), i = Dt(t), b = o > 0 ? F(a(o), a(o + 0.3), Q.y) : a(1), n = (h, r) => {
|
|
190
|
+
const g = h === 0 ? It(r, e, d) : L(r);
|
|
191
|
+
return p(a(1), g, at(r));
|
|
192
|
+
}, x = i.map(
|
|
193
|
+
(h, r) => n(r, h.light)
|
|
194
|
+
);
|
|
195
|
+
let u, s = a(1);
|
|
196
|
+
if (e.combine === "min" && i.length > 0) {
|
|
197
|
+
let h = a(1);
|
|
198
|
+
for (let r = 0; r < i.length; r++) {
|
|
199
|
+
const g = i[r], y = et(g);
|
|
200
|
+
if (y <= 0) continue;
|
|
201
|
+
const M = Math.min(1, Math.max(0, 1 - y * (1 - c))), C = x[r], T = p(a(M), a(1), C);
|
|
202
|
+
h = ht(h, T);
|
|
178
203
|
}
|
|
179
|
-
|
|
204
|
+
s = h, u = p(a(1), h, b);
|
|
180
205
|
} else {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
const
|
|
189
|
-
|
|
206
|
+
const h = i.map((r, g) => ({ index: g, intensity: et(r) })).filter(({ intensity: r }) => r > 0);
|
|
207
|
+
if (h.length === 1)
|
|
208
|
+
s = x[h[0].index];
|
|
209
|
+
else if (h.length > 1) {
|
|
210
|
+
let r = a(0), g = 0;
|
|
211
|
+
for (const { index: y, intensity: M } of h) {
|
|
212
|
+
g += M;
|
|
213
|
+
const C = x[y];
|
|
214
|
+
r = r.add(a(M).mul(C));
|
|
190
215
|
}
|
|
191
|
-
|
|
216
|
+
s = r.div(a(g));
|
|
192
217
|
}
|
|
193
|
-
|
|
194
|
-
|
|
218
|
+
if (h.length > 0) {
|
|
219
|
+
const r = p(a(1), s, b);
|
|
220
|
+
u = p(a(c), a(1), r);
|
|
221
|
+
} else
|
|
222
|
+
u = a(1);
|
|
223
|
+
}
|
|
224
|
+
let f = v(0, 0, 0);
|
|
225
|
+
if (m > 0) {
|
|
226
|
+
const h = R(e.color ?? new w.Color(1, 1, 1)), r = R(e.direction ?? new w.Vector3(0, 1, 0)), g = Q.dot(r.normalize()).max(0);
|
|
227
|
+
f = h.mul(g).mul(a(m)).mul(b).mul(s);
|
|
228
|
+
}
|
|
229
|
+
for (let h = 0; h < i.length; h++) {
|
|
230
|
+
const r = i[h], g = it(r);
|
|
231
|
+
if (g <= 0) continue;
|
|
232
|
+
const y = r.light, M = x[h], C = Nt(y, g, M), T = Pt(y, g, M);
|
|
233
|
+
f = f.add(C).add(T);
|
|
195
234
|
}
|
|
196
|
-
|
|
197
|
-
const o = C(e.color ?? new p.Color(1, 1, 1)), c = C(e.direction ?? new p.Vector3(0, 1, 0)), x = Z.dot(c.normalize()).max(0), g = o.mul(x).mul(a(f)).mul(h).mul(l);
|
|
198
|
-
u.outputNode = A(M(m).add(g), a(1));
|
|
199
|
-
} else
|
|
200
|
-
u.outputNode = A(M(m), a(1));
|
|
201
|
-
return u;
|
|
235
|
+
return l.outputNode = U(v(u).add(f), a(1)), l;
|
|
202
236
|
}
|
|
203
|
-
function
|
|
204
|
-
const e = new
|
|
205
|
-
return e.setAttribute("position", new
|
|
237
|
+
function Ot(t) {
|
|
238
|
+
const e = new w.BufferGeometry();
|
|
239
|
+
return e.setAttribute("position", new w.BufferAttribute(t.positions.slice(), 3)), e.setIndex(new w.BufferAttribute(t.indices.slice(), 1)), e;
|
|
206
240
|
}
|
|
207
|
-
function
|
|
208
|
-
const e = t.albedo ?? 0.5,
|
|
209
|
-
color: new
|
|
241
|
+
function Ht(t = {}) {
|
|
242
|
+
const e = t.albedo ?? 0.5, c = new w.Group(), o = t.matrixWorld ?? null, m = [], l = new w.MeshStandardMaterial({
|
|
243
|
+
color: new w.Color(e, e, e),
|
|
210
244
|
roughness: 1,
|
|
211
245
|
metalness: 0,
|
|
212
|
-
side:
|
|
213
|
-
}), d = (
|
|
214
|
-
|
|
215
|
-
},
|
|
216
|
-
let
|
|
217
|
-
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
},
|
|
246
|
+
side: w.DoubleSide
|
|
247
|
+
}), d = (n) => {
|
|
248
|
+
o && n.applyMatrix4(o);
|
|
249
|
+
}, i = (n, x) => {
|
|
250
|
+
let u = n, s = x;
|
|
251
|
+
o && !x && (u = n.clone(), s = !0), d(u), u.computeVertexNormals(), s && m.push(u);
|
|
252
|
+
const f = new w.Mesh(u, l);
|
|
253
|
+
f.castShadow = !0, f.receiveShadow = !0, f.raycast = () => {
|
|
254
|
+
}, c.add(f);
|
|
221
255
|
};
|
|
222
|
-
for (const
|
|
223
|
-
|
|
224
|
-
for (const
|
|
225
|
-
n
|
|
256
|
+
for (const n of t.tiles ?? [])
|
|
257
|
+
i(Ot(n.data), !0);
|
|
258
|
+
for (const n of t.geometries ?? [])
|
|
259
|
+
i(n, !1);
|
|
226
260
|
return {
|
|
227
|
-
group:
|
|
228
|
-
configureMaterial: (
|
|
229
|
-
|
|
261
|
+
group: c,
|
|
262
|
+
configureMaterial: (n) => {
|
|
263
|
+
n.side = w.DoubleSide, n.transparent = !1, n.opacity = 1, "color" in n && n.color instanceof w.Color && n.color.setRGB(e, e, e), "roughness" in n && typeof n.roughness == "number" && (n.roughness = 1), "metalness" in n && typeof n.metalness == "number" && (n.metalness = 0);
|
|
230
264
|
},
|
|
231
265
|
dispose: () => {
|
|
232
|
-
|
|
233
|
-
for (const
|
|
234
|
-
|
|
266
|
+
l.dispose();
|
|
267
|
+
for (const n of m) n.dispose();
|
|
268
|
+
c.clear();
|
|
235
269
|
}
|
|
236
270
|
};
|
|
237
271
|
}
|
|
238
272
|
export {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
273
|
+
Ft as MAX_RELIGHTING_SHADOW_LIGHTS,
|
|
274
|
+
Ht as createRelightingProxy,
|
|
275
|
+
qt as createRelightingShadowFactorMaterial,
|
|
276
|
+
Wt as depthOfFieldPreset,
|
|
277
|
+
Bt as lightingPreset,
|
|
278
|
+
Gt as renderRelightingFactorMap,
|
|
279
|
+
$t as revealPreset,
|
|
280
|
+
Vt as sdfEffects,
|
|
281
|
+
jt as worldWarpPreset
|
|
248
282
|
};
|
|
249
283
|
//# sourceMappingURL=effects.js.map
|