material-designer-runtime 0.1.3 → 0.1.4
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/graph/bake-service.d.ts +4 -0
- package/dist/graph/channel-baker.d.ts +1 -0
- package/dist/graph/node-profiler.d.ts +25 -0
- package/dist/graph/textured-surface.d.ts +1 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.js +755 -604
- package/dist/tsl/shape.d.ts +4 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as e from "three";
|
|
2
2
|
import { NearestFilter as t, NoColorSpace as n, OrthographicCamera as r, RepeatWrapping as i, Scene as a } from "three";
|
|
3
3
|
import { MeshBasicNodeMaterial as o, MeshLambertNodeMaterial as s, MeshMatcapNodeMaterial as c, MeshPhongNodeMaterial as l, MeshPhysicalNodeMaterial as u, MeshStandardNodeMaterial as d, MeshToonNodeMaterial as f, QuadMesh as p, RenderTarget as m } from "three/webgpu";
|
|
4
|
-
import { Fn as h, abs as g, acos as _, asin as v, atan as y, attribute as b, bool as x, bumpMap as S, ceil as C, clamp as w, color as T, cos as E, cosh as D, cross as ee, dFdx as te, dFdy as ne, degrees as re, dot as O, exp as ie, exp2 as ae, float as k, floatBitsToUint as oe, floor as A, fract as j, fwidth as se, int as M, inverseSqrt as ce, length as
|
|
5
|
-
var
|
|
4
|
+
import { Fn as h, abs as g, acos as _, asin as v, atan as y, attribute as b, bool as x, bumpMap as S, ceil as C, clamp as w, color as T, cos as E, cosh as D, cross as ee, dFdx as te, dFdy as ne, degrees as re, dot as O, exp as ie, exp2 as ae, float as k, floatBitsToUint as oe, floor as A, fract as j, fwidth as se, int as M, inverseSqrt as ce, length as N, log as le, luminance as ue, max as P, min as F, mix as I, mod as L, mx_noise_float as R, normalLocal as de, normalMap as fe, normalWorld as pe, normalize as me, parallaxDirection as he, positionLocal as ge, positionWorld as _e, pow as z, radians as ve, reflect as ye, round as be, sRGBTransferOETF as xe, saturate as Se, select as B, sign as Ce, sin as V, sinh as we, smoothstep as H, sqrt as Te, step as Ee, tan as De, tanh as Oe, texture as U, trunc as ke, uint as W, uniform as Ae, uniformArray as je, uv as G, vec2 as K, vec3 as q, vec4 as Me } from "three/tsl";
|
|
5
|
+
var Ne = {
|
|
6
6
|
version: 3,
|
|
7
7
|
nodes: [{
|
|
8
8
|
id: "pr",
|
|
@@ -29,20 +29,20 @@ var Pe = {
|
|
|
29
29
|
toNode: "out",
|
|
30
30
|
toInput: "surface"
|
|
31
31
|
}]
|
|
32
|
-
},
|
|
32
|
+
}, Pe = [
|
|
33
33
|
0,
|
|
34
34
|
.25,
|
|
35
35
|
.5,
|
|
36
36
|
.75,
|
|
37
37
|
1
|
|
38
|
-
],
|
|
38
|
+
], Fe = [
|
|
39
39
|
"C",
|
|
40
40
|
"R",
|
|
41
41
|
"G",
|
|
42
42
|
"B"
|
|
43
43
|
];
|
|
44
|
-
function
|
|
45
|
-
let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ??
|
|
44
|
+
function Ie(e) {
|
|
45
|
+
let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ?? Pe[n]);
|
|
46
46
|
return [
|
|
47
47
|
...t(e?.C),
|
|
48
48
|
...t(e?.R),
|
|
@@ -50,14 +50,14 @@ function Le(e) {
|
|
|
50
50
|
...t(e?.B)
|
|
51
51
|
];
|
|
52
52
|
}
|
|
53
|
-
var
|
|
53
|
+
var Le = [
|
|
54
54
|
"standard",
|
|
55
55
|
"physical",
|
|
56
56
|
"lambert",
|
|
57
57
|
"toon",
|
|
58
58
|
"phong",
|
|
59
59
|
"matcap"
|
|
60
|
-
],
|
|
60
|
+
], Re = {
|
|
61
61
|
standard: {
|
|
62
62
|
roughMetal: !0,
|
|
63
63
|
physicalLobes: !1,
|
|
@@ -95,10 +95,10 @@ var Re = [
|
|
|
95
95
|
emissive: !1
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
function
|
|
99
|
-
return
|
|
98
|
+
function ze(e) {
|
|
99
|
+
return Le.includes(e) ? e : "physical";
|
|
100
100
|
}
|
|
101
|
-
var
|
|
101
|
+
var Be = "group", Ve = "group-input", He = "group-output", Ue = "material-output", We = "shader-material", Ge = [
|
|
102
102
|
"baseColor",
|
|
103
103
|
"normal",
|
|
104
104
|
"emission",
|
|
@@ -130,13 +130,13 @@ function qe(e, t) {
|
|
|
130
130
|
//#region src/tsl/blender-noise.ts
|
|
131
131
|
var Je = (e, t) => e.shiftLeft(t).bitOr(e.shiftRight(32 - t));
|
|
132
132
|
function Ye(e, t, n) {
|
|
133
|
-
let r = 3735928584, i =
|
|
133
|
+
let r = 3735928584, i = W(r).toVar(), a = W(r).toVar(), o = W(r).toVar();
|
|
134
134
|
return o.assign(o.add(n)), a.assign(a.add(t)), i.assign(i.add(e)), o.assign(o.bitXor(a)), o.assign(o.sub(Je(a, 14))), i.assign(i.bitXor(o)), i.assign(i.sub(Je(o, 11))), a.assign(a.bitXor(i)), a.assign(a.sub(Je(i, 25))), o.assign(o.bitXor(a)), o.assign(o.sub(Je(a, 16))), i.assign(i.bitXor(o)), i.assign(i.sub(Je(o, 4))), a.assign(a.bitXor(i)), a.assign(a.sub(Je(i, 14))), o.assign(o.bitXor(a)), o.assign(o.sub(Je(a, 24))), o;
|
|
135
135
|
}
|
|
136
|
-
var Xe = (e, t, n) => Ye(
|
|
136
|
+
var Xe = (e, t, n) => Ye(W(e), W(t), W(n)), Ze = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), Qe = (e, t) => B(t.notEqual(W(0)), e.negate(), e);
|
|
137
137
|
function $e(e, t, n, r) {
|
|
138
|
-
let i = e.bitAnd(
|
|
139
|
-
return Qe(a, i.bitAnd(
|
|
138
|
+
let i = e.bitAnd(W(15)).toVar(), a = B(i.lessThan(W(8)), t, n), o = B(i.equal(W(12)).or(i.equal(W(14))), t, r), s = B(i.lessThan(W(4)), n, o);
|
|
139
|
+
return Qe(a, i.bitAnd(W(1))).add(Qe(s, i.bitAnd(W(2))));
|
|
140
140
|
}
|
|
141
141
|
function et(e, t, n, r) {
|
|
142
142
|
let i = k(1).sub(t), a = k(1).sub(n);
|
|
@@ -249,40 +249,40 @@ var it = {
|
|
|
249
249
|
default: 1
|
|
250
250
|
}],
|
|
251
251
|
build(e) {
|
|
252
|
-
let t = e.inputs.coord ?? e.coord, n = t.div(e.live("scale")), r =
|
|
253
|
-
return { coord: t.add(
|
|
252
|
+
let t = e.inputs.coord ?? e.coord, n = t.div(e.live("scale")), r = R(n.add(q(11.3, 0, 0))), i = R(n.add(q(0, 47.7, 0))), a = R(n.add(q(0, 0, 93.1)));
|
|
253
|
+
return { coord: t.add(q(r, i, a).mul(e.live("amount"))) };
|
|
254
254
|
}
|
|
255
|
-
}, ot = (e) =>
|
|
256
|
-
let n = A(e.xyxy).add(
|
|
255
|
+
}, ot = (e) => L(e.mul(34).add(1).mul(e), 289), st = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), ct = h(([e, t]) => {
|
|
256
|
+
let n = A(e.xyxy).add(Me(0, 0, 1, 1)), r = j(e.xyxy).sub(Me(0, 0, 1, 1)), i = L(L(n, t.xyxy), 289), a = i.xzxz, o = i.yyww, s = r.xzxz, c = r.yyww, l = j(ot(ot(a).add(o)).mul(.0243902439)).mul(2).sub(1), u = g(l).sub(.5), d = l.sub(A(l.add(.5))), f = K(d.x, u.x), p = K(d.y, u.y), m = K(d.z, u.z), h = K(d.w, u.w), _ = k(1.79284291400159).sub(k(.85373472095314).mul(Me(O(f, f), O(m, m), O(p, p), O(h, h))));
|
|
257
257
|
f = f.mul(_.x), m = m.mul(_.y), p = p.mul(_.z), h = h.mul(_.w);
|
|
258
|
-
let v = O(f,
|
|
259
|
-
return
|
|
258
|
+
let v = O(f, K(s.x, c.x)), y = O(p, K(s.y, c.y)), b = O(m, K(s.z, c.z)), x = O(h, K(s.w, c.w)), S = st(r.xy), C = I(K(v, b), K(y, x), S.x);
|
|
259
|
+
return I(C.x, C.y, S.y).mul(2.3);
|
|
260
260
|
});
|
|
261
261
|
function lt(e, t, n, r, i, a, o = 2) {
|
|
262
262
|
let s = typeof t == "number" ? k(Math.max(1, Math.round(t))) : t, c = typeof n == "number" ? k(Math.max(1, Math.round(n))) : n, l = se(e), u = k(0), d = k(0), f = k(1), p = Math.max(2, Math.round(o));
|
|
263
263
|
for (let t = 0; t < Math.max(1, r); t++) {
|
|
264
|
-
let n = Math.round(p ** +t), r =
|
|
264
|
+
let n = Math.round(p ** +t), r = K(s.mul(n), c.mul(n)), o = f;
|
|
265
265
|
if (a !== void 0) {
|
|
266
|
-
let e =
|
|
267
|
-
o = f.mul(
|
|
266
|
+
let e = P(r.x.mul(l.x), r.y.mul(l.y)), t = w(k(1).sub(H(.2, .5, e)), 0, 1);
|
|
267
|
+
o = f.mul(I(k(1), t, a));
|
|
268
268
|
}
|
|
269
269
|
u = u.add(o.mul(ct(e.mul(r), r))), d = d.add(o), f = f.mul(i);
|
|
270
270
|
}
|
|
271
|
-
return
|
|
271
|
+
return I(k(0), u.div(d.max(1e-4)), F(d, 1));
|
|
272
272
|
}
|
|
273
273
|
//#endregion
|
|
274
274
|
//#region src/tsl/noise/fbm.ts
|
|
275
275
|
function ut(e, t, n, r, i, a, o, s = 2) {
|
|
276
276
|
let c = typeof t == "number" ? k(Math.max(1, Math.round(t))) : t, l = typeof n == "number" ? k(Math.max(1, Math.round(n))) : n, u = se(e), d = k(0), f = k(0), p = k(1), m = Math.max(2, Math.round(s));
|
|
277
277
|
for (let t = 0; t < Math.max(1, r); t++) {
|
|
278
|
-
let n = Math.round(m ** +t), r = c.mul(n), s = l.mul(n), h = e.mul(
|
|
278
|
+
let n = Math.round(m ** +t), r = c.mul(n), s = l.mul(n), h = e.mul(K(r, s)), g = p;
|
|
279
279
|
if (o !== void 0) {
|
|
280
|
-
let e =
|
|
281
|
-
g = p.mul(
|
|
280
|
+
let e = P(r.mul(u.x), s.mul(u.y)), t = w(k(1).sub(H(.2, .5, e)), 0, 1);
|
|
281
|
+
g = p.mul(I(k(1), t, o));
|
|
282
282
|
}
|
|
283
283
|
d = d.add(g.mul(a(h, r, s))), f = f.add(g), p = p.mul(i);
|
|
284
284
|
}
|
|
285
|
-
return
|
|
285
|
+
return I(k(.5), d.div(f.max(1e-4)), F(f, 1));
|
|
286
286
|
}
|
|
287
287
|
//#endregion
|
|
288
288
|
//#region src/tsl/noise/hash.ts
|
|
@@ -290,7 +290,7 @@ var dt = 1 / 2147483648, ft = h(([e, t, n]) => {
|
|
|
290
290
|
let r = e.mul(1664525).add(1013904223).toVar(), i = t.mul(1664525).add(1013904223).toVar(), a = n.mul(1664525).add(1013904223).toVar();
|
|
291
291
|
r.assign(r.add(i.mul(a))), i.assign(i.add(a.mul(r))), a.assign(a.add(r.mul(i))), r.assign(r.bitXor(r.shiftRight(16))), i.assign(i.bitXor(i.shiftRight(16))), a.assign(a.bitXor(a.shiftRight(16))), r.assign(r.add(i.mul(a))), i.assign(i.add(a.mul(r))), a.assign(a.add(r.mul(i)));
|
|
292
292
|
let o = M(2147483647);
|
|
293
|
-
return
|
|
293
|
+
return q(k(r.bitAnd(o)).mul(dt), k(i.bitAnd(o)).mul(dt), k(a.bitAnd(o)).mul(dt));
|
|
294
294
|
});
|
|
295
295
|
function pt(e, t) {
|
|
296
296
|
return typeof t == "number" && t <= 0 ? e : e.sub(M(A(k(e).div(t))).mul(M(t)));
|
|
@@ -308,43 +308,43 @@ function J(e, t, n, r, i) {
|
|
|
308
308
|
//#region src/tsl/noise/value.ts
|
|
309
309
|
function gt(e, t, n) {
|
|
310
310
|
let r = A(e), i = e.sub(r), a = i.mul(i).mul(k(3).sub(i.mul(2))), o = M(r.x), s = M(r.y), c = mt(o, s, t, n), l = mt(o.add(1), s, t, n), u = mt(o, s.add(1), t, n), d = mt(o.add(1), s.add(1), t, n);
|
|
311
|
-
return
|
|
311
|
+
return I(I(c, l, a.x), I(u, d, a.x), a.y);
|
|
312
312
|
}
|
|
313
313
|
//#endregion
|
|
314
314
|
//#region src/tsl/noise/cellular.ts
|
|
315
315
|
var _t = 2;
|
|
316
316
|
function vt(e, t, n) {
|
|
317
|
-
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s =
|
|
317
|
+
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = q(i.x, i.y, k(0)), c = k(1e10);
|
|
318
318
|
for (let e = -1; e <= 1; e++) for (let r = -1; r <= 1; r++) {
|
|
319
|
-
let i = ht(a.add(e), o.add(r), t, n), l =
|
|
320
|
-
c =
|
|
319
|
+
let i = ht(a.add(e), o.add(r), t, n), l = q(k(e).add(i.x), k(r).add(i.y), i.z);
|
|
320
|
+
c = F(c, N(l.sub(s)));
|
|
321
321
|
}
|
|
322
322
|
return w(k(1).sub(c), 0, 1);
|
|
323
323
|
}
|
|
324
324
|
function yt(e, t, n) {
|
|
325
325
|
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = k(0), c = k(0);
|
|
326
326
|
for (let e = -1; e <= 1; e++) for (let r = -1; r <= 1; r++) {
|
|
327
|
-
let l = ht(a.add(e), o.add(r), t, n), u =
|
|
327
|
+
let l = ht(a.add(e), o.add(r), t, n), u = z(H(1.414, 0, N(K(e, r).sub(i).add(K(l.x, l.y)))), _t);
|
|
328
328
|
s = s.add(l.z.mul(u)), c = c.add(u);
|
|
329
329
|
}
|
|
330
330
|
return s.div(c.max(1e-4));
|
|
331
331
|
}
|
|
332
332
|
//#endregion
|
|
333
333
|
//#region src/tsl/noise/flow.ts
|
|
334
|
-
var bt = (e, t) => ct(e,
|
|
335
|
-
let n = k(.1), r = bt(e.add(
|
|
336
|
-
return
|
|
334
|
+
var bt = (e, t) => ct(e, K(t, t)), xt = h(([e, t]) => {
|
|
335
|
+
let n = k(.1), r = bt(e.add(K(n, 0)), t), i = bt(e.add(K(0, n)), t), a = bt(e.sub(K(n, 0)), t), o = bt(e.sub(K(0, n)), t);
|
|
336
|
+
return K(r.sub(a), i.sub(o)).div(n).mul(.5);
|
|
337
337
|
});
|
|
338
338
|
function St(e, t, n) {
|
|
339
339
|
let r = xt(e, t);
|
|
340
|
-
return
|
|
340
|
+
return q(r.x, r.y, k(0));
|
|
341
341
|
}
|
|
342
342
|
function Ct(e, t, n) {
|
|
343
343
|
return w(xt(e, t).length().mul(.6).add(.2), 0, 1);
|
|
344
344
|
}
|
|
345
345
|
function wt(e, t, n) {
|
|
346
346
|
let r = xt(e, t);
|
|
347
|
-
return w(
|
|
347
|
+
return w(P(g(r.x), g(r.y)), 0, 1);
|
|
348
348
|
}
|
|
349
349
|
function Tt(e, t, n) {
|
|
350
350
|
let r = xt(e, t).mul(.4);
|
|
@@ -355,10 +355,10 @@ function Tt(e, t, n) {
|
|
|
355
355
|
var Et = 6.283185307179586, Dt = Math.PI, Ot = 8, kt = h(([e, t, n, r, i]) => {
|
|
356
356
|
let a = e.mul(t), o = A(a), s = a.sub(o), c = k(0).toVar();
|
|
357
357
|
for (let e = -1; e <= 1; e++) for (let a = -1; a <= 1; a++) {
|
|
358
|
-
let l = M(o.x).add(a), u = M(o.y).add(e), d = s.sub(
|
|
358
|
+
let l = M(o.x).add(a), u = M(o.y).add(e), d = s.sub(K(a, e));
|
|
359
359
|
for (let e = 0; e < Ot; e++) {
|
|
360
|
-
let a = J(l, u, e * 2, t, t), o = J(l, u, e * 2 + 1, t, t), s = i.add(o.x.sub(.5).mul(Dt).mul(r)), f = d.sub(
|
|
361
|
-
c.addAssign(
|
|
360
|
+
let a = J(l, u, e * 2, t, t), o = J(l, u, e * 2 + 1, t, t), s = i.add(o.x.sub(.5).mul(Dt).mul(r)), f = d.sub(K(a.x, a.y)), p = O(f, f), m = ie(p.mul(-Dt)).mul(k(.5).add(E(p.mul(Dt)).mul(.5))), h = O(f, K(E(s), V(s)).mul(n)).mul(Et), g = I(k(-1), k(1), Ee(.5, a.z)), _ = k(1).sub(Ee(1, p));
|
|
361
|
+
c.addAssign(V(h).mul(m).mul(g).mul(_));
|
|
362
362
|
}
|
|
363
363
|
}
|
|
364
364
|
return c.div(6).mul(.5).add(.5);
|
|
@@ -366,22 +366,22 @@ var Et = 6.283185307179586, Dt = Math.PI, Ot = 8, kt = h(([e, t, n, r, i]) => {
|
|
|
366
366
|
//#endregion
|
|
367
367
|
//#region src/tsl/noise/simplex.ts
|
|
368
368
|
function At(e, t, n) {
|
|
369
|
-
let r =
|
|
370
|
-
v =
|
|
371
|
-
let y = v.mul(.07482), b = E(y), x =
|
|
372
|
-
return w(O(ee.mul(ee),
|
|
369
|
+
let r = K(e.x.add(e.y.mul(.5)), e.y), i = A(r), a = r.sub(i), o = Ee(a.y, a.x), s = K(o, k(1).sub(o)), c = K(i.x.sub(i.y.mul(.5)), i.y), l = K(c.x.add(s.x).sub(s.y.mul(.5)), c.y.add(s.y)), u = K(c.x.add(.5), c.y.add(1)), d = e.sub(c), f = e.sub(l), p = e.sub(u), m = L(q(c.x, l.x, u.x), k(t)), h = L(q(c.y, l.y, u.y), k(n)), g = A(m.add(h.mul(.5)).add(.5)), _ = A(h.add(.5)), v = L(g, 289);
|
|
370
|
+
v = L(v.mul(51).add(2).mul(v).add(_), 289), v = L(v.mul(34).add(10).mul(v), 289);
|
|
371
|
+
let y = v.mul(.07482), b = E(y), x = V(y), S = K(b.x, x.x), C = K(b.y, x.y), T = K(b.z, x.z), D = P(k(.8).sub(q(O(d, d), O(f, f), O(p, p))), 0), ee = D.mul(D);
|
|
372
|
+
return w(O(ee.mul(ee), q(O(S, d), O(C, f), O(T, p))).mul(10.9).mul(.5).add(.5), 0, 1);
|
|
373
373
|
}
|
|
374
374
|
//#endregion
|
|
375
375
|
//#region src/tsl/noise/wavelet.ts
|
|
376
376
|
var jt = 6.283185307179586;
|
|
377
377
|
function Mt(e, t, n) {
|
|
378
|
-
let r = A(e), i = j(e).sub(.5), a = mt(M(r.x), M(r.y), t, n).mul(jt), o = E(a), s =
|
|
379
|
-
return w(
|
|
378
|
+
let r = A(e), i = j(e).sub(.5), a = mt(M(r.x), M(r.y), t, n).mul(jt), o = E(a), s = V(a), c = o.mul(i.x).sub(s.mul(i.y)), l = s.mul(i.x).add(o.mul(i.y)), u = H(.25, 0, O(K(c, l), K(c, l)));
|
|
379
|
+
return w(V(c.mul(10)).mul(u).mul(.5).add(.5), 0, 1);
|
|
380
380
|
}
|
|
381
381
|
//#endregion
|
|
382
382
|
//#region src/tsl/noise/erosion.ts
|
|
383
383
|
function Nt(e, t, n) {
|
|
384
|
-
let r = xt(e, t), i = ct(e.add(r.mul(.6)),
|
|
384
|
+
let r = xt(e, t), i = ct(e.add(r.mul(.6)), K(t, t)).mul(.5).add(.5);
|
|
385
385
|
return w(k(1).sub(i.mul(2).sub(1).abs()), 0, 1);
|
|
386
386
|
}
|
|
387
387
|
//#endregion
|
|
@@ -587,7 +587,7 @@ var Pt = [
|
|
|
587
587
|
build(e) {
|
|
588
588
|
let t = e.inputs.coord ?? e.coord, n = Math.max(1, Math.round(Number.isFinite(Number(e.constant("octaves"))) ? Number(e.constant("octaves")) : 4)), r = e.constant("noiseType") ?? "perlin-fbm", i = e.constant("preset") ?? "none", a = r === "perlin-fbm" && i !== "none" ? i : r, o = e.live("gain"), s = e.live("scale");
|
|
589
589
|
if (e.backend === "live") return { field: rt(t.mul(s), n, o, e.live("lacunarity")) };
|
|
590
|
-
let c = Math.max(2, Math.round(Number.isFinite(Number(e.constant("lacunarity"))) ? Number(e.constant("lacunarity")) : 2)), l =
|
|
590
|
+
let c = Math.max(2, Math.round(Number.isFinite(Number(e.constant("lacunarity"))) ? Number(e.constant("lacunarity")) : 2)), l = K(t.x, t.y), u = e.live("antialias"), d = Math.max(1, Math.round(e.tileRepeat ?? 1)), f = P(A((d > 1 ? s.div(k(d)) : s).add(.5)), k(1)), p = e.live("aspect"), m = P(A(f.mul(p).add(.5)), k(1));
|
|
591
591
|
if (a === "curl") {
|
|
592
592
|
let e = St(l.mul(f), f, f);
|
|
593
593
|
return {
|
|
@@ -596,7 +596,7 @@ var Pt = [
|
|
|
596
596
|
};
|
|
597
597
|
}
|
|
598
598
|
if (a === "simplex") {
|
|
599
|
-
let e = f.add(
|
|
599
|
+
let e = f.add(L(f, k(2)));
|
|
600
600
|
return { field: ut(l, e, e, n, o, At, u, c) };
|
|
601
601
|
}
|
|
602
602
|
if (a === "gabor") {
|
|
@@ -608,25 +608,25 @@ var Pt = [
|
|
|
608
608
|
}
|
|
609
609
|
}, Vt = 4294967295;
|
|
610
610
|
function Ht(e) {
|
|
611
|
-
let t = oe(e.mul(
|
|
612
|
-
return k(t.x.bitXor(t.y).mul(
|
|
611
|
+
let t = oe(e.mul(K(141421356, 2718281828)));
|
|
612
|
+
return k(t.x.bitXor(t.y).mul(W(3141592653))).div(Vt);
|
|
613
613
|
}
|
|
614
614
|
function Ut(e) {
|
|
615
|
-
return j(k(52.9829189).mul(j(O(e,
|
|
615
|
+
return j(k(52.9829189).mul(j(O(e, K(.06711056, .00583715)))));
|
|
616
616
|
}
|
|
617
617
|
function Wt(e) {
|
|
618
|
-
let t =
|
|
619
|
-
return k(t.mul(
|
|
618
|
+
let t = W(e.x), n = W(e.y);
|
|
619
|
+
return k(t.mul(W(3242174889)).add(n.mul(W(2447445413)))).mul(ae(-32));
|
|
620
620
|
}
|
|
621
621
|
function Gt(e) {
|
|
622
622
|
let t = k(0);
|
|
623
|
-
for (let n = 0; n < 9; n++) t = t.add(Ht(e.add(
|
|
623
|
+
for (let n = 0; n < 9; n++) t = t.add(Ht(e.add(K(n % 3 - 1, Math.floor(n / 3) - 1))));
|
|
624
624
|
return k(.9).mul(k(1.125).mul(Ht(e)).sub(t.div(8))).add(.5);
|
|
625
625
|
}
|
|
626
626
|
var Kt = h(([e, t]) => {
|
|
627
627
|
let n = e.toVar(), r = t.toVar(), i = M(0).toVar();
|
|
628
628
|
for (let e = 256; e > 0; e >>= 1) {
|
|
629
|
-
let t = M(e), a =
|
|
629
|
+
let t = M(e), a = B(n.bitAnd(t).notEqual(M(0)), M(1), M(0)), o = B(r.bitAnd(t).notEqual(M(0)), M(1), M(0));
|
|
630
630
|
i.assign(i.add(t.mul(t).mul(a.shiftLeft(1).bitOr(a.bitXor(o)))));
|
|
631
631
|
let s = n.bitXor(r).mul(M(1).sub(o)).bitXor(M(e - 1).mul(a.bitAnd(M(1).sub(o))));
|
|
632
632
|
n.assign(n.bitXor(s)), r.assign(r.bitXor(s));
|
|
@@ -639,15 +639,15 @@ function qt(e) {
|
|
|
639
639
|
}
|
|
640
640
|
var Jt = h(([e, t]) => {
|
|
641
641
|
let n = A(e).toVar(), r = e.sub(n);
|
|
642
|
-
n.x.assign(A(
|
|
642
|
+
n.x.assign(A(V(n.x.mul(51024)).mul(3104))), n.y.assign(A(V(n.y.mul(1324)).mul(554)));
|
|
643
643
|
let i = n.x.add(n.y);
|
|
644
|
-
r = r.mul(2).sub(1), r = r.mul(E(i)).add(
|
|
645
|
-
let a =
|
|
646
|
-
return o = k(.5).sub(o.mul(t)), o =
|
|
644
|
+
r = r.mul(2).sub(1), r = r.mul(E(i)).add(K(r.y.negate(), r.x).mul(V(i))), r = r.add(V(n.x.sub(n.y))), r = r.mul(.5).add(.5);
|
|
645
|
+
let a = V(n.x.add(r.y.mul(3.1415))).add(V(n.y.add(r.y.mul(3.1415)))).mul(.2), o = g(r.x.sub(.5).add(a));
|
|
646
|
+
return o = k(.5).sub(o.mul(t)), o = H(-2, se(o).mul(1.5).add(16), o).mul(12), o.mul(r.y);
|
|
647
647
|
});
|
|
648
648
|
function Yt(e, t) {
|
|
649
649
|
let n = e, r = t, i = k(0);
|
|
650
|
-
for (let e = 0; e < 8; e++) i =
|
|
650
|
+
for (let e = 0; e < 8; e++) i = P(i, Jt(n, r)), n = K(n.x.sub(n.y.mul(.7)), n.x.mul(.7).add(n.y)).sub(12.31);
|
|
651
651
|
return i;
|
|
652
652
|
}
|
|
653
653
|
var Xt = {
|
|
@@ -684,7 +684,7 @@ var Xt = {
|
|
|
684
684
|
default: 512
|
|
685
685
|
}],
|
|
686
686
|
build(e) {
|
|
687
|
-
let t = e.inputs.coord ?? e.coord, n =
|
|
687
|
+
let t = e.inputs.coord ?? e.coord, n = K(t.x, t.y), r = e.constant("noiseType") ?? "blue";
|
|
688
688
|
if (r === "scratches") return { field: Yt(n.mul(5), k(3)) };
|
|
689
689
|
let i = n.mul(e.live("resolution"));
|
|
690
690
|
switch (r) {
|
|
@@ -717,27 +717,27 @@ var Xt = {
|
|
|
717
717
|
}, {
|
|
718
718
|
key: "scale",
|
|
719
719
|
label: "scale",
|
|
720
|
-
type: "
|
|
720
|
+
type: "float",
|
|
721
721
|
min: 1,
|
|
722
722
|
max: 64,
|
|
723
723
|
step: 1,
|
|
724
724
|
default: 4
|
|
725
725
|
}],
|
|
726
726
|
build(e) {
|
|
727
|
-
let t = e.inputs.coord ?? e.coord, n = e.live("amount");
|
|
727
|
+
let t = e.inputs.coord ?? e.coord, n = e.live("amount"), r = e.live("scale").round().clamp(1, 64);
|
|
728
728
|
if (e.backend === "live") {
|
|
729
|
-
let
|
|
730
|
-
return { coord: t.add(
|
|
729
|
+
let e = t.div(r), i = R(e.add(q(11.3, 0, 0))), a = R(e.add(q(0, 47.7, 0))), o = R(e.add(q(0, 0, 93.1)));
|
|
730
|
+
return { coord: t.add(q(i, a, o).mul(n)) };
|
|
731
731
|
}
|
|
732
|
-
let
|
|
733
|
-
return { coord:
|
|
732
|
+
let i = K(t.x, t.y), a = K(r, r), o = ct(i.mul(r), a), s = ct(i.mul(r).add(K(5.2, 1.3)), a), c = i.add(K(o, s).mul(n));
|
|
733
|
+
return { coord: q(c.x, c.y, t.z) };
|
|
734
734
|
}
|
|
735
735
|
}, Qt = 1 / 2147483648;
|
|
736
736
|
function $t(e, t, n) {
|
|
737
737
|
let r = e.mul(1664525).add(1013904223).toVar(), i = t.mul(1664525).add(1013904223).toVar(), a = n.mul(1664525).add(1013904223).toVar();
|
|
738
738
|
r.assign(r.add(i.mul(a))), i.assign(i.add(a.mul(r))), a.assign(a.add(r.mul(i))), r.assign(r.bitXor(r.shiftRight(16))), i.assign(i.bitXor(i.shiftRight(16))), a.assign(a.bitXor(a.shiftRight(16))), r.assign(r.add(i.mul(a))), i.assign(i.add(a.mul(r))), a.assign(a.add(r.mul(i)));
|
|
739
739
|
let o = M(2147483647);
|
|
740
|
-
return
|
|
740
|
+
return q(k(r.bitAnd(o)).mul(Qt), k(i.bitAnd(o)).mul(Qt), k(a.bitAnd(o)).mul(Qt));
|
|
741
741
|
}
|
|
742
742
|
function en(e, t) {
|
|
743
743
|
return e.sub(M(A(k(e).div(t))).mul(M(t)));
|
|
@@ -751,15 +751,15 @@ function nn(e, t, n, r) {
|
|
|
751
751
|
if (n === 2) return i.x.max(i.y.max(i.z));
|
|
752
752
|
if (n === 3) {
|
|
753
753
|
let e = r;
|
|
754
|
-
return
|
|
754
|
+
return z(z(i.x, e).add(z(i.y, e)).add(z(i.z, e)), k(1).div(e));
|
|
755
755
|
}
|
|
756
756
|
return e.sub(t).length();
|
|
757
757
|
}
|
|
758
758
|
function rn(e, t, n, r, i, a) {
|
|
759
759
|
return h(() => {
|
|
760
|
-
let o = A(e), s = e.sub(o), c = M(o.x), l = M(o.y), u = M(o.z), d = k(1e10).toVar(), f =
|
|
760
|
+
let o = A(e), s = e.sub(o), c = M(o.x), l = M(o.y), u = M(o.z), d = k(1e10).toVar(), f = q(0, 0, 0).toVar(), p = q(0, 0, 0).toVar();
|
|
761
761
|
for (let e = -1; e <= 1; e++) for (let i = -1; i <= 1; i++) for (let o = -1; o <= 1; o++) {
|
|
762
|
-
let m =
|
|
762
|
+
let m = q(o, i, e), h = m.add(tn(c.add(o), l.add(i), u.add(e), a).mul(t)), g = nn(h, s, n, r), _ = g.lessThan(d);
|
|
763
763
|
d.assign(_.select(g, d)), f.assign(_.select(m, f)), p.assign(_.select(h, p));
|
|
764
764
|
}
|
|
765
765
|
return i === "color" ? tn(c.add(M(f.x)), l.add(M(f.y)), u.add(M(f.z)), a) : i === "position" ? p.add(o) : d;
|
|
@@ -767,9 +767,9 @@ function rn(e, t, n, r, i, a) {
|
|
|
767
767
|
}
|
|
768
768
|
function an(e, t, n, r, i, a) {
|
|
769
769
|
return h(() => {
|
|
770
|
-
let o = A(e), s = e.sub(o), c = M(o.x), l = M(o.y), u = M(o.z), d = k(1e10).toVar(), f = k(1e10).toVar(), p =
|
|
770
|
+
let o = A(e), s = e.sub(o), c = M(o.x), l = M(o.y), u = M(o.z), d = k(1e10).toVar(), f = k(1e10).toVar(), p = q(0, 0, 0).toVar(), m = q(0, 0, 0).toVar(), h = q(0, 0, 0).toVar(), g = q(0, 0, 0).toVar();
|
|
771
771
|
for (let e = -1; e <= 1; e++) for (let i = -1; i <= 1; i++) for (let o = -1; o <= 1; o++) {
|
|
772
|
-
let _ =
|
|
772
|
+
let _ = q(o, i, e), v = _.add(tn(c.add(o), l.add(i), u.add(e), a).mul(t)), y = nn(v, s, n, r), b = y.lessThan(d).toVar(), x = y.lessThan(f).toVar(), S = B(b, d, B(x, y, f)), C = B(b, p, B(x, _, m)), w = B(b, h, B(x, v, g)), T = B(b, y, d), E = B(b, _, p), D = B(b, v, h);
|
|
773
773
|
f.assign(S), m.assign(C), g.assign(w), d.assign(T), p.assign(E), h.assign(D);
|
|
774
774
|
}
|
|
775
775
|
return i === "color" ? tn(c.add(M(m.x)), l.add(M(m.y)), u.add(M(m.z)), a) : i === "position" ? g.add(o) : f;
|
|
@@ -778,12 +778,12 @@ function an(e, t, n, r, i, a) {
|
|
|
778
778
|
var on = 1;
|
|
779
779
|
function sn(e, t, n, r, i, a, o) {
|
|
780
780
|
return h(() => {
|
|
781
|
-
let s = A(e), c = e.sub(s), l = M(s.x), u = M(s.y), d = M(s.z), f =
|
|
781
|
+
let s = A(e), c = e.sub(s), l = M(s.x), u = M(s.y), d = M(s.z), f = P(i, k(1e-6)), p = k(0).toVar(), m = q(0, 0, 0).toVar(), h = q(0, 0, 0).toVar(), g = k(-1).toVar();
|
|
782
782
|
for (let e = -1; e <= on; e++) for (let i = -1; i <= on; i++) for (let a = -1; a <= on; a++) {
|
|
783
|
-
let s =
|
|
784
|
-
g.assign(
|
|
783
|
+
let s = q(a, i, e), _ = tn(l.add(a), u.add(i), d.add(e), o), v = s.add(_.mul(t)), y = nn(v, c, n, r);
|
|
784
|
+
g.assign(B(g.equal(-1), k(1), H(0, 1, k(.5).add(p.sub(y).mul(.5).div(f)))));
|
|
785
785
|
let b = f.mul(g).mul(k(1).sub(g)).toVar();
|
|
786
|
-
p.assign(
|
|
786
|
+
p.assign(I(p, y, g).sub(b)), b.assign(b.div(k(1).add(f.mul(3)))), m.assign(I(m, _, g).sub(b)), h.assign(I(h, v, g).sub(b));
|
|
787
787
|
}
|
|
788
788
|
return a === "color" ? m : a === "position" ? h.add(s) : p;
|
|
789
789
|
})();
|
|
@@ -791,7 +791,7 @@ function sn(e, t, n, r, i, a, o) {
|
|
|
791
791
|
var cn = (e, t, n, r, i = 0) => rn(e, t, n, r, "distance", i), ln = (e, t, n, r, i = 0) => rn(e, t, n, r, "color", i), un = (e, t, n, r, i = 0) => rn(e, t, n, r, "position", i), dn = (e, t, n, r, i = 0) => an(e, t, n, r, "distance", i), fn = (e, t, n, r, i = 0) => an(e, t, n, r, "color", i), pn = (e, t, n, r, i = 0) => an(e, t, n, r, "position", i), mn = (e, t, n, r, i, a = 0) => sn(e, t, n, r, i, "distance", a), hn = (e, t, n, r, i, a = 0) => sn(e, t, n, r, i, "color", a), gn = (e, t, n, r, i, a = 0) => sn(e, t, n, r, i, "position", a);
|
|
792
792
|
function _n(e, t, n = 0) {
|
|
793
793
|
return h(() => {
|
|
794
|
-
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = M(r.z), c = (e, r, c) =>
|
|
794
|
+
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = M(r.z), c = (e, r, c) => q(e, r, c).add(tn(a.add(e), o.add(r), s.add(c), n).mul(t)).sub(i), l = q(0, 0, 0).toVar(), u = k(1e10).toVar();
|
|
795
795
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) for (let n = -1; n <= 1; n++) {
|
|
796
796
|
let r = c(n, t, e), i = r.dot(r), a = i.lessThan(u);
|
|
797
797
|
u.assign(a.select(i, u)), l.assign(a.select(r, l));
|
|
@@ -849,7 +849,7 @@ function bn(e, t, n, r = 0) {
|
|
|
849
849
|
//#region src/tsl/relaxed-voronoi.ts
|
|
850
850
|
function xn(e, t) {
|
|
851
851
|
return h(() => {
|
|
852
|
-
let n = A(e), r = e.sub(n), i = M(n.x), a = M(n.y), o = (e, n) =>
|
|
852
|
+
let n = A(e), r = e.sub(n), i = M(n.x), a = M(n.y), o = (e, n) => q(e, n, 0).add(t(i.add(e), a.add(n))).sub(r), s = q(0, 0, 0).toVar(), c = k(1e10).toVar();
|
|
853
853
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
854
854
|
let n = o(t, e), r = n.dot(n), i = r.lessThan(c);
|
|
855
855
|
c.assign(i.select(r, c)), s.assign(i.select(n, s));
|
|
@@ -864,7 +864,7 @@ function xn(e, t) {
|
|
|
864
864
|
}
|
|
865
865
|
function Sn(e, t, n) {
|
|
866
866
|
return h(() => {
|
|
867
|
-
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = (e, n) =>
|
|
867
|
+
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = (e, n) => q(e, n, 0).add(t(a.add(e), o.add(n))).sub(i), c = k(1e10).toVar(), l = M(0).toVar(), u = M(0).toVar();
|
|
868
868
|
for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
|
|
869
869
|
let n = s(t, e), r = n.dot(n), i = r.lessThan(c);
|
|
870
870
|
c.assign(i.select(r, c)), l.assign(i.select(a.add(t), l)), u.assign(i.select(o.add(e), u));
|
|
@@ -940,7 +940,7 @@ var kn = {
|
|
|
940
940
|
label: "scale",
|
|
941
941
|
type: "float",
|
|
942
942
|
min: .1,
|
|
943
|
-
max:
|
|
943
|
+
max: 512,
|
|
944
944
|
step: .05,
|
|
945
945
|
default: 1
|
|
946
946
|
},
|
|
@@ -1027,20 +1027,22 @@ var kn = {
|
|
|
1027
1027
|
build(e) {
|
|
1028
1028
|
let t = e.backend === "offline", n = Math.max(0, Cn.indexOf(e.constant("metric"))), r = e.constant("feature") ?? "f1", i = e.inputs.coord ?? e.coord, a = Math.max(0, Math.round(Number(e.constant("relax") ?? 0)));
|
|
1029
1029
|
if (r === "distance-to-edge" && t && a > 0) {
|
|
1030
|
-
let t = Math.max(1, Math.round(Number(e.constant("scale") ?? 1))), n =
|
|
1030
|
+
let t = Math.max(1, Math.round(Number(e.constant("scale") ?? 1))), n = Math.min(64, t);
|
|
1031
|
+
t > 64 && console.warn(`[voronoi] relaxed cells capped at scale 64 (requested ${t} exceeds the uniform-buffer limit); set relax = 0 for finer faithful cells.`);
|
|
1032
|
+
let r = Number(e.constant("randomness") ?? 1), o = i.mul(n), s = e.constantArray("seeds", () => bn(n, r, a), "vec3"), c = (e) => e.sub(M(A(k(e).div(n))).mul(M(n))), l = (e, t) => s.element(c(t).mul(n).add(c(e))), u = e.constantArray("randoms", () => On(n * n), "float"), d = (e, t) => u.element(c(t).mul(n).add(c(e))), f = e.live("edgeWidth"), p = xn(o, l);
|
|
1031
1033
|
return {
|
|
1032
|
-
distance:
|
|
1033
|
-
edges:
|
|
1034
|
-
random: Sn(
|
|
1034
|
+
distance: p,
|
|
1035
|
+
edges: H(k(0), f, p).oneMinus(),
|
|
1036
|
+
random: Sn(o, l, d)
|
|
1035
1037
|
};
|
|
1036
1038
|
}
|
|
1037
|
-
let o = e.live("randomness"), s = e.live("exponent"), c = e.live("smoothness"), l = e.live("edgeWidth"), u = e.live("scale"), d =
|
|
1039
|
+
let o = e.live("randomness"), s = e.live("exponent"), c = e.live("smoothness"), l = e.live("edgeWidth"), u = e.live("scale"), d = P(A(u.add(.5)), k(1)), f = i.mul(t ? d : u), p = t ? d : 0;
|
|
1038
1040
|
switch (r) {
|
|
1039
1041
|
case "distance-to-edge": {
|
|
1040
1042
|
let e = _n(f, o, p);
|
|
1041
1043
|
return {
|
|
1042
1044
|
distance: e,
|
|
1043
|
-
edges:
|
|
1045
|
+
edges: H(k(0), l, e).oneMinus(),
|
|
1044
1046
|
random: ln(f, o, n, s, p).x
|
|
1045
1047
|
};
|
|
1046
1048
|
}
|
|
@@ -1113,56 +1115,56 @@ var kn = {
|
|
|
1113
1115
|
}
|
|
1114
1116
|
],
|
|
1115
1117
|
build(e) {
|
|
1116
|
-
let t = (e.inputs.coord ?? e.coord).mul(e.live("scale")), n =
|
|
1118
|
+
let t = (e.inputs.coord ?? e.coord).mul(e.live("scale")), n = L(A(t.x).add(A(t.y)).add(A(t.z)), 2).lessThan(1);
|
|
1117
1119
|
return {
|
|
1118
|
-
color:
|
|
1119
|
-
fac:
|
|
1120
|
+
color: B(n, e.inputs.color1 ?? e.live("color1"), e.inputs.color2 ?? e.live("color2")),
|
|
1121
|
+
fac: B(n, k(1), k(0))
|
|
1120
1122
|
};
|
|
1121
1123
|
}
|
|
1122
1124
|
}, jn = 6.283185307179586;
|
|
1123
1125
|
function Mn(e, t, n) {
|
|
1124
|
-
let { columns: r, rows: i, offsetFreq: a } = t, o =
|
|
1126
|
+
let { columns: r, rows: i, offsetFreq: a } = t, o = K(e.x.mul(r), e.y.mul(i)), s = h(() => {
|
|
1125
1127
|
let e = A(o.y), t = k(-1e9).toVar(), s = k(0).toVar(), c = k(0).toVar(), l = k(0).toVar();
|
|
1126
1128
|
for (let u = -1; u <= 1; u++) {
|
|
1127
|
-
let d = e.add(u), f = M(d), p =
|
|
1129
|
+
let d = e.add(u), f = M(d), p = B(L(d, k(a)).notEqual(0), n.rowOffset, k(0)), m = A(o.x.sub(p));
|
|
1128
1130
|
for (let e = -1; e <= 1; e++) {
|
|
1129
|
-
let a = m.add(e), u = M(a), h = J(u, f, 0, r, i), _ = J(u, f, 1, r, i), v = h.x.sub(.5).mul(n.posRandom), y = h.y.sub(.5).mul(n.posRandom), b = a.add(.5).add(p).add(v), x = d.add(.5).add(y), S = o.x.sub(b).div(r), C = o.y.sub(x).div(i), w = _.x.sub(.5).mul(2).mul(n.rotRandom).mul(jn * .5).negate(), T = E(w), D =
|
|
1130
|
-
s.assign(
|
|
1131
|
+
let a = m.add(e), u = M(a), h = J(u, f, 0, r, i), _ = J(u, f, 1, r, i), v = h.x.sub(.5).mul(n.posRandom), y = h.y.sub(.5).mul(n.posRandom), b = a.add(.5).add(p).add(v), x = d.add(.5).add(y), S = o.x.sub(b).div(r), C = o.y.sub(x).div(i), w = _.x.sub(.5).mul(2).mul(n.rotRandom).mul(jn * .5).negate(), T = E(w), D = V(w), ee = T.mul(S).sub(D.mul(C)), te = D.mul(S).add(T.mul(C)), ne = k(1).add(h.z.sub(.5).mul(2).mul(n.sizeRandom)), re = k(.5).div(r).mul(ne).sub(n.gap), O = k(.5).div(i).mul(ne).sub(n.gap), ie = n.roundness.mul(F(re, O)), ae = g(ee).sub(re.sub(ie)), oe = g(te).sub(O.sub(ie)), A = N(K(P(ae, 0), P(oe, 0))), j = F(P(ae, oe), 0), se = A.add(j).sub(ie).negate(), ce = se.greaterThan(t);
|
|
1132
|
+
s.assign(B(ce, _.y, s)), c.assign(B(ce, a, c)), l.assign(B(ce, d, l)), t.assign(B(ce, se, t));
|
|
1131
1133
|
}
|
|
1132
1134
|
}
|
|
1133
|
-
return
|
|
1134
|
-
})(), c = s.x, l = s.y, u = s.z, d = s.w, f = M(u), p = M(d), m =
|
|
1135
|
+
return Me(H(0, n.edge.add(1e-5), t), s, c, l);
|
|
1136
|
+
})(), c = s.x, l = s.y, u = s.z, d = s.w, f = M(u), p = M(d), m = B(L(d, k(a)).notEqual(0), n.rowOffset, k(0)), _ = J(f, p, 0, r, i), v = u.add(.5).add(m).add(_.x.sub(.5).mul(n.posRandom)), y = d.add(.5).add(_.y.sub(.5).mul(n.posRandom));
|
|
1135
1137
|
return {
|
|
1136
1138
|
mask: c,
|
|
1137
1139
|
value: l,
|
|
1138
|
-
cellCoord:
|
|
1140
|
+
cellCoord: q(o.x.sub(v), o.y.sub(y), 0),
|
|
1139
1141
|
cellRandom: J(f, p, 2, r, i)
|
|
1140
1142
|
};
|
|
1141
1143
|
}
|
|
1142
1144
|
function Nn(e, t, n, r, i) {
|
|
1143
1145
|
let a = t, o = n, s = h(() => {
|
|
1144
|
-
let t =
|
|
1146
|
+
let t = K(e.x.mul(a), e.y.mul(o)), n = A(t.y), s = k(1e9).toVar(), c = k(0).toVar(), l = k(0).toVar(), u = k(0).toVar(), d = k(0).toVar(), f = k(0).toVar();
|
|
1145
1147
|
for (let r = -1; r <= 1; r++) {
|
|
1146
|
-
let i = n.add(r), p =
|
|
1148
|
+
let i = n.add(r), p = B(L(i, k(2)).notEqual(0), k(.5), k(0)), m = A(t.x.sub(p));
|
|
1147
1149
|
for (let t = -1; t <= 1; t++) {
|
|
1148
|
-
let n = m.add(t), r = n.add(.5).add(p).div(a), h = i.add(.5).div(o), g =
|
|
1149
|
-
s.assign(
|
|
1150
|
+
let n = m.add(t), r = n.add(.5).add(p).div(a), h = i.add(.5).div(o), g = N(K(e.x.sub(r), e.y.sub(h))), _ = g.lessThan(s);
|
|
1151
|
+
s.assign(B(_, g, s)), c.assign(B(_, r, c)), l.assign(B(_, h, l)), d.assign(B(_, n, d)), f.assign(B(_, i, f)), u.assign(B(_, mt(M(n), M(i), a, o), u));
|
|
1150
1152
|
}
|
|
1151
1153
|
}
|
|
1152
1154
|
let p = k(1e9).toVar();
|
|
1153
1155
|
for (let r = -1; r <= 1; r++) {
|
|
1154
|
-
let i = n.add(r), s =
|
|
1156
|
+
let i = n.add(r), s = B(L(i, k(2)).notEqual(0), k(.5), k(0)), u = A(t.x.sub(s));
|
|
1155
1157
|
for (let t = -1; t <= 1; t++) {
|
|
1156
|
-
let n = u.add(t).add(.5).add(s).div(a), r = i.add(.5).div(o), d = n.sub(c), f = r.sub(l), m =
|
|
1157
|
-
p.assign(
|
|
1158
|
+
let n = u.add(t).add(.5).add(s).div(a), r = i.add(.5).div(o), d = n.sub(c), f = r.sub(l), m = N(K(d, f)).add(1e-9), h = c.add(n).mul(.5), g = l.add(r).mul(.5), _ = h.sub(e.x).mul(d.div(m)).add(g.sub(e.y).mul(f.div(m))), v = m.lessThan(1e-4);
|
|
1159
|
+
p.assign(F(p, B(v, k(1e9), _)));
|
|
1158
1160
|
}
|
|
1159
1161
|
}
|
|
1160
|
-
return
|
|
1161
|
-
})(), c = s.x, l = s.y, u = s.z, d = s.w, f =
|
|
1162
|
+
return Me(H(r, r.add(i).add(1e-5), p), u, d, f);
|
|
1163
|
+
})(), c = s.x, l = s.y, u = s.z, d = s.w, f = B(L(d, k(2)).notEqual(0), k(.5), k(0)), p = u.add(.5).add(f).div(a), m = d.add(.5).div(o);
|
|
1162
1164
|
return {
|
|
1163
1165
|
mask: c,
|
|
1164
1166
|
value: l,
|
|
1165
|
-
cellCoord:
|
|
1167
|
+
cellCoord: q(e.x.sub(p).mul(a), e.y.sub(m).mul(o), 0),
|
|
1166
1168
|
cellRandom: J(M(u), M(d), 2, a, o)
|
|
1167
1169
|
};
|
|
1168
1170
|
}
|
|
@@ -1329,18 +1331,18 @@ var Pn = {
|
|
|
1329
1331
|
}, Fn = Math.PI;
|
|
1330
1332
|
function In(e, t, n) {
|
|
1331
1333
|
let r = t, i = h(() => {
|
|
1332
|
-
let t =
|
|
1334
|
+
let t = K(e.x.mul(r), e.y.mul(r)), i = A(t.x), a = A(t.y), o = k(1e9).toVar(), s = k(10).toVar(), c = k(10).toVar(), l = k(0).toVar(), u = k(1).toVar();
|
|
1333
1335
|
for (let e = -1; e <= 1; e++) {
|
|
1334
1336
|
let d = a.add(e), f = M(d);
|
|
1335
1337
|
for (let e = -1; e <= 1; e++) {
|
|
1336
|
-
let a = i.add(e), p = M(a), m = J(p, f, 0, r, r), h = J(p, f, 1, r, r), g = h.z.lessThan(n.amount), _ = k(1).add(m.z.sub(.5).mul(2).mul(n.sizeRandom)), v = n.radius.div(r).mul(_), y = m.x.sub(.5).mul(n.posRandom), b = m.y.sub(.5).mul(n.posRandom), x = a.add(.5).add(y), S = d.add(.5).add(b), C = t.x.sub(x).div(r), w = t.y.sub(S).div(r), T =
|
|
1337
|
-
s.assign(
|
|
1338
|
+
let a = i.add(e), p = M(a), m = J(p, f, 0, r, r), h = J(p, f, 1, r, r), g = h.z.lessThan(n.amount), _ = k(1).add(m.z.sub(.5).mul(2).mul(n.sizeRandom)), v = n.radius.div(r).mul(_), y = m.x.sub(.5).mul(n.posRandom), b = m.y.sub(.5).mul(n.posRandom), x = a.add(.5).add(y), S = d.add(.5).add(b), C = t.x.sub(x).div(r), w = t.y.sub(S).div(r), T = B(g, N(K(C, w)), k(1e9)), D = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(Fn).negate(), ee = E(D), te = V(D), ne = ee.mul(C).sub(te.mul(w)).div(v.add(1e-9)), re = te.mul(C).add(ee.mul(w)).div(v.add(1e-9)), O = T.lessThan(o);
|
|
1339
|
+
s.assign(B(O, ne, s)), c.assign(B(O, re, c)), l.assign(B(O, h.y, l)), u.assign(B(O, _, u)), o.assign(B(O, T, o));
|
|
1338
1340
|
}
|
|
1339
1341
|
}
|
|
1340
|
-
return
|
|
1342
|
+
return Me(s, c, l, u);
|
|
1341
1343
|
})();
|
|
1342
1344
|
return {
|
|
1343
|
-
coord:
|
|
1345
|
+
coord: q(i.x, i.y, 0),
|
|
1344
1346
|
value: i.z,
|
|
1345
1347
|
size: i.w
|
|
1346
1348
|
};
|
|
@@ -1442,26 +1444,41 @@ var Ln = {
|
|
|
1442
1444
|
size: a
|
|
1443
1445
|
};
|
|
1444
1446
|
}
|
|
1445
|
-
}, Rn = 6.283185307179586
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1447
|
+
}, Rn = 6.283185307179586, zn = [
|
|
1448
|
+
.13,
|
|
1449
|
+
.21,
|
|
1450
|
+
.09,
|
|
1451
|
+
.17
|
|
1452
|
+
];
|
|
1453
|
+
function Bn(e, t, n, r, i, a) {
|
|
1454
|
+
let o = i ?? k(0), s = h(() => {
|
|
1455
|
+
let i = j(o.mul(13.13)).mul(Rn), s = j(o.mul(27.71)).mul(Rn), c = j(o.mul(51.37)).mul(Rn), l = j(o.mul(91.7)).mul(2).sub(1), u = a.dome.mul(k(1).add(a.formRandom.mul(l).mul(.8))).max(.2), d = j(o.mul(71.13)).mul(Rn), f = (e, r) => {
|
|
1456
|
+
let o = N(K(e, r)), l = y(r, e), f, p;
|
|
1457
|
+
if (t === "polygon") {
|
|
1458
|
+
let e = Math.max(3, Math.round(n)), t = Rn / e, r = E(A(l.div(t).add(.5)).mul(t).sub(l)).mul(o), i = Math.cos(Math.PI / e), s = w(r.div(i), 0, 1);
|
|
1459
|
+
f = H(0, a.edge.add(1e-4), s.oneMinus()), p = s.oneMinus();
|
|
1460
|
+
} else {
|
|
1461
|
+
let e = V(l.mul(2).add(i)).mul(.5).add(V(l.mul(3).add(s)).mul(.3)).add(V(l.mul(5).add(c)).mul(.2)), t = k(1).add(e.mul(a.irregularity.mul(.4))), n = w(o.div(t.add(1e-6)), 0, 1);
|
|
1462
|
+
f = H(0, a.edge.add(1e-4), n.oneMinus()), p = n.oneMinus();
|
|
1463
|
+
}
|
|
1464
|
+
let m = w(o, 0, 1), h = z(w(m.mul(m).oneMinus(), 0, 1), u), g = E(d).mul(e).add(V(d).mul(r)), _ = h.mul(w(k(1).add(a.tilt.mul(g)), 0, 2)), v = H(0, .3, p), b = w(_, 0, 1.5).mul(v);
|
|
1465
|
+
return {
|
|
1466
|
+
mask: f,
|
|
1467
|
+
height: b
|
|
1468
|
+
};
|
|
1469
|
+
}, p = f(e.x, e.y), m = p.mask, h = p.height, g = Math.max(0, Math.min(zn.length, Math.round(r))), _ = g > 0 ? j(o.mul(33.19)).mul(Rn) : null;
|
|
1470
|
+
for (let t = 0; t < g; t++) {
|
|
1471
|
+
let n = _.add(t / g * Rn), r = a.erode.mul(zn[t]), i = f(e.x.add(E(n).mul(r)), e.y.add(V(n).mul(r)));
|
|
1472
|
+
m = m.min(i.mask), h = h.min(i.height);
|
|
1455
1473
|
}
|
|
1456
|
-
|
|
1457
|
-
return K(s, f, 0);
|
|
1474
|
+
return q(m, h, 0);
|
|
1458
1475
|
})();
|
|
1459
1476
|
return {
|
|
1460
|
-
mask:
|
|
1461
|
-
height:
|
|
1477
|
+
mask: s.x,
|
|
1478
|
+
height: s.y
|
|
1462
1479
|
};
|
|
1463
1480
|
}
|
|
1464
|
-
var
|
|
1481
|
+
var Vn = {
|
|
1465
1482
|
type: "shape",
|
|
1466
1483
|
nodeClass: "texture",
|
|
1467
1484
|
label: "Shape",
|
|
@@ -1525,21 +1542,58 @@ var Bn = {
|
|
|
1525
1542
|
max: .3,
|
|
1526
1543
|
step: .002,
|
|
1527
1544
|
default: .04
|
|
1545
|
+
},
|
|
1546
|
+
{
|
|
1547
|
+
key: "tilt",
|
|
1548
|
+
label: "tilt",
|
|
1549
|
+
type: "float",
|
|
1550
|
+
min: 0,
|
|
1551
|
+
max: 1,
|
|
1552
|
+
step: .01,
|
|
1553
|
+
default: 0
|
|
1554
|
+
},
|
|
1555
|
+
{
|
|
1556
|
+
key: "formRandom",
|
|
1557
|
+
label: "form rand",
|
|
1558
|
+
type: "float",
|
|
1559
|
+
min: 0,
|
|
1560
|
+
max: 1,
|
|
1561
|
+
step: .01,
|
|
1562
|
+
default: 0
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
key: "erode",
|
|
1566
|
+
label: "erode",
|
|
1567
|
+
type: "float",
|
|
1568
|
+
min: 0,
|
|
1569
|
+
max: 1,
|
|
1570
|
+
step: .01,
|
|
1571
|
+
default: 0
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
key: "erodeTaps",
|
|
1575
|
+
label: "erode taps",
|
|
1576
|
+
type: "select",
|
|
1577
|
+
options: ["off", "4"],
|
|
1578
|
+
default: "off"
|
|
1528
1579
|
}
|
|
1529
1580
|
],
|
|
1530
1581
|
build(e) {
|
|
1531
|
-
let t = e.inputs.coord ?? e.coord, n = e.inputs.seed, r = e.constant("shape") ?? "blob", i = Math.round(Number(e.constant("sides") ?? 6)), { mask: a, height: o } =
|
|
1582
|
+
let t = e.inputs.coord ?? e.coord, n = e.inputs.seed, r = e.constant("shape") ?? "blob", i = Math.round(Number(e.constant("sides") ?? 6)), { mask: a, height: o } = Bn(t, r, Number.isFinite(i) ? Math.max(3, i) : 6, parseInt(String(e.constant("erodeTaps") ?? "off"), 10) || 0, n ?? null, {
|
|
1532
1583
|
irregularity: e.live("irregularity"),
|
|
1533
1584
|
dome: e.live("dome"),
|
|
1534
|
-
edge: e.live("edge")
|
|
1585
|
+
edge: e.live("edge"),
|
|
1586
|
+
tilt: e.live("tilt"),
|
|
1587
|
+
formRandom: e.live("formRandom"),
|
|
1588
|
+
erode: e.live("erode")
|
|
1535
1589
|
});
|
|
1536
1590
|
return {
|
|
1537
1591
|
mask: a,
|
|
1538
1592
|
height: o
|
|
1539
1593
|
};
|
|
1540
1594
|
}
|
|
1541
|
-
},
|
|
1542
|
-
function
|
|
1595
|
+
}, Hn = Math.PI * 2;
|
|
1596
|
+
function Un(e, t) {
|
|
1543
1597
|
let n = e.x, r = e.y, i = e.z, a;
|
|
1544
1598
|
switch (t) {
|
|
1545
1599
|
case 1: {
|
|
@@ -1556,7 +1610,7 @@ function Hn(e, t) {
|
|
|
1556
1610
|
a = n.add(r).mul(.5);
|
|
1557
1611
|
break;
|
|
1558
1612
|
case 4:
|
|
1559
|
-
a = y(r, n).div(
|
|
1613
|
+
a = y(r, n).div(Hn).add(.5);
|
|
1560
1614
|
break;
|
|
1561
1615
|
case 5: {
|
|
1562
1616
|
let e = k(.999999).sub(n.mul(n).add(r.mul(r)).add(i.mul(i)).sqrt()).max(0);
|
|
@@ -1572,7 +1626,7 @@ function Hn(e, t) {
|
|
|
1572
1626
|
}
|
|
1573
1627
|
//#endregion
|
|
1574
1628
|
//#region src/graph/nodes/texture/gradient.ts
|
|
1575
|
-
var
|
|
1629
|
+
var Wn = [
|
|
1576
1630
|
"linear",
|
|
1577
1631
|
"quadratic",
|
|
1578
1632
|
"easing",
|
|
@@ -1580,7 +1634,7 @@ var Un = [
|
|
|
1580
1634
|
"radial",
|
|
1581
1635
|
"quadratic-sphere",
|
|
1582
1636
|
"sphere"
|
|
1583
|
-
],
|
|
1637
|
+
], Gn = {
|
|
1584
1638
|
type: "gradient",
|
|
1585
1639
|
nodeClass: "texture",
|
|
1586
1640
|
label: "Gradient",
|
|
@@ -1604,15 +1658,15 @@ var Un = [
|
|
|
1604
1658
|
key: "gradientType",
|
|
1605
1659
|
label: "type",
|
|
1606
1660
|
type: "select",
|
|
1607
|
-
options:
|
|
1661
|
+
options: Wn,
|
|
1608
1662
|
default: "linear"
|
|
1609
1663
|
}],
|
|
1610
1664
|
build(e) {
|
|
1611
|
-
return { field:
|
|
1665
|
+
return { field: Un((e.inputs.coord ?? e.coord).mul(e.live("scale")), Math.max(0, Wn.indexOf(e.constant("gradientType")))) };
|
|
1612
1666
|
}
|
|
1613
|
-
}, X = Math.PI * 2,
|
|
1614
|
-
function
|
|
1615
|
-
if (t === 0) return k(.5).add(
|
|
1667
|
+
}, X = Math.PI * 2, Kn = Math.PI / 2, qn = 20, Jn = 10;
|
|
1668
|
+
function Yn(e, t) {
|
|
1669
|
+
if (t === 0) return k(.5).add(V(e.sub(Kn)).mul(.5));
|
|
1616
1670
|
if (t === 1) {
|
|
1617
1671
|
let t = e.div(X);
|
|
1618
1672
|
return t.sub(A(t));
|
|
@@ -1620,52 +1674,52 @@ function Jn(e, t) {
|
|
|
1620
1674
|
let n = e.div(X);
|
|
1621
1675
|
return n.sub(A(n.add(.5))).abs().mul(2);
|
|
1622
1676
|
}
|
|
1623
|
-
function
|
|
1624
|
-
let a = Math.max(1, Math.round(i.scaleNum *
|
|
1677
|
+
function Xn(e, t, n, r, i) {
|
|
1678
|
+
let a = Math.max(1, Math.round(i.scaleNum * qn / X)), o = Math.max(1, Math.round(i.scaleNum * Jn / X)), s;
|
|
1625
1679
|
if (s = i.dir === 0 ? e.x.mul(a * X) : i.dir === 1 ? e.y.mul(a * X) : i.dir === 2 ? e.z.mul(a * X) : e.x.add(e.y).add(e.z).mul(o * X), s = s.add(t), i.withDistortion) {
|
|
1626
1680
|
let t = Math.max(1, Math.round(i.scaleNum * i.detailScaleNum)), a = t, o = t;
|
|
1627
1681
|
i.dir === 0 ? o = 2 : i.dir === 1 && (a = 2);
|
|
1628
|
-
let c = lt(
|
|
1682
|
+
let c = lt(K(e.x, e.y), a, o, Math.max(1, i.detail), r);
|
|
1629
1683
|
s = s.add(n.mul(c));
|
|
1630
1684
|
}
|
|
1631
|
-
return
|
|
1685
|
+
return Yn(s, i.profile);
|
|
1632
1686
|
}
|
|
1633
|
-
function
|
|
1634
|
-
let o = (e) => e.sub(
|
|
1635
|
-
s = a.dir === 0 ?
|
|
1636
|
-
let c = s.length().mul(t).mul(
|
|
1687
|
+
function Zn(e, t, n, r, i, a) {
|
|
1688
|
+
let o = (e) => e.sub(be(e)), s;
|
|
1689
|
+
s = a.dir === 0 ? q(k(0), o(e.y), o(e.z)) : a.dir === 1 ? q(o(e.x), k(0), o(e.z)) : a.dir === 2 ? q(o(e.x), o(e.y), k(0)) : q(o(e.x), o(e.y), o(e.z));
|
|
1690
|
+
let c = s.length().mul(t).mul(qn).add(n);
|
|
1637
1691
|
if (a.withDistortion) {
|
|
1638
|
-
let t = Math.max(1, Math.round(a.scaleNum * a.detailScaleNum)), n = lt(
|
|
1692
|
+
let t = Math.max(1, Math.round(a.scaleNum * a.detailScaleNum)), n = lt(K(e.x, e.y), t, t, Math.max(1, a.detail), i);
|
|
1639
1693
|
c = c.add(r.mul(n));
|
|
1640
1694
|
}
|
|
1641
|
-
return
|
|
1695
|
+
return Yn(c, a.profile);
|
|
1642
1696
|
}
|
|
1643
|
-
function
|
|
1644
|
-
if (o.tileable) return o.waveType === 0 ?
|
|
1697
|
+
function Qn(e, t, n, r, i, a, o) {
|
|
1698
|
+
if (o.tileable) return o.waveType === 0 ? Xn(e, n, r, a, o) : Zn(e, t, n, r, a, o);
|
|
1645
1699
|
let s = e.mul(t).add(1e-6).mul(.999999), c;
|
|
1646
|
-
if (o.waveType === 0) c = o.dir === 0 ? s.x.mul(
|
|
1700
|
+
if (o.waveType === 0) c = o.dir === 0 ? s.x.mul(qn) : o.dir === 1 ? s.y.mul(qn) : o.dir === 2 ? s.z.mul(qn) : s.x.add(s.y).add(s.z).mul(Jn);
|
|
1647
1701
|
else {
|
|
1648
1702
|
let e = s;
|
|
1649
|
-
o.dir === 0 ? e = s.mul(
|
|
1703
|
+
o.dir === 0 ? e = s.mul(q(0, 1, 1)) : o.dir === 1 ? e = s.mul(q(1, 0, 1)) : o.dir === 2 && (e = s.mul(q(1, 1, 0))), c = e.length().mul(qn);
|
|
1650
1704
|
}
|
|
1651
1705
|
if (c = c.add(n), o.withDistortion) {
|
|
1652
1706
|
let e = rt(s.mul(i), o.detail, a, k(2));
|
|
1653
1707
|
c = c.add(r.mul(e.mul(2).sub(1)));
|
|
1654
1708
|
}
|
|
1655
|
-
return
|
|
1709
|
+
return Yn(c, o.profile);
|
|
1656
1710
|
}
|
|
1657
1711
|
//#endregion
|
|
1658
1712
|
//#region src/graph/nodes/texture/wave.ts
|
|
1659
|
-
var
|
|
1713
|
+
var $n = ["bands", "rings"], er = [
|
|
1660
1714
|
"x",
|
|
1661
1715
|
"y",
|
|
1662
1716
|
"z",
|
|
1663
1717
|
"diagonal"
|
|
1664
|
-
],
|
|
1718
|
+
], tr = [
|
|
1665
1719
|
"sine",
|
|
1666
1720
|
"saw",
|
|
1667
1721
|
"triangle"
|
|
1668
|
-
],
|
|
1722
|
+
], nr = {
|
|
1669
1723
|
type: "wave",
|
|
1670
1724
|
nodeClass: "texture",
|
|
1671
1725
|
label: "Wave",
|
|
@@ -1692,21 +1746,21 @@ var Qn = ["bands", "rings"], $n = [
|
|
|
1692
1746
|
key: "waveType",
|
|
1693
1747
|
label: "type",
|
|
1694
1748
|
type: "select",
|
|
1695
|
-
options:
|
|
1749
|
+
options: $n,
|
|
1696
1750
|
default: "bands"
|
|
1697
1751
|
},
|
|
1698
1752
|
{
|
|
1699
1753
|
key: "direction",
|
|
1700
1754
|
label: "direction",
|
|
1701
1755
|
type: "select",
|
|
1702
|
-
options:
|
|
1756
|
+
options: er,
|
|
1703
1757
|
default: "x"
|
|
1704
1758
|
},
|
|
1705
1759
|
{
|
|
1706
1760
|
key: "profile",
|
|
1707
1761
|
label: "profile",
|
|
1708
1762
|
type: "select",
|
|
1709
|
-
options:
|
|
1763
|
+
options: tr,
|
|
1710
1764
|
default: "sine"
|
|
1711
1765
|
},
|
|
1712
1766
|
{
|
|
@@ -1759,18 +1813,18 @@ var Qn = ["bands", "rings"], $n = [
|
|
|
1759
1813
|
],
|
|
1760
1814
|
build(e) {
|
|
1761
1815
|
let t = e.inputs.coord ?? e.coord, n = {
|
|
1762
|
-
waveType: Math.max(0,
|
|
1763
|
-
dir: Math.max(0,
|
|
1764
|
-
profile: Math.max(0,
|
|
1816
|
+
waveType: Math.max(0, $n.indexOf(e.constant("waveType"))),
|
|
1817
|
+
dir: Math.max(0, er.indexOf(e.constant("direction"))),
|
|
1818
|
+
profile: Math.max(0, tr.indexOf(e.constant("profile"))),
|
|
1765
1819
|
withDistortion: Number(e.constant("distortion") ?? 0) > 0,
|
|
1766
1820
|
detail: e.constant("detail") ?? 2,
|
|
1767
1821
|
tileable: e.backend === "offline",
|
|
1768
1822
|
scaleNum: Number(e.constant("scale") ?? 1),
|
|
1769
1823
|
detailScaleNum: Number(e.constant("detailScale") ?? 1)
|
|
1770
1824
|
};
|
|
1771
|
-
return { field:
|
|
1825
|
+
return { field: Qn(t, e.live("scale"), e.live("phase"), e.live("distortion"), e.live("detailScale"), e.live("detailRoughness"), n) };
|
|
1772
1826
|
}
|
|
1773
|
-
},
|
|
1827
|
+
}, rr = 6.283185307179586, ir = {
|
|
1774
1828
|
type: "anisotropic-stripes",
|
|
1775
1829
|
nodeClass: "texture",
|
|
1776
1830
|
label: "Anisotropic Stripes",
|
|
@@ -1821,10 +1875,10 @@ var Qn = ["bands", "rings"], $n = [
|
|
|
1821
1875
|
}
|
|
1822
1876
|
],
|
|
1823
1877
|
build(e) {
|
|
1824
|
-
let t = e.inputs.coord ?? e.coord, n = y(t.z, t.x).div(
|
|
1825
|
-
return { field: n.mul(e.live("count")).add(r).mul(
|
|
1878
|
+
let t = e.inputs.coord ?? e.coord, n = y(t.z, t.x).div(rr), r = R(q(t.y.mul(.6), n.mul(6), k(0))).mul(e.live("waviness"));
|
|
1879
|
+
return { field: n.mul(e.live("count")).add(r).mul(rr).sin().mul(.5).add(.5).pow(e.live("sharpness")).mul(e.live("contrast")) };
|
|
1826
1880
|
}
|
|
1827
|
-
},
|
|
1881
|
+
}, ar = /* @__PURE__ */ "add.subtract.multiply.divide.multiply-add.power.logarithm.sqrt.inverse-sqrt.absolute.exponent.min.max.less-than.greater-than.sign.compare.smooth-min.smooth-max.round.floor.ceil.truncate.fraction.modulo.floored-modulo.wrap.snap.pingpong.sine.cosine.tangent.arcsine.arccosine.arctangent.arctan2.sinh.cosh.tanh.radians.degrees.mix".split("."), or = new Set([
|
|
1828
1882
|
"sqrt",
|
|
1829
1883
|
"inverse-sqrt",
|
|
1830
1884
|
"absolute",
|
|
@@ -1846,13 +1900,13 @@ var Qn = ["bands", "rings"], $n = [
|
|
|
1846
1900
|
"tanh",
|
|
1847
1901
|
"radians",
|
|
1848
1902
|
"degrees"
|
|
1849
|
-
]),
|
|
1903
|
+
]), sr = new Set([
|
|
1850
1904
|
"multiply-add",
|
|
1851
1905
|
"compare",
|
|
1852
1906
|
"smooth-min",
|
|
1853
1907
|
"smooth-max",
|
|
1854
1908
|
"wrap"
|
|
1855
|
-
]),
|
|
1909
|
+
]), cr = {
|
|
1856
1910
|
power: ["Base", "Exponent"],
|
|
1857
1911
|
logarithm: ["Value", "Base"],
|
|
1858
1912
|
"multiply-add": [
|
|
@@ -1885,8 +1939,8 @@ var Qn = ["bands", "rings"], $n = [
|
|
|
1885
1939
|
radians: ["Degrees"],
|
|
1886
1940
|
degrees: ["Radians"]
|
|
1887
1941
|
};
|
|
1888
|
-
function
|
|
1889
|
-
let [t, n, r] =
|
|
1942
|
+
function lr(e) {
|
|
1943
|
+
let [t, n, r] = cr[e] ?? [
|
|
1890
1944
|
"A",
|
|
1891
1945
|
"B",
|
|
1892
1946
|
"C"
|
|
@@ -1895,17 +1949,17 @@ function cr(e) {
|
|
|
1895
1949
|
label: t,
|
|
1896
1950
|
kind: "float"
|
|
1897
1951
|
}];
|
|
1898
|
-
return
|
|
1952
|
+
return or.has(e) || i.push({
|
|
1899
1953
|
key: "b",
|
|
1900
1954
|
label: n ?? "B",
|
|
1901
1955
|
kind: "float"
|
|
1902
|
-
}),
|
|
1956
|
+
}), sr.has(e) && i.push({
|
|
1903
1957
|
key: "c",
|
|
1904
1958
|
label: r ?? "C",
|
|
1905
1959
|
kind: "float"
|
|
1906
1960
|
}), i;
|
|
1907
1961
|
}
|
|
1908
|
-
var
|
|
1962
|
+
var ur = {
|
|
1909
1963
|
type: "math",
|
|
1910
1964
|
nodeClass: "converter",
|
|
1911
1965
|
label: "Math",
|
|
@@ -1927,7 +1981,7 @@ var lr = {
|
|
|
1927
1981
|
key: "op",
|
|
1928
1982
|
label: "op",
|
|
1929
1983
|
type: "select",
|
|
1930
|
-
options:
|
|
1984
|
+
options: ar,
|
|
1931
1985
|
default: "mix"
|
|
1932
1986
|
},
|
|
1933
1987
|
{
|
|
@@ -1951,7 +2005,7 @@ var lr = {
|
|
|
1951
2005
|
],
|
|
1952
2006
|
declare(e) {
|
|
1953
2007
|
return {
|
|
1954
|
-
inputs:
|
|
2008
|
+
inputs: lr(e.op ?? "mix"),
|
|
1955
2009
|
outputs: [{
|
|
1956
2010
|
key: "field",
|
|
1957
2011
|
kind: "float"
|
|
@@ -1964,63 +2018,63 @@ var lr = {
|
|
|
1964
2018
|
case "add": return { field: t.add(n) };
|
|
1965
2019
|
case "subtract": return { field: t.sub(n) };
|
|
1966
2020
|
case "multiply": return { field: t.mul(n) };
|
|
1967
|
-
case "divide": return { field:
|
|
2021
|
+
case "divide": return { field: B(n.equal(0), k(0), t.div(n)) };
|
|
1968
2022
|
case "multiply-add": return { field: t.mul(n).add(r) };
|
|
1969
|
-
case "power": return { field:
|
|
1970
|
-
case "logarithm": return { field:
|
|
1971
|
-
case "sqrt": return { field:
|
|
1972
|
-
case "inverse-sqrt": return { field:
|
|
2023
|
+
case "power": return { field: z(t, n) };
|
|
2024
|
+
case "logarithm": return { field: B(t.greaterThan(0).and(n.greaterThan(0)), le(t).div(le(n)), k(0)) };
|
|
2025
|
+
case "sqrt": return { field: Te(t) };
|
|
2026
|
+
case "inverse-sqrt": return { field: B(t.greaterThan(0), ce(t), k(0)) };
|
|
1973
2027
|
case "absolute": return { field: g(t) };
|
|
1974
2028
|
case "exponent": return { field: ie(t) };
|
|
1975
|
-
case "min": return { field:
|
|
1976
|
-
case "max": return { field:
|
|
1977
|
-
case "less-than": return { field:
|
|
1978
|
-
case "greater-than": return { field:
|
|
1979
|
-
case "sign": return { field:
|
|
1980
|
-
case "compare": return { field:
|
|
1981
|
-
case "smooth-min": return { field:
|
|
1982
|
-
case "smooth-max": return { field:
|
|
1983
|
-
case "round": return { field:
|
|
2029
|
+
case "min": return { field: F(t, n) };
|
|
2030
|
+
case "max": return { field: P(t, n) };
|
|
2031
|
+
case "less-than": return { field: B(t.lessThan(n), k(1), k(0)) };
|
|
2032
|
+
case "greater-than": return { field: B(t.greaterThan(n), k(1), k(0)) };
|
|
2033
|
+
case "sign": return { field: Ce(t) };
|
|
2034
|
+
case "compare": return { field: B(t.sub(n).abs().lessThanEqual(P(r, k(1e-5))), k(1), k(0)) };
|
|
2035
|
+
case "smooth-min": return { field: dr(t, n, r) };
|
|
2036
|
+
case "smooth-max": return { field: dr(t.negate(), n.negate(), r).negate() };
|
|
2037
|
+
case "round": return { field: be(t) };
|
|
1984
2038
|
case "floor": return { field: A(t) };
|
|
1985
2039
|
case "ceil": return { field: C(t) };
|
|
1986
|
-
case "truncate": return { field:
|
|
2040
|
+
case "truncate": return { field: ke(t) };
|
|
1987
2041
|
case "fraction": return { field: j(t) };
|
|
1988
|
-
case "modulo": return { field:
|
|
1989
|
-
case "floored-modulo": return { field:
|
|
1990
|
-
case "wrap": return { field:
|
|
1991
|
-
case "snap": return { field:
|
|
1992
|
-
case "pingpong": return { field:
|
|
1993
|
-
case "sine": return { field:
|
|
2042
|
+
case "modulo": return { field: B(n.equal(0), k(0), t.sub(n.mul(ke(t.div(n))))) };
|
|
2043
|
+
case "floored-modulo": return { field: B(n.equal(0), k(0), t.sub(n.mul(A(t.div(n))))) };
|
|
2044
|
+
case "wrap": return { field: fr(t, n, r) };
|
|
2045
|
+
case "snap": return { field: B(n.equal(0), k(0), A(t.div(n)).mul(n)) };
|
|
2046
|
+
case "pingpong": return { field: pr(t, n) };
|
|
2047
|
+
case "sine": return { field: V(t) };
|
|
1994
2048
|
case "cosine": return { field: E(t) };
|
|
1995
|
-
case "tangent": return { field:
|
|
1996
|
-
case "arcsine": return { field:
|
|
1997
|
-
case "arccosine": return { field:
|
|
2049
|
+
case "tangent": return { field: De(t) };
|
|
2050
|
+
case "arcsine": return { field: B(t.abs().lessThanEqual(1), v(t), k(0)) };
|
|
2051
|
+
case "arccosine": return { field: B(t.abs().lessThanEqual(1), _(t), k(0)) };
|
|
1998
2052
|
case "arctangent": return { field: y(t) };
|
|
1999
2053
|
case "arctan2": return { field: y(t, n) };
|
|
2000
|
-
case "sinh": return { field:
|
|
2054
|
+
case "sinh": return { field: we(t) };
|
|
2001
2055
|
case "cosh": return { field: D(t) };
|
|
2002
|
-
case "tanh": return { field:
|
|
2003
|
-
case "radians": return { field:
|
|
2056
|
+
case "tanh": return { field: Oe(t) };
|
|
2057
|
+
case "radians": return { field: ve(t) };
|
|
2004
2058
|
case "degrees": return { field: re(t) };
|
|
2005
|
-
default: return { field:
|
|
2059
|
+
default: return { field: I(t, n, e.live("factor")) };
|
|
2006
2060
|
}
|
|
2007
2061
|
}
|
|
2008
2062
|
};
|
|
2009
|
-
function ur(e, t, n) {
|
|
2010
|
-
let r = N(n.sub(e.sub(t).abs()), k(0)).div(n), i = P(e, t).sub(r.mul(r).mul(r).mul(n).div(6));
|
|
2011
|
-
return R(n.equal(0), P(e, t), i);
|
|
2012
|
-
}
|
|
2013
2063
|
function dr(e, t, n) {
|
|
2064
|
+
let r = P(n.sub(e.sub(t).abs()), k(0)).div(n), i = F(e, t).sub(r.mul(r).mul(r).mul(n).div(6));
|
|
2065
|
+
return B(n.equal(0), F(e, t), i);
|
|
2066
|
+
}
|
|
2067
|
+
function fr(e, t, n) {
|
|
2014
2068
|
let r = t.sub(n);
|
|
2015
|
-
return
|
|
2069
|
+
return B(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
|
|
2016
2070
|
}
|
|
2017
|
-
function
|
|
2071
|
+
function pr(e, t) {
|
|
2018
2072
|
let n = t.mul(2);
|
|
2019
|
-
return
|
|
2073
|
+
return B(t.equal(0), k(0), j(e.sub(t).div(n)).mul(n).sub(t).abs());
|
|
2020
2074
|
}
|
|
2021
2075
|
//#endregion
|
|
2022
2076
|
//#region src/graph/nodes/converter/levels.ts
|
|
2023
|
-
var
|
|
2077
|
+
var mr = {
|
|
2024
2078
|
type: "levels",
|
|
2025
2079
|
nodeClass: "converter",
|
|
2026
2080
|
label: "Levels / Remap",
|
|
@@ -2060,9 +2114,9 @@ var pr = {
|
|
|
2060
2114
|
],
|
|
2061
2115
|
build(e) {
|
|
2062
2116
|
let t = e.inputs.field ?? k(.5), n = e.constant("invert") ? t.oneMinus() : t;
|
|
2063
|
-
return { field:
|
|
2117
|
+
return { field: I(e.live("min"), e.live("max"), n) };
|
|
2064
2118
|
}
|
|
2065
|
-
},
|
|
2119
|
+
}, hr = {
|
|
2066
2120
|
type: "color-ramp",
|
|
2067
2121
|
nodeClass: "converter",
|
|
2068
2122
|
label: "Color Ramp",
|
|
@@ -2108,9 +2162,9 @@ var pr = {
|
|
|
2108
2162
|
],
|
|
2109
2163
|
build(e) {
|
|
2110
2164
|
let t = e.inputs.field ?? k(.5), n = e.live("low"), r = e.live("high"), i = w(t.sub(n).div(r.sub(n).max(1e-5)), 0, 1);
|
|
2111
|
-
return { color:
|
|
2165
|
+
return { color: I(e.live("colorA"), e.live("colorB"), i) };
|
|
2112
2166
|
}
|
|
2113
|
-
},
|
|
2167
|
+
}, gr = {
|
|
2114
2168
|
type: "height-blend",
|
|
2115
2169
|
nodeClass: "converter",
|
|
2116
2170
|
label: "Height Blend",
|
|
@@ -2149,7 +2203,7 @@ var pr = {
|
|
|
2149
2203
|
key: "width",
|
|
2150
2204
|
label: "width",
|
|
2151
2205
|
type: "float",
|
|
2152
|
-
min:
|
|
2206
|
+
min: 0,
|
|
2153
2207
|
max: 1,
|
|
2154
2208
|
step: .01,
|
|
2155
2209
|
default: .25
|
|
@@ -2167,10 +2221,10 @@ var pr = {
|
|
|
2167
2221
|
build(e) {
|
|
2168
2222
|
let t = e.inputs.heightA ?? k(.5), n = e.inputs.heightB ?? k(.5), r = e.live("transition"), i = e.live("width");
|
|
2169
2223
|
e.inputs.breakup !== void 0 && (n = n.add(e.inputs.breakup.sub(.5).mul(e.live("breakup"))));
|
|
2170
|
-
let a = n.sub(t).add(r.mul(2).sub(1));
|
|
2171
|
-
return { fac:
|
|
2224
|
+
let a = n.sub(t).add(r.mul(2).sub(1)), o = P(i, se(a));
|
|
2225
|
+
return { fac: H(o.negate(), o, a) };
|
|
2172
2226
|
}
|
|
2173
|
-
},
|
|
2227
|
+
}, _r = {
|
|
2174
2228
|
type: "blend",
|
|
2175
2229
|
nodeClass: "color",
|
|
2176
2230
|
label: "Blend",
|
|
@@ -2231,9 +2285,9 @@ var pr = {
|
|
|
2231
2285
|
break;
|
|
2232
2286
|
}
|
|
2233
2287
|
let i = (e.inputs.mask ?? k(1)).mul(e.live("opacity"));
|
|
2234
|
-
return { color:
|
|
2288
|
+
return { color: I(t, r, i) };
|
|
2235
2289
|
}
|
|
2236
|
-
},
|
|
2290
|
+
}, vr = {
|
|
2237
2291
|
type: "invert",
|
|
2238
2292
|
nodeClass: "color",
|
|
2239
2293
|
label: "Invert Color",
|
|
@@ -2260,10 +2314,10 @@ var pr = {
|
|
|
2260
2314
|
default: 1
|
|
2261
2315
|
}],
|
|
2262
2316
|
build(e) {
|
|
2263
|
-
let t = e.inputs.color ??
|
|
2264
|
-
return { color:
|
|
2317
|
+
let t = e.inputs.color ?? q(0, 0, 0), n = e.inputs.fac ?? e.live("fac");
|
|
2318
|
+
return { color: I(t, q(1, 1, 1).sub(t), n) };
|
|
2265
2319
|
}
|
|
2266
|
-
},
|
|
2320
|
+
}, yr = {
|
|
2267
2321
|
type: "bright-contrast",
|
|
2268
2322
|
nodeClass: "color",
|
|
2269
2323
|
label: "Bright / Contrast",
|
|
@@ -2306,21 +2360,21 @@ var pr = {
|
|
|
2306
2360
|
default: 0
|
|
2307
2361
|
}],
|
|
2308
2362
|
build(e) {
|
|
2309
|
-
let t = e.inputs.color ??
|
|
2363
|
+
let t = e.inputs.color ?? q(0, 0, 0), n = e.inputs.contrast ?? e.live("contrast"), r = e.inputs.bright ?? e.live("bright"), i = k(1).add(n), a = r.sub(n.mul(.5));
|
|
2310
2364
|
return { color: t.mul(i).add(a).max(0) };
|
|
2311
2365
|
}
|
|
2312
|
-
},
|
|
2313
|
-
function br(e) {
|
|
2314
|
-
let t = e.x, n = e.y, r = e.z, i = N(t, N(n, r)), a = P(t, P(n, r)), o = i.sub(a), s = i, c = R(i.equal(0), k(0), o.div(N(i, k(yr)))), l = K(i, i, i).sub(e).div(N(o, k(yr))), u = l.z.sub(l.y), d = k(2).add(l.x).sub(l.z), f = k(4).add(l.y).sub(l.x), p = R(n.equal(i), d, f);
|
|
2315
|
-
return p = R(t.equal(i), u, p), p = p.div(6), p = R(p.lessThan(0), p.add(1), p), p = R(c.equal(0), k(0), p), K(p, c, s);
|
|
2316
|
-
}
|
|
2366
|
+
}, br = 1e-10;
|
|
2317
2367
|
function xr(e) {
|
|
2318
|
-
let t = e.x, n = e.y, r = e.z, i =
|
|
2319
|
-
return
|
|
2368
|
+
let t = e.x, n = e.y, r = e.z, i = P(t, P(n, r)), a = F(t, F(n, r)), o = i.sub(a), s = i, c = B(i.equal(0), k(0), o.div(P(i, k(br)))), l = q(i, i, i).sub(e).div(P(o, k(br))), u = l.z.sub(l.y), d = k(2).add(l.x).sub(l.z), f = k(4).add(l.y).sub(l.x), p = B(n.equal(i), d, f);
|
|
2369
|
+
return p = B(t.equal(i), u, p), p = p.div(6), p = B(p.lessThan(0), p.add(1), p), p = B(c.equal(0), k(0), p), q(p, c, s);
|
|
2370
|
+
}
|
|
2371
|
+
function Sr(e) {
|
|
2372
|
+
let t = e.x, n = e.y, r = e.z, i = B(t.equal(1), k(0), t).mul(6), a = A(i), o = i.sub(a), s = r.mul(k(1).sub(n)), c = r.mul(k(1).sub(n.mul(o))), l = r.mul(k(1).sub(n.mul(k(1).sub(o)))), u = q(r, s, c);
|
|
2373
|
+
return u = B(a.equal(4), q(l, s, r), u), u = B(a.equal(3), q(s, c, r), u), u = B(a.equal(2), q(s, r, l), u), u = B(a.equal(1), q(c, r, s), u), u = B(a.equal(0), q(r, l, s), u), B(n.equal(0), q(r, r, r), u);
|
|
2320
2374
|
}
|
|
2321
2375
|
//#endregion
|
|
2322
2376
|
//#region src/graph/nodes/color/hue-sat-val.ts
|
|
2323
|
-
var
|
|
2377
|
+
var Cr = {
|
|
2324
2378
|
type: "hue-sat-val",
|
|
2325
2379
|
nodeClass: "color",
|
|
2326
2380
|
label: "Hue / Saturation",
|
|
@@ -2372,17 +2426,17 @@ var Sr = {
|
|
|
2372
2426
|
}
|
|
2373
2427
|
],
|
|
2374
2428
|
build(e) {
|
|
2375
|
-
let t = e.inputs.color ??
|
|
2376
|
-
return { color:
|
|
2429
|
+
let t = e.inputs.color ?? q(.8, .8, .8), n = xr(t);
|
|
2430
|
+
return { color: I(t, Sr(q(j(n.x.add(e.live("hue")).add(.5)), n.y.mul(e.live("saturation")).clamp(0, 1), n.z.mul(e.live("value")))), e.live("fac")) };
|
|
2377
2431
|
}
|
|
2378
|
-
},
|
|
2379
|
-
function
|
|
2380
|
-
let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a =
|
|
2432
|
+
}, wr = (e, t, n, r, i) => B(e.equal(0), t, B(e.equal(1), n, B(e.equal(2), r, i)));
|
|
2433
|
+
function Tr(e, t) {
|
|
2434
|
+
let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a = wr(r, t[0], t[0], t[1], t[2]), o = wr(r, t[0], t[1], t[2], t[3]), s = wr(r, t[1], t[2], t[3], t[4]), c = wr(r, t[2], t[3], t[4], t[4]), l = i.mul(i), u = l.mul(i);
|
|
2381
2435
|
return o.mul(2).add(s.sub(a).mul(i)).add(a.mul(2).sub(o.mul(5)).add(s.mul(4)).sub(c).mul(l)).add(o.mul(3).sub(s.mul(3)).add(c).sub(a).mul(u)).mul(.5);
|
|
2382
2436
|
}
|
|
2383
2437
|
//#endregion
|
|
2384
2438
|
//#region src/graph/nodes/color/rgb-curves.ts
|
|
2385
|
-
var
|
|
2439
|
+
var Er = () => [...Pe], Dr = {
|
|
2386
2440
|
type: "rgb-curves",
|
|
2387
2441
|
nodeClass: "color",
|
|
2388
2442
|
label: "RGB Curves",
|
|
@@ -2412,14 +2466,14 @@ var Tr = () => [...Fe], Er = {
|
|
|
2412
2466
|
label: "curves",
|
|
2413
2467
|
type: "curve",
|
|
2414
2468
|
default: {
|
|
2415
|
-
C:
|
|
2416
|
-
R:
|
|
2417
|
-
G:
|
|
2418
|
-
B:
|
|
2469
|
+
C: Er(),
|
|
2470
|
+
R: Er(),
|
|
2471
|
+
G: Er(),
|
|
2472
|
+
B: Er()
|
|
2419
2473
|
}
|
|
2420
2474
|
}],
|
|
2421
2475
|
build(e) {
|
|
2422
|
-
let t = e.inputs.color ??
|
|
2476
|
+
let t = e.inputs.color ?? q(0, 0, 0), n = e.live("curves"), r = (e) => [
|
|
2423
2477
|
0,
|
|
2424
2478
|
1,
|
|
2425
2479
|
2,
|
|
@@ -2430,10 +2484,10 @@ var Tr = () => [...Fe], Er = {
|
|
|
2430
2484
|
r(5),
|
|
2431
2485
|
r(10),
|
|
2432
2486
|
r(15)
|
|
2433
|
-
], c =
|
|
2434
|
-
return { color:
|
|
2487
|
+
], c = Tr(Tr(t.x, i), a), l = Tr(Tr(t.y, i), o), u = Tr(Tr(t.z, i), s), d = e.inputs.fac ?? e.live("fac");
|
|
2488
|
+
return { color: I(t, q(c, l, u), d) };
|
|
2435
2489
|
}
|
|
2436
|
-
},
|
|
2490
|
+
}, Or = {
|
|
2437
2491
|
type: "luminance",
|
|
2438
2492
|
nodeClass: "converter",
|
|
2439
2493
|
label: "Luminance",
|
|
@@ -2448,9 +2502,9 @@ var Tr = () => [...Fe], Er = {
|
|
|
2448
2502
|
params: [],
|
|
2449
2503
|
build(e) {
|
|
2450
2504
|
let t = e.inputs.color;
|
|
2451
|
-
return { field: t ?
|
|
2505
|
+
return { field: t ? ue(t) : k(0) };
|
|
2452
2506
|
}
|
|
2453
|
-
},
|
|
2507
|
+
}, kr = {
|
|
2454
2508
|
type: "split-channels",
|
|
2455
2509
|
nodeClass: "converter",
|
|
2456
2510
|
label: "Split Channels",
|
|
@@ -2485,7 +2539,7 @@ var Tr = () => [...Fe], Er = {
|
|
|
2485
2539
|
b: k(0)
|
|
2486
2540
|
};
|
|
2487
2541
|
}
|
|
2488
|
-
},
|
|
2542
|
+
}, Ar = {
|
|
2489
2543
|
type: "combine-channels",
|
|
2490
2544
|
nodeClass: "converter",
|
|
2491
2545
|
label: "Combine Channels",
|
|
@@ -2509,9 +2563,9 @@ var Tr = () => [...Fe], Er = {
|
|
|
2509
2563
|
}],
|
|
2510
2564
|
params: [],
|
|
2511
2565
|
build(e) {
|
|
2512
|
-
return { color:
|
|
2566
|
+
return { color: q(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
|
|
2513
2567
|
}
|
|
2514
|
-
},
|
|
2568
|
+
}, jr = {
|
|
2515
2569
|
type: "clamp",
|
|
2516
2570
|
nodeClass: "converter",
|
|
2517
2571
|
label: "Clamp",
|
|
@@ -2565,9 +2619,9 @@ var Tr = () => [...Fe], Er = {
|
|
|
2565
2619
|
],
|
|
2566
2620
|
build(e) {
|
|
2567
2621
|
let t = e.inputs.value ?? k(0), n = e.inputs.min ?? e.live("min"), r = e.inputs.max ?? e.live("max");
|
|
2568
|
-
return e.constant("mode") === "range" ? { field: t.clamp(
|
|
2622
|
+
return e.constant("mode") === "range" ? { field: t.clamp(F(n, r), P(n, r)) } : { field: w(t, n, r) };
|
|
2569
2623
|
}
|
|
2570
|
-
},
|
|
2624
|
+
}, Mr = {
|
|
2571
2625
|
type: "separate-xyz",
|
|
2572
2626
|
nodeClass: "converter",
|
|
2573
2627
|
label: "Separate XYZ",
|
|
@@ -2591,14 +2645,14 @@ var Tr = () => [...Fe], Er = {
|
|
|
2591
2645
|
],
|
|
2592
2646
|
params: [],
|
|
2593
2647
|
build(e) {
|
|
2594
|
-
let t = e.inputs.vector ??
|
|
2648
|
+
let t = e.inputs.vector ?? q(0, 0, 0);
|
|
2595
2649
|
return {
|
|
2596
2650
|
x: t.x,
|
|
2597
2651
|
y: t.y,
|
|
2598
2652
|
z: t.z
|
|
2599
2653
|
};
|
|
2600
2654
|
}
|
|
2601
|
-
},
|
|
2655
|
+
}, Nr = {
|
|
2602
2656
|
type: "combine-xyz",
|
|
2603
2657
|
nodeClass: "converter",
|
|
2604
2658
|
label: "Combine XYZ",
|
|
@@ -2650,9 +2704,9 @@ var Tr = () => [...Fe], Er = {
|
|
|
2650
2704
|
}
|
|
2651
2705
|
],
|
|
2652
2706
|
build(e) {
|
|
2653
|
-
return { vector:
|
|
2707
|
+
return { vector: q(e.inputs.x ?? e.live("x"), e.inputs.y ?? e.live("y"), e.inputs.z ?? e.live("z")) };
|
|
2654
2708
|
}
|
|
2655
|
-
},
|
|
2709
|
+
}, Pr = {
|
|
2656
2710
|
type: "constant-field",
|
|
2657
2711
|
nodeClass: "input",
|
|
2658
2712
|
label: "Constant (Field)",
|
|
@@ -2673,7 +2727,7 @@ var Tr = () => [...Fe], Er = {
|
|
|
2673
2727
|
build(e) {
|
|
2674
2728
|
return { field: e.live("value") };
|
|
2675
2729
|
}
|
|
2676
|
-
},
|
|
2730
|
+
}, Fr = {
|
|
2677
2731
|
type: "constant-color",
|
|
2678
2732
|
nodeClass: "input",
|
|
2679
2733
|
label: "Constant (Color)",
|
|
@@ -2691,7 +2745,7 @@ var Tr = () => [...Fe], Er = {
|
|
|
2691
2745
|
build(e) {
|
|
2692
2746
|
return { color: e.live("color") };
|
|
2693
2747
|
}
|
|
2694
|
-
},
|
|
2748
|
+
}, Ir = {
|
|
2695
2749
|
type: "tex-coordinate",
|
|
2696
2750
|
nodeClass: "input",
|
|
2697
2751
|
label: "Texture Coordinate",
|
|
@@ -2720,20 +2774,20 @@ var Tr = () => [...Fe], Er = {
|
|
|
2720
2774
|
],
|
|
2721
2775
|
params: [],
|
|
2722
2776
|
build(e) {
|
|
2723
|
-
let t =
|
|
2777
|
+
let t = q(G().x, G().y, k(0));
|
|
2724
2778
|
return e.backend === "offline" ? {
|
|
2725
2779
|
generated: t,
|
|
2726
2780
|
uv: t,
|
|
2727
2781
|
object: t,
|
|
2728
2782
|
normal: t
|
|
2729
2783
|
} : {
|
|
2730
|
-
generated:
|
|
2784
|
+
generated: ge,
|
|
2731
2785
|
uv: t,
|
|
2732
|
-
object:
|
|
2733
|
-
normal:
|
|
2786
|
+
object: ge,
|
|
2787
|
+
normal: de
|
|
2734
2788
|
};
|
|
2735
2789
|
}
|
|
2736
|
-
},
|
|
2790
|
+
}, Lr = [
|
|
2737
2791
|
"add",
|
|
2738
2792
|
"subtract",
|
|
2739
2793
|
"multiply",
|
|
@@ -2756,11 +2810,11 @@ var Tr = () => [...Fe], Er = {
|
|
|
2756
2810
|
"sine",
|
|
2757
2811
|
"cosine",
|
|
2758
2812
|
"tangent"
|
|
2759
|
-
],
|
|
2813
|
+
], Rr = new Set([
|
|
2760
2814
|
"dot",
|
|
2761
2815
|
"distance",
|
|
2762
2816
|
"length"
|
|
2763
|
-
]),
|
|
2817
|
+
]), zr = [{
|
|
2764
2818
|
key: "vector1",
|
|
2765
2819
|
label: "A",
|
|
2766
2820
|
kind: "vector"
|
|
@@ -2768,11 +2822,11 @@ var Tr = () => [...Fe], Er = {
|
|
|
2768
2822
|
key: "vector2",
|
|
2769
2823
|
label: "B",
|
|
2770
2824
|
kind: "vector"
|
|
2771
|
-
}],
|
|
2825
|
+
}], Br = {
|
|
2772
2826
|
type: "vector-math",
|
|
2773
2827
|
nodeClass: "vector",
|
|
2774
2828
|
label: "Vector Math",
|
|
2775
|
-
inputs:
|
|
2829
|
+
inputs: zr,
|
|
2776
2830
|
outputs: [{
|
|
2777
2831
|
key: "vector",
|
|
2778
2832
|
label: "Vector",
|
|
@@ -2782,7 +2836,7 @@ var Tr = () => [...Fe], Er = {
|
|
|
2782
2836
|
key: "operation",
|
|
2783
2837
|
label: "op",
|
|
2784
2838
|
type: "select",
|
|
2785
|
-
options:
|
|
2839
|
+
options: Lr,
|
|
2786
2840
|
default: "add"
|
|
2787
2841
|
}, {
|
|
2788
2842
|
key: "scale",
|
|
@@ -2796,8 +2850,8 @@ var Tr = () => [...Fe], Er = {
|
|
|
2796
2850
|
declare(e) {
|
|
2797
2851
|
let t = e.operation ?? "add";
|
|
2798
2852
|
return {
|
|
2799
|
-
inputs:
|
|
2800
|
-
outputs:
|
|
2853
|
+
inputs: zr,
|
|
2854
|
+
outputs: Rr.has(t) ? [{
|
|
2801
2855
|
key: "value",
|
|
2802
2856
|
label: "Value",
|
|
2803
2857
|
kind: "float"
|
|
@@ -2809,14 +2863,14 @@ var Tr = () => [...Fe], Er = {
|
|
|
2809
2863
|
};
|
|
2810
2864
|
},
|
|
2811
2865
|
build(e) {
|
|
2812
|
-
let t = e.inputs.vector1 ?? e.coord, n = e.inputs.vector2 ??
|
|
2866
|
+
let t = e.inputs.vector1 ?? e.coord, n = e.inputs.vector2 ?? q(0, 0, 0);
|
|
2813
2867
|
switch (e.constant("operation") ?? "add") {
|
|
2814
2868
|
case "subtract": return { vector: t.sub(n) };
|
|
2815
2869
|
case "multiply": return { vector: t.mul(n) };
|
|
2816
2870
|
case "divide": return { vector: t.div(n) };
|
|
2817
2871
|
case "cross": return { vector: ee(t, n) };
|
|
2818
2872
|
case "project": return { vector: n.mul(O(t, n).div(O(n, n))) };
|
|
2819
|
-
case "reflect": return { vector:
|
|
2873
|
+
case "reflect": return { vector: ye(t, n.normalize()) };
|
|
2820
2874
|
case "dot": return { value: O(t, n) };
|
|
2821
2875
|
case "distance": return { value: t.sub(n).length() };
|
|
2822
2876
|
case "length": return { value: t.length() };
|
|
@@ -2827,28 +2881,28 @@ var Tr = () => [...Fe], Er = {
|
|
|
2827
2881
|
case "ceil": return { vector: C(t) };
|
|
2828
2882
|
case "fraction": return { vector: j(t) };
|
|
2829
2883
|
case "absolute": return { vector: t.abs() };
|
|
2830
|
-
case "minimum": return { vector:
|
|
2831
|
-
case "maximum": return { vector:
|
|
2832
|
-
case "sine": return { vector:
|
|
2884
|
+
case "minimum": return { vector: F(t, n) };
|
|
2885
|
+
case "maximum": return { vector: P(t, n) };
|
|
2886
|
+
case "sine": return { vector: V(t) };
|
|
2833
2887
|
case "cosine": return { vector: E(t) };
|
|
2834
|
-
case "tangent": return { vector:
|
|
2888
|
+
case "tangent": return { vector: De(t) };
|
|
2835
2889
|
default: return { vector: t.add(n) };
|
|
2836
2890
|
}
|
|
2837
2891
|
}
|
|
2838
2892
|
};
|
|
2839
2893
|
//#endregion
|
|
2840
2894
|
//#region src/tsl/vector-rotate.ts
|
|
2841
|
-
function
|
|
2842
|
-
let i = e.sub(t), a = E(n), o =
|
|
2843
|
-
return r === 0 ? (s = i.x, c = a.mul(i.y).sub(o.mul(i.z)), l = o.mul(i.y).add(a.mul(i.z))) : r === 1 ? (c = i.y, l = a.mul(i.z).sub(o.mul(i.x)), s = o.mul(i.z).add(a.mul(i.x))) : (l = i.z, s = a.mul(i.x).sub(o.mul(i.y)), c = o.mul(i.x).add(a.mul(i.y))), t.add(
|
|
2895
|
+
function Vr(e, t, n, r) {
|
|
2896
|
+
let i = e.sub(t), a = E(n), o = V(n), s, c, l;
|
|
2897
|
+
return r === 0 ? (s = i.x, c = a.mul(i.y).sub(o.mul(i.z)), l = o.mul(i.y).add(a.mul(i.z))) : r === 1 ? (c = i.y, l = a.mul(i.z).sub(o.mul(i.x)), s = o.mul(i.z).add(a.mul(i.x))) : (l = i.z, s = a.mul(i.x).sub(o.mul(i.y)), c = o.mul(i.x).add(a.mul(i.y))), t.add(q(s, c, l));
|
|
2844
2898
|
}
|
|
2845
2899
|
//#endregion
|
|
2846
2900
|
//#region src/graph/nodes/vector/vector-rotate.ts
|
|
2847
|
-
var
|
|
2901
|
+
var Hr = [
|
|
2848
2902
|
"x",
|
|
2849
2903
|
"y",
|
|
2850
2904
|
"z"
|
|
2851
|
-
],
|
|
2905
|
+
], Ur = {
|
|
2852
2906
|
type: "vector-rotate",
|
|
2853
2907
|
nodeClass: "vector",
|
|
2854
2908
|
label: "Vector Rotate",
|
|
@@ -2874,7 +2928,7 @@ var Vr = [
|
|
|
2874
2928
|
key: "axis",
|
|
2875
2929
|
label: "axis",
|
|
2876
2930
|
type: "select",
|
|
2877
|
-
options:
|
|
2931
|
+
options: Hr,
|
|
2878
2932
|
default: "z"
|
|
2879
2933
|
}, {
|
|
2880
2934
|
key: "angle",
|
|
@@ -2886,9 +2940,9 @@ var Vr = [
|
|
|
2886
2940
|
default: 0
|
|
2887
2941
|
}],
|
|
2888
2942
|
build(e) {
|
|
2889
|
-
return { vector:
|
|
2943
|
+
return { vector: Vr(e.inputs.vector ?? e.coord, e.inputs.center ?? q(0, 0, 0), e.inputs.angle ?? e.live("angle"), Math.max(0, Hr.indexOf(e.constant("axis")))) };
|
|
2890
2944
|
}
|
|
2891
|
-
},
|
|
2945
|
+
}, Wr = 8, Gr = {
|
|
2892
2946
|
type: "normal-from-height",
|
|
2893
2947
|
nodeClass: "vector",
|
|
2894
2948
|
label: "Normal From Height",
|
|
@@ -2913,10 +2967,10 @@ var Vr = [
|
|
|
2913
2967
|
build(e) {
|
|
2914
2968
|
let t = e.inputs.height ?? k(.5);
|
|
2915
2969
|
if (e.backend === "live") return { normal: S(t, e.live("strength")) };
|
|
2916
|
-
let n = t, r =
|
|
2917
|
-
return { normal:
|
|
2970
|
+
let n = t, r = G(), i = te(n).div(te(r.x)), a = ne(n).div(ne(r.y)), o = e.live("strength"), s = K(i, a).mul(o), c = k(Wr), l = s.mul(c.div(s.length().pow(2).add(c.mul(c)).sqrt()));
|
|
2971
|
+
return { normal: me(q(l.x.negate(), l.y.negate(), k(1))).mul(.5).add(.5) };
|
|
2918
2972
|
}
|
|
2919
|
-
},
|
|
2973
|
+
}, Kr = {
|
|
2920
2974
|
type: "normal-map",
|
|
2921
2975
|
nodeClass: "vector",
|
|
2922
2976
|
label: "Normal Map",
|
|
@@ -2943,13 +2997,13 @@ var Vr = [
|
|
|
2943
2997
|
default: 1
|
|
2944
2998
|
}],
|
|
2945
2999
|
build(e) {
|
|
2946
|
-
return { normal:
|
|
3000
|
+
return { normal: fe(e.inputs.color ?? q(.5, .5, 1), e.inputs.strength ?? e.live("strength")) };
|
|
2947
3001
|
}
|
|
2948
3002
|
};
|
|
2949
3003
|
//#endregion
|
|
2950
3004
|
//#region src/tsl/blender-mapping.ts
|
|
2951
|
-
function
|
|
2952
|
-
let t = E(e.x), n = E(e.y), r = E(e.z), i =
|
|
3005
|
+
function qr(e) {
|
|
3006
|
+
let t = E(e.x), n = E(e.y), r = E(e.z), i = V(e.x), a = V(e.y), o = V(e.z), s = t.mul(r), c = t.mul(o), l = i.mul(r), u = i.mul(o);
|
|
2953
3007
|
return {
|
|
2954
3008
|
m00: n.mul(r),
|
|
2955
3009
|
m10: a.mul(l).sub(c),
|
|
@@ -2962,24 +3016,24 @@ function Kr(e) {
|
|
|
2962
3016
|
m22: n.mul(t)
|
|
2963
3017
|
};
|
|
2964
3018
|
}
|
|
2965
|
-
function qr(e, t) {
|
|
2966
|
-
return K(e.m00.mul(t.x).add(e.m10.mul(t.y)).add(e.m20.mul(t.z)), e.m01.mul(t.x).add(e.m11.mul(t.y)).add(e.m21.mul(t.z)), e.m02.mul(t.x).add(e.m12.mul(t.y)).add(e.m22.mul(t.z)));
|
|
2967
|
-
}
|
|
2968
3019
|
function Jr(e, t) {
|
|
2969
|
-
return
|
|
3020
|
+
return q(e.m00.mul(t.x).add(e.m10.mul(t.y)).add(e.m20.mul(t.z)), e.m01.mul(t.x).add(e.m11.mul(t.y)).add(e.m21.mul(t.z)), e.m02.mul(t.x).add(e.m12.mul(t.y)).add(e.m22.mul(t.z)));
|
|
3021
|
+
}
|
|
3022
|
+
function Yr(e, t) {
|
|
3023
|
+
return q(e.m00.mul(t.x).add(e.m01.mul(t.y)).add(e.m02.mul(t.z)), e.m10.mul(t.x).add(e.m11.mul(t.y)).add(e.m12.mul(t.z)), e.m20.mul(t.x).add(e.m21.mul(t.y)).add(e.m22.mul(t.z)));
|
|
2970
3024
|
}
|
|
2971
|
-
function
|
|
2972
|
-
let a =
|
|
2973
|
-
return i === 1 ?
|
|
3025
|
+
function Xr(e, t, n, r, i) {
|
|
3026
|
+
let a = qr(n);
|
|
3027
|
+
return i === 1 ? Yr(a, e.sub(t)).div(r) : i === 2 ? Jr(a, e.mul(r)) : i === 3 ? Jr(a, e.div(r)).normalize() : Jr(a, e.mul(r)).add(t);
|
|
2974
3028
|
}
|
|
2975
3029
|
//#endregion
|
|
2976
3030
|
//#region src/graph/nodes/vector/mapping.ts
|
|
2977
|
-
var
|
|
3031
|
+
var Zr = [
|
|
2978
3032
|
"point",
|
|
2979
3033
|
"texture",
|
|
2980
3034
|
"vector",
|
|
2981
3035
|
"normal"
|
|
2982
|
-
],
|
|
3036
|
+
], Qr = {
|
|
2983
3037
|
type: "mapping",
|
|
2984
3038
|
nodeClass: "vector",
|
|
2985
3039
|
label: "Mapping",
|
|
@@ -2996,7 +3050,7 @@ var Xr = [
|
|
|
2996
3050
|
key: "mappingType",
|
|
2997
3051
|
label: "type",
|
|
2998
3052
|
type: "select",
|
|
2999
|
-
options:
|
|
3053
|
+
options: Zr,
|
|
3000
3054
|
default: "point"
|
|
3001
3055
|
},
|
|
3002
3056
|
{
|
|
@@ -3031,8 +3085,8 @@ var Xr = [
|
|
|
3031
3085
|
}
|
|
3032
3086
|
],
|
|
3033
3087
|
build(e) {
|
|
3034
|
-
let t = e.inputs.vector ?? e.coord, n = Math.max(0,
|
|
3035
|
-
return { vector:
|
|
3088
|
+
let t = e.inputs.vector ?? e.coord, n = Math.max(0, Zr.indexOf(e.constant("mappingType")));
|
|
3089
|
+
return { vector: Xr(t, e.live("location"), e.live("rotation"), e.live("scale"), n) };
|
|
3036
3090
|
}
|
|
3037
3091
|
}, Z = {
|
|
3038
3092
|
baseColor: {
|
|
@@ -3110,7 +3164,7 @@ var Xr = [
|
|
|
3110
3164
|
label: "Emission Strength",
|
|
3111
3165
|
kind: "float"
|
|
3112
3166
|
}
|
|
3113
|
-
},
|
|
3167
|
+
}, $r = [
|
|
3114
3168
|
Z.baseColor,
|
|
3115
3169
|
Z.alpha,
|
|
3116
3170
|
Z.normal,
|
|
@@ -3118,27 +3172,27 @@ var Xr = [
|
|
|
3118
3172
|
Z.ambientOcclusion,
|
|
3119
3173
|
Z.emission,
|
|
3120
3174
|
Z.emissionStrength
|
|
3121
|
-
],
|
|
3175
|
+
], ei = [
|
|
3122
3176
|
Z.baseColor,
|
|
3123
3177
|
Z.alpha,
|
|
3124
3178
|
Z.normal,
|
|
3125
3179
|
Z.height
|
|
3126
|
-
],
|
|
3180
|
+
], ti = [Z.metallic, Z.roughness], ni = [
|
|
3127
3181
|
Z.ior,
|
|
3128
3182
|
Z.coat,
|
|
3129
3183
|
Z.coatRoughness,
|
|
3130
3184
|
Z.sheen,
|
|
3131
3185
|
Z.sheenRoughness,
|
|
3132
3186
|
Z.transmission
|
|
3133
|
-
],
|
|
3187
|
+
], ri = [{
|
|
3134
3188
|
key: "bsdf",
|
|
3135
3189
|
kind: "shader"
|
|
3136
|
-
}],
|
|
3190
|
+
}], ii = [
|
|
3137
3191
|
{
|
|
3138
3192
|
key: "materialType",
|
|
3139
3193
|
label: "type",
|
|
3140
3194
|
type: "select",
|
|
3141
|
-
options:
|
|
3195
|
+
options: Le,
|
|
3142
3196
|
default: "physical"
|
|
3143
3197
|
},
|
|
3144
3198
|
{
|
|
@@ -3278,9 +3332,9 @@ var Xr = [
|
|
|
3278
3332
|
options: ["default"],
|
|
3279
3333
|
default: "default"
|
|
3280
3334
|
}
|
|
3281
|
-
],
|
|
3282
|
-
function
|
|
3283
|
-
let t =
|
|
3335
|
+
], ai = Object.fromEntries(ii.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default]));
|
|
3336
|
+
function oi(e) {
|
|
3337
|
+
let t = ze(e.materialType), n = new Set([
|
|
3284
3338
|
"materialType",
|
|
3285
3339
|
"baseColor",
|
|
3286
3340
|
"alpha",
|
|
@@ -3295,46 +3349,46 @@ function ai(e) {
|
|
|
3295
3349
|
"sheenRoughness",
|
|
3296
3350
|
"transmission"
|
|
3297
3351
|
]) n.add(e);
|
|
3298
|
-
return t === "phong" && (n.add("shininess"), n.add("specular")), t === "toon" && n.add("gradientSteps"), t === "matcap" && (n.delete("emission"), n.delete("emissionStrength"), n.add("matcap")),
|
|
3352
|
+
return t === "phong" && (n.add("shininess"), n.add("specular")), t === "toon" && n.add("gradientSteps"), t === "matcap" && (n.delete("emission"), n.delete("emissionStrength"), n.add("matcap")), ii.filter((e) => n.has(e.key));
|
|
3299
3353
|
}
|
|
3300
|
-
var
|
|
3354
|
+
var si = {
|
|
3301
3355
|
type: We,
|
|
3302
3356
|
nodeClass: "shader",
|
|
3303
3357
|
label: "Material",
|
|
3304
3358
|
inputs: [
|
|
3305
|
-
|
|
3306
|
-
...
|
|
3307
|
-
...
|
|
3359
|
+
...$r,
|
|
3360
|
+
...ti,
|
|
3361
|
+
...ni
|
|
3308
3362
|
],
|
|
3309
|
-
outputs:
|
|
3310
|
-
params:
|
|
3363
|
+
outputs: ri,
|
|
3364
|
+
params: ii,
|
|
3311
3365
|
declare(e) {
|
|
3312
|
-
switch (
|
|
3366
|
+
switch (ze(e.materialType)) {
|
|
3313
3367
|
case "standard": return {
|
|
3314
|
-
inputs: [
|
|
3315
|
-
outputs:
|
|
3368
|
+
inputs: [...$r, ...ti],
|
|
3369
|
+
outputs: ri
|
|
3316
3370
|
};
|
|
3317
3371
|
case "physical": return {
|
|
3318
3372
|
inputs: [
|
|
3319
|
-
|
|
3320
|
-
...
|
|
3321
|
-
...
|
|
3373
|
+
...$r,
|
|
3374
|
+
...ti,
|
|
3375
|
+
...ni
|
|
3322
3376
|
],
|
|
3323
|
-
outputs:
|
|
3377
|
+
outputs: ri
|
|
3324
3378
|
};
|
|
3325
3379
|
case "matcap": return {
|
|
3326
|
-
inputs:
|
|
3327
|
-
outputs:
|
|
3380
|
+
inputs: ei,
|
|
3381
|
+
outputs: ri
|
|
3328
3382
|
};
|
|
3329
3383
|
default: return {
|
|
3330
|
-
inputs:
|
|
3331
|
-
outputs:
|
|
3384
|
+
inputs: $r,
|
|
3385
|
+
outputs: ri
|
|
3332
3386
|
};
|
|
3333
3387
|
}
|
|
3334
3388
|
},
|
|
3335
|
-
paramsFor:
|
|
3389
|
+
paramsFor: oi,
|
|
3336
3390
|
build(e) {
|
|
3337
|
-
let t = ze
|
|
3391
|
+
let t = Re[ze(e.constant("materialType"))], n = (t) => e.inputs[t] ?? e.live(t), r = (t) => Number(e.constant(t) ?? ai[t] ?? 0), i = (t) => e.inputs[t] === void 0 ? r(t) > 0 ? e.live(t) : void 0 : e.inputs[t], a = e.inputs.emission !== void 0 || e.inputs.emissionStrength !== void 0 || (e.constant("emission") ?? "#000000") !== "#000000", o = t.emissive && a ? (e.inputs.emission ?? e.live("emission")).mul(e.inputs.emissionStrength ?? e.live("emissionStrength")) : void 0, s = {
|
|
3338
3392
|
baseColor: n("baseColor"),
|
|
3339
3393
|
normal: e.inputs.normal,
|
|
3340
3394
|
height: e.inputs.height,
|
|
@@ -3347,7 +3401,7 @@ var oi = {
|
|
|
3347
3401
|
}
|
|
3348
3402
|
return { bsdf: s };
|
|
3349
3403
|
}
|
|
3350
|
-
},
|
|
3404
|
+
}, ci = [
|
|
3351
3405
|
{
|
|
3352
3406
|
key: "baseColor",
|
|
3353
3407
|
label: "base color",
|
|
@@ -3452,7 +3506,7 @@ var oi = {
|
|
|
3452
3506
|
step: .1,
|
|
3453
3507
|
default: 1
|
|
3454
3508
|
}
|
|
3455
|
-
],
|
|
3509
|
+
], li = Object.fromEntries(ci.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default])), ui = {
|
|
3456
3510
|
type: "principled-bsdf",
|
|
3457
3511
|
nodeClass: "shader",
|
|
3458
3512
|
label: "Principled BSDF",
|
|
@@ -3537,9 +3591,9 @@ var oi = {
|
|
|
3537
3591
|
key: "bsdf",
|
|
3538
3592
|
kind: "shader"
|
|
3539
3593
|
}],
|
|
3540
|
-
params:
|
|
3594
|
+
params: ci,
|
|
3541
3595
|
build(e) {
|
|
3542
|
-
let t = (t) => e.inputs[t] ?? e.live(t), n = (t) => Number(e.constant(t) ??
|
|
3596
|
+
let t = (t) => e.inputs[t] ?? e.live(t), n = (t) => Number(e.constant(t) ?? li[t] ?? 0), r = (t) => e.inputs[t] === void 0 ? n(t) > 0 ? e.live(t) : void 0 : e.inputs[t], i = e.inputs.emission !== void 0 || e.inputs.emissionStrength !== void 0 || (e.constant("emission") ?? "#000000") !== "#000000" ? (e.inputs.emission ?? e.live("emission")).mul(e.inputs.emissionStrength ?? e.live("emissionStrength")) : void 0, a = r("coat"), o = r("sheen");
|
|
3543
3597
|
return { bsdf: {
|
|
3544
3598
|
baseColor: t("baseColor"),
|
|
3545
3599
|
metallic: t("metallic"),
|
|
@@ -3557,7 +3611,7 @@ var oi = {
|
|
|
3557
3611
|
transmission: r("transmission")
|
|
3558
3612
|
} };
|
|
3559
3613
|
}
|
|
3560
|
-
},
|
|
3614
|
+
}, di = {
|
|
3561
3615
|
type: "emission",
|
|
3562
3616
|
nodeClass: "shader",
|
|
3563
3617
|
label: "Emission",
|
|
@@ -3591,20 +3645,20 @@ var oi = {
|
|
|
3591
3645
|
build(e) {
|
|
3592
3646
|
let t = e.inputs.color ?? e.live("color"), n = e.inputs.strength ?? e.live("strength");
|
|
3593
3647
|
return { bsdf: {
|
|
3594
|
-
baseColor:
|
|
3648
|
+
baseColor: q(0),
|
|
3595
3649
|
roughness: k(1),
|
|
3596
3650
|
metallic: k(0),
|
|
3597
3651
|
emission: t.mul(n)
|
|
3598
3652
|
} };
|
|
3599
3653
|
}
|
|
3600
|
-
},
|
|
3601
|
-
emission:
|
|
3654
|
+
}, fi = {
|
|
3655
|
+
emission: q(0, 0, 0),
|
|
3602
3656
|
ambientOcclusion: k(1),
|
|
3603
3657
|
alpha: k(1),
|
|
3604
3658
|
coat: k(0),
|
|
3605
3659
|
sheen: k(0),
|
|
3606
3660
|
transmission: k(0)
|
|
3607
|
-
},
|
|
3661
|
+
}, pi = [
|
|
3608
3662
|
"baseColor",
|
|
3609
3663
|
"metallic",
|
|
3610
3664
|
"roughness",
|
|
@@ -3619,21 +3673,21 @@ var oi = {
|
|
|
3619
3673
|
"sheenRoughness",
|
|
3620
3674
|
"transmission"
|
|
3621
3675
|
];
|
|
3622
|
-
function
|
|
3676
|
+
function mi(e, t, n) {
|
|
3623
3677
|
let r = {};
|
|
3624
|
-
for (let i of
|
|
3678
|
+
for (let i of pi) {
|
|
3625
3679
|
let a = e[i], o = t[i];
|
|
3626
3680
|
if (a === void 0 && o === void 0) continue;
|
|
3627
3681
|
if (a !== void 0 && o !== void 0) {
|
|
3628
|
-
r[i] =
|
|
3682
|
+
r[i] = I(a, o, n);
|
|
3629
3683
|
continue;
|
|
3630
3684
|
}
|
|
3631
|
-
let s =
|
|
3632
|
-
s === void 0 ? r[i] = a ?? o : r[i] = a === void 0 ?
|
|
3685
|
+
let s = fi[i];
|
|
3686
|
+
s === void 0 ? r[i] = a ?? o : r[i] = a === void 0 ? I(s, o, n) : I(a, s, n);
|
|
3633
3687
|
}
|
|
3634
3688
|
return r;
|
|
3635
3689
|
}
|
|
3636
|
-
var
|
|
3690
|
+
var hi = {
|
|
3637
3691
|
type: "mix-shader",
|
|
3638
3692
|
nodeClass: "shader",
|
|
3639
3693
|
label: "Mix Shader",
|
|
@@ -3668,9 +3722,9 @@ var mi = {
|
|
|
3668
3722
|
default: .5
|
|
3669
3723
|
}],
|
|
3670
3724
|
build(e) {
|
|
3671
|
-
return { shader:
|
|
3725
|
+
return { shader: mi(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.live("fac")) };
|
|
3672
3726
|
}
|
|
3673
|
-
},
|
|
3727
|
+
}, gi = {
|
|
3674
3728
|
type: "material-output",
|
|
3675
3729
|
nodeClass: "output",
|
|
3676
3730
|
label: "Material Output",
|
|
@@ -3697,7 +3751,7 @@ var mi = {
|
|
|
3697
3751
|
build() {
|
|
3698
3752
|
return {};
|
|
3699
3753
|
}
|
|
3700
|
-
},
|
|
3754
|
+
}, _i = {
|
|
3701
3755
|
type: "group",
|
|
3702
3756
|
nodeClass: "group",
|
|
3703
3757
|
label: "Group",
|
|
@@ -3707,7 +3761,7 @@ var mi = {
|
|
|
3707
3761
|
build() {
|
|
3708
3762
|
return {};
|
|
3709
3763
|
}
|
|
3710
|
-
},
|
|
3764
|
+
}, vi = {
|
|
3711
3765
|
type: "group-input",
|
|
3712
3766
|
nodeClass: "input",
|
|
3713
3767
|
label: "Group Input",
|
|
@@ -3717,7 +3771,7 @@ var mi = {
|
|
|
3717
3771
|
build() {
|
|
3718
3772
|
return {};
|
|
3719
3773
|
}
|
|
3720
|
-
},
|
|
3774
|
+
}, yi = {
|
|
3721
3775
|
type: "group-output",
|
|
3722
3776
|
nodeClass: "output",
|
|
3723
3777
|
label: "Group Output",
|
|
@@ -3738,11 +3792,11 @@ function Q(e, t) {
|
|
|
3738
3792
|
outputs: n.outputs
|
|
3739
3793
|
};
|
|
3740
3794
|
}
|
|
3741
|
-
function
|
|
3795
|
+
function bi(e, t) {
|
|
3742
3796
|
let n = t.get(e.type);
|
|
3743
3797
|
return n.paramsFor ? n.paramsFor(e.params) : n.params;
|
|
3744
3798
|
}
|
|
3745
|
-
var
|
|
3799
|
+
var xi = class {
|
|
3746
3800
|
defs = /* @__PURE__ */ new Map();
|
|
3747
3801
|
register(e) {
|
|
3748
3802
|
if (this.defs.has(e.type)) throw Error(`Duplicate node type: ${e.type}`);
|
|
@@ -3760,25 +3814,25 @@ var bi = class {
|
|
|
3760
3814
|
return [...this.defs.values()];
|
|
3761
3815
|
}
|
|
3762
3816
|
};
|
|
3763
|
-
function
|
|
3764
|
-
return new
|
|
3817
|
+
function Si() {
|
|
3818
|
+
return new xi().register(it).register(at).register(Bt).register(Xt).register(Zt).register(kn).register(An).register(Pn).register(Ln).register(Vn).register(Gn).register(nr).register(ir).register(ur).register(mr).register(hr).register(gr).register(_r).register(vr).register(yr).register(Cr).register(Dr).register(Or).register(kr).register(Ar).register(jr).register(Mr).register(Nr).register(Pr).register(Fr).register(Ir).register(Br).register(Ur).register(Gr).register(Kr).register(Qr).register(si).register(ui).register(di).register(hi).register(gi).register(_i).register(vi).register(yi);
|
|
3765
3819
|
}
|
|
3766
|
-
var
|
|
3767
|
-
function
|
|
3768
|
-
let n = Math.max(2, Math.min(5, Math.round(t ?? 3))), r =
|
|
3820
|
+
var Ci = Si(), wi = /* @__PURE__ */ new Map();
|
|
3821
|
+
function Ti(t) {
|
|
3822
|
+
let n = Math.max(2, Math.min(5, Math.round(t ?? 3))), r = wi.get(n);
|
|
3769
3823
|
if (r) return r;
|
|
3770
3824
|
let i = new Uint8Array(n);
|
|
3771
3825
|
for (let e = 0; e < n; e++) i[e] = Math.round(e / (n - 1) * 255);
|
|
3772
3826
|
let a = new e.DataTexture(i, n, 1, e.RedFormat);
|
|
3773
|
-
return a.minFilter = e.NearestFilter, a.magFilter = e.NearestFilter, a.needsUpdate = !0,
|
|
3827
|
+
return a.minFilter = e.NearestFilter, a.magFilter = e.NearestFilter, a.needsUpdate = !0, wi.set(n, a), a;
|
|
3774
3828
|
}
|
|
3775
|
-
function
|
|
3829
|
+
function Ei(e) {
|
|
3776
3830
|
return null;
|
|
3777
3831
|
}
|
|
3778
3832
|
//#endregion
|
|
3779
3833
|
//#region src/graph/compiler.ts
|
|
3780
|
-
var
|
|
3781
|
-
function
|
|
3834
|
+
var Di = 2048;
|
|
3835
|
+
function Oi(e, t, n) {
|
|
3782
3836
|
let r = new Map(t.nodes.map((e) => [e.id, e])), i = /* @__PURE__ */ new Set(), a = [e];
|
|
3783
3837
|
for (; a.length;) {
|
|
3784
3838
|
let e = a.pop();
|
|
@@ -3792,11 +3846,11 @@ function Di(e, t, n) {
|
|
|
3792
3846
|
}
|
|
3793
3847
|
return !1;
|
|
3794
3848
|
}
|
|
3795
|
-
function
|
|
3849
|
+
function ki(e, t) {
|
|
3796
3850
|
let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map(), o = (e) => {
|
|
3797
3851
|
let t = a.get(e);
|
|
3798
3852
|
return t || (t = new Map(e.nodes.map((e) => [e.id, e])), a.set(e, t)), t;
|
|
3799
|
-
}, s = (e) => e.nodes.find((e) => e.type ===
|
|
3853
|
+
}, s = (e) => e.nodes.find((e) => e.type === Ve)?.id, c = (e, t, r, i) => {
|
|
3800
3854
|
if (t === s(e)) {
|
|
3801
3855
|
i(r);
|
|
3802
3856
|
return;
|
|
@@ -3820,7 +3874,7 @@ function Oi(e, t) {
|
|
|
3820
3874
|
i.add(a);
|
|
3821
3875
|
let o = e.subgraph;
|
|
3822
3876
|
if (!o) return;
|
|
3823
|
-
let s = o.nodes.find((e) => e.type ===
|
|
3877
|
+
let s = o.nodes.find((e) => e.type === He), l = s && o.edges.find((e) => e.toNode === s.id && e.toInput === t);
|
|
3824
3878
|
l && c(o, l.fromNode, l.fromOutput, (t) => {
|
|
3825
3879
|
for (let i of n.edges) i.toNode === e.id && i.toInput === t && c(n, i.fromNode, i.fromOutput, r);
|
|
3826
3880
|
});
|
|
@@ -3831,19 +3885,19 @@ function Oi(e, t) {
|
|
|
3831
3885
|
};
|
|
3832
3886
|
return d(e, () => {}), n;
|
|
3833
3887
|
}
|
|
3834
|
-
function ki(e, t) {
|
|
3835
|
-
return t === "float" ? K(e) : e;
|
|
3836
|
-
}
|
|
3837
3888
|
function Ai(e, t) {
|
|
3838
|
-
|
|
3889
|
+
return t === "float" ? q(e) : e;
|
|
3890
|
+
}
|
|
3891
|
+
function ji(e, t) {
|
|
3892
|
+
let n = U(e, G());
|
|
3839
3893
|
return t === "float" ? n.r : n.xyz;
|
|
3840
3894
|
}
|
|
3841
|
-
function
|
|
3842
|
-
let t = e.nodes.find((e) => e.type ===
|
|
3895
|
+
function Mi(e) {
|
|
3896
|
+
let t = e.nodes.find((e) => e.type === Ue)?.params?.outputResolution, n = typeof t == "string" ? Number(t) : typeof t == "number" ? t : NaN;
|
|
3843
3897
|
return Number.isFinite(n) && n > 0 ? n : 1024;
|
|
3844
3898
|
}
|
|
3845
|
-
function
|
|
3846
|
-
let t = e.nodes.find((e) => e.type ===
|
|
3899
|
+
function Ni(e) {
|
|
3900
|
+
let t = e.nodes.find((e) => e.type === Ue), n = t && e.edges.find((e) => e.toNode === t.id && e.toInput === "surface"), r = n && e.nodes.find((e) => e.id === n.fromNode);
|
|
3847
3901
|
if (!r || r.type !== "shader-material") return {
|
|
3848
3902
|
type: "physical",
|
|
3849
3903
|
settings: {}
|
|
@@ -3853,7 +3907,7 @@ function Mi(e) {
|
|
|
3853
3907
|
return Number.isFinite(n) ? n : t;
|
|
3854
3908
|
};
|
|
3855
3909
|
return {
|
|
3856
|
-
type:
|
|
3910
|
+
type: ze(i.materialType),
|
|
3857
3911
|
settings: {
|
|
3858
3912
|
shininess: a(i.shininess, 30),
|
|
3859
3913
|
specular: typeof i.specular == "string" ? i.specular : "#111111",
|
|
@@ -3862,13 +3916,13 @@ function Mi(e) {
|
|
|
3862
3916
|
}
|
|
3863
3917
|
};
|
|
3864
3918
|
}
|
|
3865
|
-
function
|
|
3866
|
-
let t = e.nodes.find((e) => e.type ===
|
|
3919
|
+
function Pi(e) {
|
|
3920
|
+
let t = e.nodes.find((e) => e.type === Ue), n = t && e.edges.find((e) => e.toNode === t.id && e.toInput === "surface"), r = n && e.nodes.find((e) => e.id === n.fromNode), i = r && r.type === "shader-material" ? r.params : {}, a = (e, t) => {
|
|
3867
3921
|
let n = Number(e);
|
|
3868
3922
|
return Number.isFinite(n) ? n : t;
|
|
3869
3923
|
}, o = (e, t) => typeof e == "string" ? e : t;
|
|
3870
3924
|
return {
|
|
3871
|
-
type:
|
|
3925
|
+
type: ze(i.materialType),
|
|
3872
3926
|
baseColor: o(i.baseColor, "#cccccc"),
|
|
3873
3927
|
metallic: a(i.metallic, 0),
|
|
3874
3928
|
roughness: a(i.roughness, .5),
|
|
@@ -3887,14 +3941,14 @@ function Ni(e) {
|
|
|
3887
3941
|
matcap: o(i.matcap, "default")
|
|
3888
3942
|
};
|
|
3889
3943
|
}
|
|
3890
|
-
function
|
|
3944
|
+
function Fi(e, t, n) {
|
|
3891
3945
|
if (n.backend === "live" || !n.allocCache || !t.bakeTileable) return 1;
|
|
3892
3946
|
let r = e.params.tileSize, i = typeof r == "string" && r !== "off" ? Number(r) : NaN;
|
|
3893
3947
|
if (!Number.isFinite(i) || i <= 0) return 1;
|
|
3894
3948
|
let a = n.outputResolution ?? 1024, o = Math.max(1, Math.round(Number(e.params.scale) || 1));
|
|
3895
3949
|
return Math.max(1, Math.min(Math.round(a / i), o));
|
|
3896
3950
|
}
|
|
3897
|
-
function
|
|
3951
|
+
function Ii(e, t, n, r, i, a) {
|
|
3898
3952
|
if (r.backend === "live" || !r.allocCache || !t.bakeTileable || n.vector !== void 0 || n.field === void 0) return;
|
|
3899
3953
|
let o = e.params.tileSize, s = typeof o == "string" && o !== "off" ? Number(o) : NaN;
|
|
3900
3954
|
if (!Number.isFinite(s) || s <= 0) return;
|
|
@@ -3902,37 +3956,37 @@ function Fi(e, t, n, r, i, a) {
|
|
|
3902
3956
|
return i.push({
|
|
3903
3957
|
cacheId: c,
|
|
3904
3958
|
kind: "float",
|
|
3905
|
-
colorNode:
|
|
3959
|
+
colorNode: Ai(n.field, "float"),
|
|
3906
3960
|
sizing: { size: s }
|
|
3907
|
-
}), { field:
|
|
3961
|
+
}), { field: U(l, G().mul(k(a))).r };
|
|
3908
3962
|
}
|
|
3909
|
-
function
|
|
3963
|
+
function Li(e) {
|
|
3910
3964
|
let t = 0;
|
|
3911
|
-
for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t +=
|
|
3965
|
+
for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t += Li(n.subgraph));
|
|
3912
3966
|
return t;
|
|
3913
3967
|
}
|
|
3914
|
-
function
|
|
3968
|
+
function Ri(e, t, n) {
|
|
3915
3969
|
let r = {
|
|
3916
3970
|
...n,
|
|
3917
|
-
outputResolution: n.outputResolution ??
|
|
3918
|
-
}, i = r.backend === "live" ?
|
|
3971
|
+
outputResolution: n.outputResolution ?? Mi(e)
|
|
3972
|
+
}, i = r.backend === "live" ? _e : q(G().x, G().y, k(0)), a = r.soloNodeId ? { id: r.soloNodeId } : void 0, o = [], { outputs: s, uniforms: c, usage: l } = Bi(e, t, r, i, o, r.allocCache ? ki(e, t) : /* @__PURE__ */ new Set(), void 0, a);
|
|
3919
3973
|
return {
|
|
3920
|
-
bundle: a && a.value !== void 0 && a.kind && a.kind !== "shader" ?
|
|
3974
|
+
bundle: a && a.value !== void 0 && a.kind && a.kind !== "shader" ? zi(a.value, a.kind) : Zi(e, t, s),
|
|
3921
3975
|
uniforms: c,
|
|
3922
3976
|
cachePlan: o,
|
|
3923
3977
|
paramUsage: l
|
|
3924
3978
|
};
|
|
3925
3979
|
}
|
|
3926
|
-
function
|
|
3980
|
+
function zi(e, t) {
|
|
3927
3981
|
return {
|
|
3928
|
-
baseColor: t === "float" ?
|
|
3982
|
+
baseColor: t === "float" ? q(e) : e,
|
|
3929
3983
|
roughness: k(1),
|
|
3930
3984
|
metallic: k(0)
|
|
3931
3985
|
};
|
|
3932
3986
|
}
|
|
3933
|
-
function
|
|
3934
|
-
|
|
3935
|
-
let c =
|
|
3987
|
+
function Bi(e, t, n, r, i, a, o, s) {
|
|
3988
|
+
$i(e, t, o !== void 0);
|
|
3989
|
+
let c = Qi(e), l = new Map(e.nodes.map((e) => [e.id, e])), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map();
|
|
3936
3990
|
for (let p of c) {
|
|
3937
3991
|
let c = l.get(p);
|
|
3938
3992
|
if (!c) continue;
|
|
@@ -3944,16 +3998,16 @@ function zi(e, t, n, r, i, a, o, s) {
|
|
|
3944
3998
|
continue;
|
|
3945
3999
|
}
|
|
3946
4000
|
if (c.type === "group") {
|
|
3947
|
-
let o =
|
|
4001
|
+
let o = Hi(c, t, n, r, i, a, qi(c, e, u, l, t), s);
|
|
3948
4002
|
u.set(p, o.outputs);
|
|
3949
4003
|
for (let [e, t] of o.uniforms) d.set(e, t);
|
|
3950
4004
|
for (let [e, t] of o.usage) f.set(e, t);
|
|
3951
4005
|
continue;
|
|
3952
4006
|
}
|
|
3953
|
-
let h =
|
|
4007
|
+
let h = qi(c, e, u, l, t), g = t.get(c.type), _ = Xi(g, c);
|
|
3954
4008
|
d.set(p, _);
|
|
3955
|
-
let v =
|
|
3956
|
-
u.set(p,
|
|
4009
|
+
let v = Fi(c, g, n), y = Vi(p, c, g, h, _, r, n, v, f), b = g.build(y);
|
|
4010
|
+
u.set(p, Ii(c, g, b, n, i, v) ?? b);
|
|
3957
4011
|
}
|
|
3958
4012
|
if (s && s.value === void 0) {
|
|
3959
4013
|
let e = l.get(s.id), n = e ? Q(e, t).outputs[0] : void 0;
|
|
@@ -3965,7 +4019,7 @@ function zi(e, t, n, r, i, a, o, s) {
|
|
|
3965
4019
|
usage: f
|
|
3966
4020
|
};
|
|
3967
4021
|
}
|
|
3968
|
-
function
|
|
4022
|
+
function Vi(t, n, r, i, a, o, s, c, l) {
|
|
3969
4023
|
let u = {};
|
|
3970
4024
|
l.set(t, u);
|
|
3971
4025
|
let d = n.params, f = (e) => r.params.find((t) => t.key === e)?.default;
|
|
@@ -3987,20 +4041,20 @@ function Bi(t, n, r, i, a, o, s, c, l) {
|
|
|
3987
4041
|
if (i === "vec3") {
|
|
3988
4042
|
let t = [];
|
|
3989
4043
|
for (let n = 0; n < a.length; n += 3) t.push(new e.Vector3(a[n], a[n + 1], a[n + 2]));
|
|
3990
|
-
return
|
|
4044
|
+
return je(t);
|
|
3991
4045
|
}
|
|
3992
|
-
return
|
|
4046
|
+
return je(Array.from(a), "float");
|
|
3993
4047
|
}
|
|
3994
4048
|
};
|
|
3995
4049
|
}
|
|
3996
|
-
function
|
|
4050
|
+
function Hi(e, t, n, r, i, a, o, s) {
|
|
3997
4051
|
let c = e.subgraph;
|
|
3998
4052
|
if (!c) return {
|
|
3999
4053
|
outputs: {},
|
|
4000
4054
|
uniforms: /* @__PURE__ */ new Map(),
|
|
4001
4055
|
usage: /* @__PURE__ */ new Map()
|
|
4002
4056
|
};
|
|
4003
|
-
let { outputs: l, uniforms: u, usage: d } =
|
|
4057
|
+
let { outputs: l, uniforms: u, usage: d } = Bi(c, t, n, r, i, a, o, s), f = c.nodes.find((e) => e.type === He), p = {};
|
|
4004
4058
|
if (!f) return {
|
|
4005
4059
|
outputs: p,
|
|
4006
4060
|
uniforms: u,
|
|
@@ -4008,15 +4062,15 @@ function Vi(e, t, n, r, i, a, o, s) {
|
|
|
4008
4062
|
};
|
|
4009
4063
|
let m = new Map(c.nodes.map((e) => [e.id, e]));
|
|
4010
4064
|
for (let r of Q(f, t).inputs) {
|
|
4011
|
-
let o = c.edges.find((e) => e.toNode === f.id && e.toInput === r.key), u = o ?
|
|
4065
|
+
let o = c.edges.find((e) => e.toNode === f.id && e.toInput === r.key), u = o ? Ji(o, r.kind, l, m, t) : void 0;
|
|
4012
4066
|
if (n.allocCache && u !== void 0 && r.kind !== "shader" && !s) {
|
|
4013
|
-
let s = `${e.id}/${r.key}`, l = o &&
|
|
4067
|
+
let s = `${e.id}/${r.key}`, l = o && Oi(o.fromNode, c, t) || a.has(s) ? { minSize: Di } : void 0, d = n.allocCache(s, r.kind, l);
|
|
4014
4068
|
i.push({
|
|
4015
4069
|
cacheId: s,
|
|
4016
4070
|
kind: r.kind,
|
|
4017
|
-
colorNode:
|
|
4071
|
+
colorNode: Ai(u, r.kind),
|
|
4018
4072
|
sizing: l
|
|
4019
|
-
}), p[r.key] =
|
|
4073
|
+
}), p[r.key] = ji(d, r.kind);
|
|
4020
4074
|
} else p[r.key] = u;
|
|
4021
4075
|
}
|
|
4022
4076
|
return {
|
|
@@ -4025,110 +4079,110 @@ function Vi(e, t, n, r, i, a, o, s) {
|
|
|
4025
4079
|
usage: d
|
|
4026
4080
|
};
|
|
4027
4081
|
}
|
|
4028
|
-
var
|
|
4082
|
+
var Ui = {
|
|
4029
4083
|
side: e.DoubleSide,
|
|
4030
4084
|
polygonOffset: !0,
|
|
4031
4085
|
polygonOffsetFactor: 1,
|
|
4032
4086
|
polygonOffsetUnits: 1
|
|
4033
4087
|
};
|
|
4034
|
-
function
|
|
4088
|
+
function Wi(t = "physical", n = {}) {
|
|
4035
4089
|
switch (t) {
|
|
4036
4090
|
case "standard": return new d({
|
|
4037
4091
|
metalness: 0,
|
|
4038
4092
|
roughness: .9,
|
|
4039
|
-
...
|
|
4093
|
+
...Ui
|
|
4040
4094
|
});
|
|
4041
|
-
case "lambert": return new s({ ...
|
|
4095
|
+
case "lambert": return new s({ ...Ui });
|
|
4042
4096
|
case "phong": return new l({
|
|
4043
4097
|
shininess: n.shininess ?? 30,
|
|
4044
4098
|
specular: new e.Color(n.specular ?? "#111111"),
|
|
4045
|
-
...
|
|
4099
|
+
...Ui
|
|
4046
4100
|
});
|
|
4047
4101
|
case "toon": return new f({
|
|
4048
|
-
gradientMap:
|
|
4049
|
-
...
|
|
4102
|
+
gradientMap: Ti(n.gradientSteps),
|
|
4103
|
+
...Ui
|
|
4050
4104
|
});
|
|
4051
4105
|
case "matcap": return new c({
|
|
4052
|
-
matcap:
|
|
4053
|
-
...
|
|
4106
|
+
matcap: Ei(n.matcap),
|
|
4107
|
+
...Ui
|
|
4054
4108
|
});
|
|
4055
4109
|
default: return new u({
|
|
4056
4110
|
metalness: 0,
|
|
4057
4111
|
roughness: .9,
|
|
4058
|
-
...
|
|
4112
|
+
...Ui
|
|
4059
4113
|
});
|
|
4060
4114
|
}
|
|
4061
4115
|
}
|
|
4062
|
-
function
|
|
4063
|
-
let r =
|
|
4116
|
+
function Gi(e, t, n) {
|
|
4117
|
+
let r = Re[n], i = e;
|
|
4064
4118
|
if (t.baseColor && (i.colorNode = t.baseColor), t.normal && (i.normalNode = t.normal), t.alpha && (i.opacityNode = t.alpha, i.transparent = !0), r.ao) {
|
|
4065
4119
|
let e = b("vertexAo", "float");
|
|
4066
4120
|
i.aoNode = t.ambientOcclusion ? t.ambientOcclusion.mul(e) : e;
|
|
4067
4121
|
}
|
|
4068
4122
|
r.emissive && t.emission && (i.emissiveNode = t.emission), r.roughMetal && (t.roughness && (i.roughnessNode = t.roughness), t.metallic && (i.metalnessNode = t.metallic)), r.physicalLobes && (t.ior && (i.iorNode = t.ior), t.coat && (i.clearcoatNode = t.coat), t.coatRoughness && (i.clearcoatRoughnessNode = t.coatRoughness), t.sheen && (i.sheenNode = t.sheen), t.sheenRoughness && (i.sheenRoughnessNode = t.sheenRoughness), t.transmission && (i.transmissionNode = t.transmission));
|
|
4069
4123
|
}
|
|
4070
|
-
function
|
|
4071
|
-
let { bundle: r, uniforms: i } =
|
|
4072
|
-
return
|
|
4124
|
+
function Ki(e, t, n) {
|
|
4125
|
+
let { bundle: r, uniforms: i } = Ri(e, t, n), { type: a, settings: o } = Ni(e), s = Wi(a, o);
|
|
4126
|
+
return Gi(s, r, a), {
|
|
4073
4127
|
material: s,
|
|
4074
4128
|
uniforms: i
|
|
4075
4129
|
};
|
|
4076
4130
|
}
|
|
4077
|
-
function
|
|
4131
|
+
function qi(e, t, n, r, i) {
|
|
4078
4132
|
let a = {};
|
|
4079
4133
|
for (let o of Q(e, i).inputs) {
|
|
4080
4134
|
let s = t.edges.find((t) => t.toNode === e.id && t.toInput === o.key);
|
|
4081
|
-
a[o.key] = s ?
|
|
4135
|
+
a[o.key] = s ? Ji(s, o.kind, n, r, i) : void 0;
|
|
4082
4136
|
}
|
|
4083
4137
|
return a;
|
|
4084
4138
|
}
|
|
4085
|
-
function
|
|
4139
|
+
function Ji(e, t, n, r, i) {
|
|
4086
4140
|
let a = n.get(e.fromNode)?.[e.fromOutput];
|
|
4087
4141
|
if (a === void 0) return;
|
|
4088
4142
|
let o = r.get(e.fromNode), s = o ? Q(o, i).outputs.find((t) => t.key === e.fromOutput)?.kind : void 0;
|
|
4089
4143
|
if (s && s !== t) {
|
|
4090
4144
|
let e = qe(s, t);
|
|
4091
|
-
e && (a =
|
|
4145
|
+
e && (a = Yi(a, e));
|
|
4092
4146
|
}
|
|
4093
4147
|
return a;
|
|
4094
4148
|
}
|
|
4095
|
-
function
|
|
4149
|
+
function Yi(e, t) {
|
|
4096
4150
|
switch (t) {
|
|
4097
4151
|
case "float-to-vector":
|
|
4098
|
-
case "float-to-color": return
|
|
4152
|
+
case "float-to-color": return q(e);
|
|
4099
4153
|
case "vector-to-float": return e.x.add(e.y).add(e.z).div(3);
|
|
4100
|
-
case "color-to-float": return
|
|
4154
|
+
case "color-to-float": return ue(e);
|
|
4101
4155
|
case "identity":
|
|
4102
4156
|
case "vector-to-color":
|
|
4103
4157
|
case "color-to-vector": return e;
|
|
4104
4158
|
}
|
|
4105
4159
|
}
|
|
4106
|
-
function
|
|
4160
|
+
function Xi(t, n) {
|
|
4107
4161
|
let r = {};
|
|
4108
4162
|
for (let i of t.params) {
|
|
4109
4163
|
let t = n.params[i.key] ?? i.default;
|
|
4110
|
-
if (i.type === "color") r[i.key] =
|
|
4164
|
+
if (i.type === "color") r[i.key] = Ae(new e.Color(t));
|
|
4111
4165
|
else if (i.type === "vec3") {
|
|
4112
4166
|
let n = t ?? {
|
|
4113
4167
|
x: 0,
|
|
4114
4168
|
y: 0,
|
|
4115
4169
|
z: 0
|
|
4116
4170
|
};
|
|
4117
|
-
r[i.key] =
|
|
4171
|
+
r[i.key] = Ae(new e.Vector3(n.x, n.y, n.z));
|
|
4118
4172
|
} else if (i.type === "float" || i.type === "int") {
|
|
4119
4173
|
let e = Number(t);
|
|
4120
|
-
r[i.key] =
|
|
4121
|
-
} else i.type === "curve" && (r[i.key] =
|
|
4174
|
+
r[i.key] = Ae(Number.isFinite(e) ? e : Number(i.default) || 0);
|
|
4175
|
+
} else i.type === "curve" && (r[i.key] = je(Ie(t), "float"));
|
|
4122
4176
|
}
|
|
4123
4177
|
return r;
|
|
4124
4178
|
}
|
|
4125
|
-
function
|
|
4126
|
-
let r = e.nodes.find((e) => e.type ===
|
|
4179
|
+
function Zi(e, t, n) {
|
|
4180
|
+
let r = e.nodes.find((e) => e.type === Ue);
|
|
4127
4181
|
if (!r) return {};
|
|
4128
4182
|
let i = e.edges.find((e) => e.toNode === r.id && e.toInput === "surface");
|
|
4129
|
-
return i ?
|
|
4183
|
+
return i ? Ji(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
|
|
4130
4184
|
}
|
|
4131
|
-
function
|
|
4185
|
+
function Qi(e) {
|
|
4132
4186
|
let t = /* @__PURE__ */ new Map();
|
|
4133
4187
|
for (let n of e.nodes) t.set(n.id, 0);
|
|
4134
4188
|
let n = /* @__PURE__ */ new Map();
|
|
@@ -4145,8 +4199,8 @@ function Zi(e) {
|
|
|
4145
4199
|
if (i.length !== e.nodes.length) throw Error("Material graph has a cycle");
|
|
4146
4200
|
return i;
|
|
4147
4201
|
}
|
|
4148
|
-
function
|
|
4149
|
-
let r = n ?
|
|
4202
|
+
function $i(e, t, n = !1) {
|
|
4203
|
+
let r = n ? He : Ue, i = e.nodes.filter((e) => e.type === r);
|
|
4150
4204
|
if (i.length !== 1) throw Error(`Expected exactly one ${r} node, found ${i.length}`);
|
|
4151
4205
|
let a = new Map(e.nodes.map((e) => [e.id, e])), o = /* @__PURE__ */ new Set();
|
|
4152
4206
|
for (let n of e.edges) {
|
|
@@ -4164,54 +4218,54 @@ function Qi(e, t, n = !1) {
|
|
|
4164
4218
|
}
|
|
4165
4219
|
//#endregion
|
|
4166
4220
|
//#region src/document.ts
|
|
4167
|
-
var
|
|
4168
|
-
function
|
|
4221
|
+
var ea = 4;
|
|
4222
|
+
function ta(e) {
|
|
4169
4223
|
return structuredClone(e);
|
|
4170
4224
|
}
|
|
4171
|
-
function
|
|
4172
|
-
return
|
|
4225
|
+
function na() {
|
|
4226
|
+
return ta(Ne);
|
|
4173
4227
|
}
|
|
4174
|
-
function
|
|
4228
|
+
function ra(e) {
|
|
4175
4229
|
for (let t of e.nodes) t.type === "principled-bsdf" && (t.type = We, t.params = {
|
|
4176
4230
|
...t.params,
|
|
4177
4231
|
materialType: "physical"
|
|
4178
|
-
}), t.subgraph &&
|
|
4232
|
+
}), t.subgraph && ra(t.subgraph);
|
|
4179
4233
|
}
|
|
4180
|
-
var
|
|
4234
|
+
var ia = new Set([
|
|
4181
4235
|
"curl",
|
|
4182
4236
|
"paper",
|
|
4183
4237
|
"wool",
|
|
4184
4238
|
"stone",
|
|
4185
4239
|
"erosion"
|
|
4186
4240
|
]);
|
|
4187
|
-
function
|
|
4188
|
-
for (let t of e.nodes) t.type === "tileable-noise" &&
|
|
4241
|
+
function aa(e) {
|
|
4242
|
+
for (let t of e.nodes) t.type === "tileable-noise" && ia.has(t.params.noiseType) && (t.params = {
|
|
4189
4243
|
...t.params,
|
|
4190
4244
|
preset: t.params.noiseType,
|
|
4191
4245
|
noiseType: "perlin-fbm"
|
|
4192
|
-
}), t.subgraph &&
|
|
4246
|
+
}), t.subgraph && aa(t.subgraph);
|
|
4193
4247
|
}
|
|
4194
|
-
function
|
|
4195
|
-
let t =
|
|
4196
|
-
return (e.version ?? 0) < 3 &&
|
|
4248
|
+
function oa(e) {
|
|
4249
|
+
let t = ta(e);
|
|
4250
|
+
return (e.version ?? 0) < 3 && ra(t), (e.version ?? 0) < 4 && aa(t), t.version = 4, t;
|
|
4197
4251
|
}
|
|
4198
|
-
function
|
|
4252
|
+
function sa(e, t) {
|
|
4199
4253
|
return e.nodes.find((e) => e.id === t);
|
|
4200
4254
|
}
|
|
4201
|
-
function
|
|
4255
|
+
function ca(e, t) {
|
|
4202
4256
|
return e.find((e) => e.key === t);
|
|
4203
4257
|
}
|
|
4204
|
-
function
|
|
4258
|
+
function la(e) {
|
|
4205
4259
|
return e.structural ? "structural" : e.type === "float" || e.type === "color" || e.type === "vec3" || e.type === "curve" ? "param" : "structural";
|
|
4206
4260
|
}
|
|
4207
|
-
var
|
|
4261
|
+
var ua = class {
|
|
4208
4262
|
registry;
|
|
4209
4263
|
doc;
|
|
4210
4264
|
listeners = /* @__PURE__ */ new Set();
|
|
4211
4265
|
lastError_ = null;
|
|
4212
4266
|
soloNode_ = null;
|
|
4213
|
-
constructor(e =
|
|
4214
|
-
this.registry = t, this.doc =
|
|
4267
|
+
constructor(e = na(), t = Ci) {
|
|
4268
|
+
this.registry = t, this.doc = oa(e), this.validate(this.doc);
|
|
4215
4269
|
}
|
|
4216
4270
|
get document() {
|
|
4217
4271
|
return this.doc;
|
|
@@ -4227,7 +4281,7 @@ var la = class {
|
|
|
4227
4281
|
}
|
|
4228
4282
|
compileBundle(e) {
|
|
4229
4283
|
try {
|
|
4230
|
-
let t =
|
|
4284
|
+
let t = Ri(this.doc, this.registry, e);
|
|
4231
4285
|
return this.lastError_ = null, t;
|
|
4232
4286
|
} catch (e) {
|
|
4233
4287
|
throw this.lastError_ = e instanceof Error ? e.message : String(e), e;
|
|
@@ -4237,17 +4291,17 @@ var la = class {
|
|
|
4237
4291
|
return this.listeners.add(e), () => this.listeners.delete(e);
|
|
4238
4292
|
}
|
|
4239
4293
|
setDocument(e) {
|
|
4240
|
-
let t =
|
|
4294
|
+
let t = oa(e);
|
|
4241
4295
|
this.validate(t), this.doc = t, this.emit({ kind: "structural" });
|
|
4242
4296
|
}
|
|
4243
4297
|
getDocument() {
|
|
4244
|
-
return
|
|
4298
|
+
return ta(this.doc);
|
|
4245
4299
|
}
|
|
4246
4300
|
setSoloNode(e) {
|
|
4247
4301
|
e !== this.soloNode_ && (this.soloNode_ = e, this.emit({ kind: "structural" }));
|
|
4248
4302
|
}
|
|
4249
4303
|
setOutputResolution(e) {
|
|
4250
|
-
let t = this.doc.nodes.find((e) => e.type ===
|
|
4304
|
+
let t = this.doc.nodes.find((e) => e.type === Ue);
|
|
4251
4305
|
if (!t) return;
|
|
4252
4306
|
let n = String(e);
|
|
4253
4307
|
t.params.outputResolution !== n && (t.params.outputResolution = n, this.emit({ kind: "structural" }));
|
|
@@ -4256,10 +4310,10 @@ var la = class {
|
|
|
4256
4310
|
this.setOutputResolution(e.resolution ?? e.size ?? 1024);
|
|
4257
4311
|
}
|
|
4258
4312
|
setNodeParam(e, t, n) {
|
|
4259
|
-
let r =
|
|
4313
|
+
let r = sa(this.doc, e);
|
|
4260
4314
|
if (!r) return !1;
|
|
4261
|
-
let i = this.registry.get(r.type), a =
|
|
4262
|
-
return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n,
|
|
4315
|
+
let i = this.registry.get(r.type), a = ca(bi(r, this.registry), t) ?? ca(i.params, t);
|
|
4316
|
+
return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n, la(a) === "param" ? this.emit({
|
|
4263
4317
|
kind: "param",
|
|
4264
4318
|
nodeId: e,
|
|
4265
4319
|
key: t,
|
|
@@ -4274,30 +4328,33 @@ var la = class {
|
|
|
4274
4328
|
return n;
|
|
4275
4329
|
}
|
|
4276
4330
|
validate(e) {
|
|
4277
|
-
|
|
4331
|
+
Ri(e, this.registry, { backend: "live" }), this.lastError_ = null;
|
|
4278
4332
|
}
|
|
4279
4333
|
emit(e) {
|
|
4280
4334
|
for (let t of this.listeners) t(e);
|
|
4281
4335
|
}
|
|
4282
|
-
},
|
|
4336
|
+
}, da = [
|
|
4283
4337
|
"roughness",
|
|
4284
4338
|
"metallic",
|
|
4285
4339
|
"ambientOcclusion"
|
|
4286
|
-
],
|
|
4287
|
-
function
|
|
4288
|
-
return
|
|
4340
|
+
], fa = ["baseColor", "emission"];
|
|
4341
|
+
function pa(e, t) {
|
|
4342
|
+
return da.includes(t) ? q(e) : fa.includes(t) ? xe(e) : e;
|
|
4289
4343
|
}
|
|
4290
|
-
var $ = 2,
|
|
4344
|
+
var $ = 2, ma = new p(new o());
|
|
4291
4345
|
function ha(e, t, n) {
|
|
4292
|
-
let r = ($ - 1) / 2, i =
|
|
4346
|
+
let r = ($ - 1) / 2, i = q(0, 0, 0);
|
|
4293
4347
|
for (let a = 0; a < $; a++) for (let o = 0; o < $; o++) {
|
|
4294
|
-
let s =
|
|
4348
|
+
let s = K(o - r, a - r).mul(t), c = U(e, G().add(s)).xyz;
|
|
4295
4349
|
n && (c = c.mul(2).sub(1)), i = i.add(c);
|
|
4296
4350
|
}
|
|
4297
|
-
return i = i.div($ * $), n ?
|
|
4351
|
+
return i = i.div($ * $), n ? me(i).mul(.5).add(.5) : i;
|
|
4298
4352
|
}
|
|
4299
4353
|
var ga = /* @__PURE__ */ new Map();
|
|
4300
|
-
function _a(
|
|
4354
|
+
function _a() {
|
|
4355
|
+
return [...ga.keys()];
|
|
4356
|
+
}
|
|
4357
|
+
function va(e, r) {
|
|
4301
4358
|
let a = `${e}x${r}`, s = ga.get(a);
|
|
4302
4359
|
if (s) return s;
|
|
4303
4360
|
let c = new m(e, r, {
|
|
@@ -4305,7 +4362,7 @@ function _a(e, r) {
|
|
|
4305
4362
|
stencilBuffer: !1
|
|
4306
4363
|
});
|
|
4307
4364
|
c.texture.colorSpace = n, c.texture.minFilter = c.texture.magFilter = t, c.texture.wrapS = c.texture.wrapT = i;
|
|
4308
|
-
let l =
|
|
4365
|
+
let l = K(1 / e, 1 / r), u = (e) => {
|
|
4309
4366
|
let t = new o();
|
|
4310
4367
|
return t.colorNode = ha(c.texture, l, e), new p(t);
|
|
4311
4368
|
}, d = {
|
|
@@ -4315,42 +4372,65 @@ function _a(e, r) {
|
|
|
4315
4372
|
};
|
|
4316
4373
|
return ga.set(a, d), d;
|
|
4317
4374
|
}
|
|
4318
|
-
function
|
|
4375
|
+
function ya() {
|
|
4319
4376
|
return new o();
|
|
4320
4377
|
}
|
|
4321
|
-
var
|
|
4322
|
-
async function
|
|
4323
|
-
for (;
|
|
4324
|
-
|
|
4325
|
-
for (let e = 0; e < t.length; e++)
|
|
4378
|
+
var ba = new a(), xa = new r(-1, 1, 1, -1, 0, 1), Sa = [];
|
|
4379
|
+
async function Ca(e, t, n) {
|
|
4380
|
+
for (; Sa.length < t.length;) Sa.push(new p());
|
|
4381
|
+
ba.clear();
|
|
4382
|
+
for (let e = 0; e < t.length; e++) Sa[e].material = t[e], ba.add(Sa[e]);
|
|
4326
4383
|
let r = e.getRenderTarget();
|
|
4327
|
-
e.setRenderTarget(
|
|
4384
|
+
e.setRenderTarget(va(n * $, n * $).ssRT), await e.compileAsync(ba, xa), e.setRenderTarget(r);
|
|
4328
4385
|
}
|
|
4329
|
-
function
|
|
4330
|
-
|
|
4386
|
+
function wa(e, t, n) {
|
|
4387
|
+
ma.material = t;
|
|
4331
4388
|
let r = e.getRenderTarget();
|
|
4332
|
-
e.setRenderTarget(n),
|
|
4389
|
+
e.setRenderTarget(n), ma.render(e), e.setRenderTarget(r);
|
|
4333
4390
|
}
|
|
4334
|
-
function
|
|
4335
|
-
let { ssRT: i, downColorQuad: a, downNormalQuad: o } =
|
|
4336
|
-
|
|
4391
|
+
function Ta(e, t, n, r = !1) {
|
|
4392
|
+
let { ssRT: i, downColorQuad: a, downNormalQuad: o } = va(n.width * $, n.height * $);
|
|
4393
|
+
ma.material = t;
|
|
4337
4394
|
let s = e.getRenderTarget();
|
|
4338
|
-
e.setRenderTarget(i),
|
|
4395
|
+
e.setRenderTarget(i), ma.render(e), e.setRenderTarget(n), (r ? o : a).render(e), e.setRenderTarget(s);
|
|
4339
4396
|
}
|
|
4340
|
-
function
|
|
4341
|
-
|
|
4397
|
+
function Ea(e, t, n, r = !1) {
|
|
4398
|
+
let i = new o();
|
|
4399
|
+
i.colorNode = t, i.needsUpdate = !0, Ta(e, i, n, r), i.dispose();
|
|
4400
|
+
}
|
|
4401
|
+
//#endregion
|
|
4402
|
+
//#region src/graph/node-profiler.ts
|
|
4403
|
+
function Da(e, t, n) {
|
|
4404
|
+
let r = n && n.length ? new Set(n) : null;
|
|
4405
|
+
return e.nodes.filter((e) => {
|
|
4406
|
+
if (e.enabled === !1 || r && !r.has(e.id)) return !1;
|
|
4407
|
+
let n = t.has(e.type) ? t.get(e.type) : null;
|
|
4408
|
+
return n ? n.nodeClass !== "shader" && n.nodeClass !== "output" : !1;
|
|
4409
|
+
});
|
|
4410
|
+
}
|
|
4411
|
+
function Oa(e) {
|
|
4412
|
+
if (!e.length) return 0;
|
|
4413
|
+
let t = [...e].sort((e, t) => e - t), n = t.length >> 1;
|
|
4414
|
+
return t.length % 2 ? t[n] : (t[n - 1] + t[n]) / 2;
|
|
4415
|
+
}
|
|
4416
|
+
function ka(e, t, n) {
|
|
4417
|
+
let r = new Map(e.map((e) => [e.nodeId, e]));
|
|
4418
|
+
for (let i of e) {
|
|
4419
|
+
let e = t.edges.filter((e) => e.toNode === i.nodeId).map((e) => r.get(e.fromNode)?.renderMs).filter((e) => e !== void 0), a = e.length ? Math.max(...e) : n;
|
|
4420
|
+
i.marginalMs = Math.max(0, i.renderMs - a);
|
|
4421
|
+
}
|
|
4342
4422
|
}
|
|
4343
4423
|
//#endregion
|
|
4344
4424
|
//#region src/graph/bake-service.ts
|
|
4345
|
-
var
|
|
4346
|
-
function
|
|
4425
|
+
var Aa = 1024, ja = 8, Ma = 4096;
|
|
4426
|
+
function Na(e, t) {
|
|
4347
4427
|
let n = t?.size ?? Math.max(e, t?.minSize ?? 0);
|
|
4348
|
-
return Math.min(n,
|
|
4428
|
+
return Math.min(n, Ma);
|
|
4349
4429
|
}
|
|
4350
|
-
function
|
|
4430
|
+
function Pa(e) {
|
|
4351
4431
|
return e?.minSize != null;
|
|
4352
4432
|
}
|
|
4353
|
-
var
|
|
4433
|
+
var Fa = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator.userAgent) && !/firefox|fxios/i.test(navigator.userAgent), Ia = [
|
|
4354
4434
|
"baseColor",
|
|
4355
4435
|
"roughness",
|
|
4356
4436
|
"metallic",
|
|
@@ -4358,14 +4438,14 @@ var ja = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator
|
|
|
4358
4438
|
"normal",
|
|
4359
4439
|
"emission"
|
|
4360
4440
|
];
|
|
4361
|
-
function
|
|
4441
|
+
function La(t, n) {
|
|
4362
4442
|
let r = new m(n, n, {
|
|
4363
4443
|
depthBuffer: !1,
|
|
4364
4444
|
stencilBuffer: !1
|
|
4365
4445
|
}), i = r.texture;
|
|
4366
|
-
return i.colorSpace = t !== "height" &&
|
|
4446
|
+
return i.colorSpace = t !== "height" && fa.includes(t) ? e.SRGBColorSpace : e.NoColorSpace, i.wrapS = i.wrapT = e.RepeatWrapping, i.generateMipmaps = !0, i.minFilter = e.LinearMipmapLinearFilter, i.magFilter = e.LinearFilter, i.anisotropy = ja, r;
|
|
4367
4447
|
}
|
|
4368
|
-
function
|
|
4448
|
+
function Ra(t, n = !1) {
|
|
4369
4449
|
let r = new m(t, t, {
|
|
4370
4450
|
type: e.HalfFloatType,
|
|
4371
4451
|
depthBuffer: !1,
|
|
@@ -4373,7 +4453,7 @@ function Pa(t, n = !1) {
|
|
|
4373
4453
|
}), i = r.texture;
|
|
4374
4454
|
return i.colorSpace = e.NoColorSpace, i.wrapS = i.wrapT = e.RepeatWrapping, i.generateMipmaps = n, i.minFilter = n ? e.LinearMipmapLinearFilter : e.LinearFilter, i.magFilter = e.LinearFilter, r;
|
|
4375
4455
|
}
|
|
4376
|
-
var
|
|
4456
|
+
var za = class {
|
|
4377
4457
|
channels;
|
|
4378
4458
|
targets = /* @__PURE__ */ new Map();
|
|
4379
4459
|
mats = /* @__PURE__ */ new Map();
|
|
@@ -4400,19 +4480,19 @@ var Fa = class {
|
|
|
4400
4480
|
}
|
|
4401
4481
|
target(e) {
|
|
4402
4482
|
let t = this.targets.get(e);
|
|
4403
|
-
return t || (t =
|
|
4483
|
+
return t || (t = La(e, this.size), this.targets.set(e, t)), t;
|
|
4404
4484
|
}
|
|
4405
4485
|
channelMaterial(e) {
|
|
4406
4486
|
let t = this.mats.get(e);
|
|
4407
|
-
return t || (t =
|
|
4487
|
+
return t || (t = ya(), this.mats.set(e, t)), t;
|
|
4408
4488
|
}
|
|
4409
4489
|
cacheTarget(e, t = this.size, n = !1) {
|
|
4410
4490
|
let r = this.cacheTargets.get(e);
|
|
4411
|
-
return r && r.texture.generateMipmaps !== n && (r.dispose(), this.cacheTargets.delete(e), r = void 0), r ? (r.width !== t || r.height !== t) && r.setSize(t, t) : (r =
|
|
4491
|
+
return r && r.texture.generateMipmaps !== n && (r.dispose(), this.cacheTargets.delete(e), r = void 0), r ? (r.width !== t || r.height !== t) && r.setSize(t, t) : (r = Ra(t, n), this.cacheTargets.set(e, r)), r;
|
|
4412
4492
|
}
|
|
4413
4493
|
cacheMaterial(e) {
|
|
4414
4494
|
let t = this.cacheMats.get(e);
|
|
4415
|
-
return t || (t =
|
|
4495
|
+
return t || (t = ya(), this.cacheMats.set(e, t)), t;
|
|
4416
4496
|
}
|
|
4417
4497
|
cacheTexture(e, t, n = !1) {
|
|
4418
4498
|
return this.cacheTarget(e, t, n).texture;
|
|
@@ -4426,7 +4506,7 @@ var Fa = class {
|
|
|
4426
4506
|
return this.heightTarget;
|
|
4427
4507
|
}
|
|
4428
4508
|
ensureHeightTarget() {
|
|
4429
|
-
return this.heightTarget ||=
|
|
4509
|
+
return this.heightTarget ||= La("height", this.size), this.heightTarget;
|
|
4430
4510
|
}
|
|
4431
4511
|
texture(e) {
|
|
4432
4512
|
return this.targets.get(e)?.texture ?? null;
|
|
@@ -4448,14 +4528,24 @@ var Fa = class {
|
|
|
4448
4528
|
if (i === "vec3") {
|
|
4449
4529
|
let t = [];
|
|
4450
4530
|
for (let n = 0; n < r.length; n += 3) t.push(new e.Vector3(r[n], r[n + 1], r[n + 2]));
|
|
4451
|
-
s =
|
|
4452
|
-
} else s =
|
|
4531
|
+
s = je(t);
|
|
4532
|
+
} else s = je(Array.from(r), "float");
|
|
4453
4533
|
return this.constArrays.set(a, {
|
|
4454
4534
|
node: s,
|
|
4455
4535
|
length: r.length,
|
|
4456
4536
|
elementType: i
|
|
4457
4537
|
}), s;
|
|
4458
4538
|
}
|
|
4539
|
+
debugCounts() {
|
|
4540
|
+
return {
|
|
4541
|
+
channelTargets: this.targets.size,
|
|
4542
|
+
channelMats: this.mats.size,
|
|
4543
|
+
cacheTargets: this.cacheTargets.size,
|
|
4544
|
+
cacheMats: this.cacheMats.size,
|
|
4545
|
+
constArrays: this.constArrays.size,
|
|
4546
|
+
heightTarget: +!!this.heightTarget
|
|
4547
|
+
};
|
|
4548
|
+
}
|
|
4459
4549
|
flushCaches() {
|
|
4460
4550
|
for (let e of this.mats.values()) e.dispose();
|
|
4461
4551
|
this.mats.clear();
|
|
@@ -4474,7 +4564,7 @@ var Fa = class {
|
|
|
4474
4564
|
for (let e of this.cacheMats.values()) e.dispose();
|
|
4475
4565
|
this.cacheMats.clear(), this.cachePlan = [], this.uniforms = /* @__PURE__ */ new Map(), this.paramUsage = /* @__PURE__ */ new Map(), this.constArrays.clear(), this.heightTarget?.dispose(), this.heightTarget = null;
|
|
4476
4566
|
}
|
|
4477
|
-
},
|
|
4567
|
+
}, Ba = class {
|
|
4478
4568
|
renderer = null;
|
|
4479
4569
|
compileGateDepth = 0;
|
|
4480
4570
|
get rendererBusy() {
|
|
@@ -4526,8 +4616,8 @@ var Fa = class {
|
|
|
4526
4616
|
});
|
|
4527
4617
|
return this.queue = n.then(() => void 0, () => void 0), n;
|
|
4528
4618
|
}
|
|
4529
|
-
createTextureSet(e =
|
|
4530
|
-
return new
|
|
4619
|
+
createTextureSet(e = Ia, t = Aa) {
|
|
4620
|
+
return new za(t, e);
|
|
4531
4621
|
}
|
|
4532
4622
|
bakeInto(e, t, n = {}) {
|
|
4533
4623
|
return this.enqueue(n.label ?? "surface", async () => {
|
|
@@ -4536,16 +4626,16 @@ var Fa = class {
|
|
|
4536
4626
|
let i = performance.now(), { bundle: a, uniforms: o, cachePlan: s, paramUsage: c } = t.compileBundle({
|
|
4537
4627
|
backend: "offline",
|
|
4538
4628
|
soloNodeId: n.soloNodeId,
|
|
4539
|
-
allocCache: (t, n, r) => e.cacheTexture(t,
|
|
4629
|
+
allocCache: (t, n, r) => e.cacheTexture(t, Na(e.size, r), Pa(r)),
|
|
4540
4630
|
allocConstantArray: (t, n, r, i) => e.allocConstantArray(t, n, r, i)
|
|
4541
|
-
}), l = performance.now() - i, u =
|
|
4631
|
+
}), l = performance.now() - i, u = Li(t.document);
|
|
4542
4632
|
e.uniforms = o, e.paramUsage = c, e.cachePlan = s, n.soloNodeId || e.pruneCaches(new Set(s.map((e) => e.cacheId)));
|
|
4543
4633
|
let d = n.channels ?? e.channels, f = /* @__PURE__ */ new Set(), p = [];
|
|
4544
4634
|
for (let t of d) {
|
|
4545
4635
|
let n = a[t];
|
|
4546
4636
|
if (!n) continue;
|
|
4547
4637
|
let r = e.channelMaterial(t);
|
|
4548
|
-
r.colorNode =
|
|
4638
|
+
r.colorNode = pa(n, t), r.needsUpdate = !0, p.push({
|
|
4549
4639
|
mat: r,
|
|
4550
4640
|
target: e.target(t),
|
|
4551
4641
|
isNormal: t === "normal"
|
|
@@ -4553,7 +4643,7 @@ var Fa = class {
|
|
|
4553
4643
|
}
|
|
4554
4644
|
if (e.hasHeight = a.height !== void 0, e.hasHeight) {
|
|
4555
4645
|
let t = e.channelMaterial("height");
|
|
4556
|
-
t.colorNode =
|
|
4646
|
+
t.colorNode = q(a.height), t.needsUpdate = !0, p.push({
|
|
4557
4647
|
mat: t,
|
|
4558
4648
|
target: e.ensureHeightTarget(),
|
|
4559
4649
|
isNormal: !1
|
|
@@ -4571,10 +4661,10 @@ var Fa = class {
|
|
|
4571
4661
|
this.emitReport(m);
|
|
4572
4662
|
for (let t of s) {
|
|
4573
4663
|
let n = e.cacheMaterial(t.cacheId);
|
|
4574
|
-
n.colorNode = t.colorNode, n.needsUpdate = !0,
|
|
4664
|
+
n.colorNode = t.colorNode, n.needsUpdate = !0, wa(r, n, e.cacheTarget(t.cacheId, Na(e.size, t.sizing), Pa(t.sizing)));
|
|
4575
4665
|
}
|
|
4576
4666
|
let h = 0;
|
|
4577
|
-
if (
|
|
4667
|
+
if (Fa) {
|
|
4578
4668
|
this.emitReport({
|
|
4579
4669
|
...m,
|
|
4580
4670
|
phase: "shaders"
|
|
@@ -4582,18 +4672,18 @@ var Fa = class {
|
|
|
4582
4672
|
let t = performance.now();
|
|
4583
4673
|
this.compileGateDepth += 1;
|
|
4584
4674
|
try {
|
|
4585
|
-
await
|
|
4675
|
+
await Ca(r, p.map((e) => e.mat), e.size);
|
|
4586
4676
|
} finally {
|
|
4587
4677
|
--this.compileGateDepth;
|
|
4588
4678
|
}
|
|
4589
4679
|
h = performance.now() - t;
|
|
4590
4680
|
}
|
|
4591
4681
|
let g = performance.now();
|
|
4592
|
-
for (let e of p)
|
|
4682
|
+
for (let e of p) Ta(r, e.mat, e.target, e.isNormal);
|
|
4593
4683
|
let _ = performance.now() - g, v = [...f].sort().join(",") + (e.hasHeight ? "|h" : ""), y = v !== e.signature;
|
|
4594
4684
|
e.present = f, e.signature = v;
|
|
4595
4685
|
let b = performance.now();
|
|
4596
|
-
await this.gpuSync(e);
|
|
4686
|
+
await this.gpuSync(e.firstTarget());
|
|
4597
4687
|
let x = performance.now() - b, S = l + h + _ + x;
|
|
4598
4688
|
return this.emitReport({
|
|
4599
4689
|
...m,
|
|
@@ -4610,8 +4700,7 @@ var Fa = class {
|
|
|
4610
4700
|
await n.onSubmittedWorkDone();
|
|
4611
4701
|
return;
|
|
4612
4702
|
}
|
|
4613
|
-
|
|
4614
|
-
r && await t.readRenderTargetPixelsAsync(r, 0, 0, 1, 1);
|
|
4703
|
+
e && await t.readRenderTargetPixelsAsync(e, 0, 0, 1, 1);
|
|
4615
4704
|
}
|
|
4616
4705
|
rerenderInto(e, t) {
|
|
4617
4706
|
let n = this.queue.then(async () => {
|
|
@@ -4628,11 +4717,11 @@ var Fa = class {
|
|
|
4628
4717
|
};
|
|
4629
4718
|
this.emitReport(i);
|
|
4630
4719
|
let a = performance.now();
|
|
4631
|
-
for (let t of e.cachePlan)
|
|
4632
|
-
for (let t of e.present)
|
|
4633
|
-
e.hasHeight && e.heightTarget &&
|
|
4720
|
+
for (let t of e.cachePlan) wa(n, e.cacheMaterial(t.cacheId), e.cacheTarget(t.cacheId, Na(e.size, t.sizing), Pa(t.sizing)));
|
|
4721
|
+
for (let t of e.present) Ta(n, e.channelMaterial(t), e.target(t), t === "normal");
|
|
4722
|
+
e.hasHeight && e.heightTarget && Ta(n, e.channelMaterial("height"), e.heightTarget, !1);
|
|
4634
4723
|
let o = performance.now() - a, s = performance.now();
|
|
4635
|
-
await this.gpuSync(e);
|
|
4724
|
+
await this.gpuSync(e.firstTarget());
|
|
4636
4725
|
let c = performance.now() - s;
|
|
4637
4726
|
this.emitReport({
|
|
4638
4727
|
...i,
|
|
@@ -4652,17 +4741,17 @@ var Fa = class {
|
|
|
4652
4741
|
if (!r) return null;
|
|
4653
4742
|
let { bundle: i, cachePlan: a } = e.compileBundle({
|
|
4654
4743
|
backend: "offline",
|
|
4655
|
-
allocCache: (e, t, r) => this.scratchCache(e, n,
|
|
4744
|
+
allocCache: (e, t, r) => this.scratchCache(e, n, Na(n, r), Pa(r)).rt.texture
|
|
4656
4745
|
}), o = i[t];
|
|
4657
4746
|
if (!o) return null;
|
|
4658
4747
|
let s = new Set(a.map((e) => e.cacheId));
|
|
4659
4748
|
for (let [e, t] of this.scratchCaches) s.has(e) || (t.rt.dispose(), t.mat.dispose(), this.scratchCaches.delete(e));
|
|
4660
4749
|
for (let e of a) {
|
|
4661
|
-
let t = this.scratchCache(e.cacheId, n,
|
|
4662
|
-
t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0,
|
|
4750
|
+
let t = this.scratchCache(e.cacheId, n, Na(n, e.sizing), Pa(e.sizing));
|
|
4751
|
+
t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0, wa(r, t.mat, t.rt);
|
|
4663
4752
|
}
|
|
4664
4753
|
let c = this.scratchTarget(n);
|
|
4665
|
-
|
|
4754
|
+
Ea(r, pa(o, t), c, t === "normal");
|
|
4666
4755
|
let l = await r.readRenderTargetPixelsAsync(c, 0, 0, n, n), u = new Uint8ClampedArray(n * n * 4), d = n * 4;
|
|
4667
4756
|
for (let e = 0; e < n; e++) {
|
|
4668
4757
|
let t = (n - 1 - e) * d;
|
|
@@ -4671,12 +4760,79 @@ var Fa = class {
|
|
|
4671
4760
|
return new ImageData(u, n, n);
|
|
4672
4761
|
});
|
|
4673
4762
|
}
|
|
4763
|
+
gpuInfo() {
|
|
4764
|
+
let e = this.renderer?.info;
|
|
4765
|
+
return {
|
|
4766
|
+
rendererTextures: e?.memory?.textures ?? -1,
|
|
4767
|
+
rendererGeometries: e?.memory?.geometries ?? -1,
|
|
4768
|
+
scratchTarget: this.scratch ? `${this.scratchSize}px` : "none",
|
|
4769
|
+
scratchCaches: this.scratchCaches.size,
|
|
4770
|
+
ssPool: _a()
|
|
4771
|
+
};
|
|
4772
|
+
}
|
|
4674
4773
|
scratchTarget(e) {
|
|
4675
4774
|
return (!this.scratch || this.scratchSize !== e) && (this.scratch?.dispose(), this.scratch = new m(e, e, {
|
|
4676
4775
|
depthBuffer: !1,
|
|
4677
4776
|
stencilBuffer: !1
|
|
4678
4777
|
}), this.scratchSize = e), this.scratch;
|
|
4679
4778
|
}
|
|
4779
|
+
profileNodes(e, t = {}) {
|
|
4780
|
+
let n = Math.max(64, Math.min(2048, t.size ?? 512)), r = Math.max(1, Math.min(32, t.runs ?? 6));
|
|
4781
|
+
return this.enqueue("profile", async () => {
|
|
4782
|
+
let i = this.renderer, a = {
|
|
4783
|
+
size: n,
|
|
4784
|
+
runs: r,
|
|
4785
|
+
overheadMs: 0,
|
|
4786
|
+
nodes: []
|
|
4787
|
+
};
|
|
4788
|
+
if (!i) return a;
|
|
4789
|
+
let o = this.scratchTarget(n), s = e.document, c = async (e) => {
|
|
4790
|
+
let t = performance.now();
|
|
4791
|
+
wa(i, e, o), await this.gpuSync(o);
|
|
4792
|
+
let n = performance.now() - t, a = [];
|
|
4793
|
+
for (let t = 0; t < r; t++) {
|
|
4794
|
+
let t = performance.now();
|
|
4795
|
+
wa(i, e, o), await this.gpuSync(o), a.push(performance.now() - t);
|
|
4796
|
+
}
|
|
4797
|
+
return {
|
|
4798
|
+
pipelineMs: n,
|
|
4799
|
+
renderMs: Oa(a)
|
|
4800
|
+
};
|
|
4801
|
+
}, l = ya();
|
|
4802
|
+
l.colorNode = q(.5, .5, .5), l.needsUpdate = !0, a.overheadMs = (await c(l)).renderMs, l.dispose();
|
|
4803
|
+
for (let n of Da(s, e.getRegistry(), t.nodeIds)) {
|
|
4804
|
+
let t = {
|
|
4805
|
+
nodeId: n.id,
|
|
4806
|
+
type: n.type,
|
|
4807
|
+
label: n.label,
|
|
4808
|
+
pipelineMs: 0,
|
|
4809
|
+
renderMs: 0,
|
|
4810
|
+
marginalMs: 0
|
|
4811
|
+
};
|
|
4812
|
+
a.nodes.push(t);
|
|
4813
|
+
let r;
|
|
4814
|
+
try {
|
|
4815
|
+
let { bundle: t } = e.compileBundle({
|
|
4816
|
+
backend: "offline",
|
|
4817
|
+
soloNodeId: n.id
|
|
4818
|
+
});
|
|
4819
|
+
r = t.baseColor;
|
|
4820
|
+
} catch (e) {
|
|
4821
|
+
t.error = e instanceof Error ? e.message : String(e);
|
|
4822
|
+
continue;
|
|
4823
|
+
}
|
|
4824
|
+
if (!r) {
|
|
4825
|
+
t.error = "no solo output";
|
|
4826
|
+
continue;
|
|
4827
|
+
}
|
|
4828
|
+
let i = ya();
|
|
4829
|
+
i.colorNode = r, i.needsUpdate = !0;
|
|
4830
|
+
let o = await c(i);
|
|
4831
|
+
i.dispose(), t.pipelineMs = o.pipelineMs, t.renderMs = o.renderMs;
|
|
4832
|
+
}
|
|
4833
|
+
return ka(a.nodes, s, a.overheadMs), a.nodes.sort((e, t) => t.renderMs - e.renderMs), a;
|
|
4834
|
+
});
|
|
4835
|
+
}
|
|
4680
4836
|
scratchCache(e, t, n, r = !1) {
|
|
4681
4837
|
if (this.scratchCacheSize !== t) {
|
|
4682
4838
|
for (let e of this.scratchCaches.values()) e.rt.dispose(), e.mat.dispose();
|
|
@@ -4684,48 +4840,48 @@ var Fa = class {
|
|
|
4684
4840
|
}
|
|
4685
4841
|
let i = this.scratchCaches.get(e);
|
|
4686
4842
|
return i && i.rt.texture.generateMipmaps !== r && (i.rt.dispose(), i.mat.dispose(), this.scratchCaches.delete(e), i = void 0), i ? (i.rt.width !== n || i.rt.height !== n) && i.rt.setSize(n, n) : (i = {
|
|
4687
|
-
rt:
|
|
4688
|
-
mat:
|
|
4843
|
+
rt: Ra(n, r),
|
|
4844
|
+
mat: ya()
|
|
4689
4845
|
}, this.scratchCaches.set(e, i)), i;
|
|
4690
4846
|
}
|
|
4691
|
-
},
|
|
4847
|
+
}, Va = new Ba();
|
|
4692
4848
|
//#endregion
|
|
4693
4849
|
//#region src/tsl/triplanar.ts
|
|
4694
|
-
function
|
|
4695
|
-
let t =
|
|
4696
|
-
return t.div(t.dot(
|
|
4850
|
+
function Ha(e) {
|
|
4851
|
+
let t = z(pe.abs(), e);
|
|
4852
|
+
return t.div(t.dot(q(1, 1, 1)).max(1e-4));
|
|
4697
4853
|
}
|
|
4698
|
-
function
|
|
4854
|
+
function Ua(e, t, n) {
|
|
4699
4855
|
return h(() => {
|
|
4700
|
-
let r =
|
|
4856
|
+
let r = _e.mul(t), i = Ha(n), a = U(e, r.yz).mul(i.x), o = U(e, r.zx).mul(i.y), s = U(e, r.xy).mul(i.z);
|
|
4701
4857
|
return a.add(o).add(s);
|
|
4702
4858
|
})();
|
|
4703
4859
|
}
|
|
4704
4860
|
//#endregion
|
|
4705
4861
|
//#region src/tsl/triplanar-normal.ts
|
|
4706
|
-
function
|
|
4862
|
+
function Wa(e, t, n) {
|
|
4707
4863
|
return h(() => {
|
|
4708
|
-
let r =
|
|
4864
|
+
let r = _e.mul(t), i = Ha(n), a = pe.sign(), o = U(e, r.yz).xyz.mul(2).sub(1), s = U(e, r.zx).xyz.mul(2).sub(1), c = U(e, r.xy).xyz.mul(2).sub(1), l = q(o.x, o.y, o.z.mul(a.x)), u = q(s.x, s.y, s.z.mul(a.y)), d = q(c.x, c.y, c.z.mul(a.z));
|
|
4709
4865
|
return l.zxy.mul(i.x).add(u.yzx.mul(i.y)).add(d.xyz.mul(i.z)).normalize();
|
|
4710
4866
|
})();
|
|
4711
4867
|
}
|
|
4712
4868
|
//#endregion
|
|
4713
4869
|
//#region src/tsl/parallax.ts
|
|
4714
|
-
var
|
|
4715
|
-
function
|
|
4870
|
+
var Ga = .3;
|
|
4871
|
+
function Ka(e, t, n, r) {
|
|
4716
4872
|
return h(() => {
|
|
4717
|
-
let i =
|
|
4873
|
+
let i = he.normalize(), a = (t) => U(e, t).x, o = 1 / r, s = i.xy.div(i.z.abs().max(Ga)).mul(n).mul(o), c = t.toVar(), l = x(!1).toVar(), u = t, d = k(1).sub(a(u));
|
|
4718
4874
|
for (let e = 0; e < r; e++) {
|
|
4719
|
-
let t = u.sub(s), n = k(1).sub(a(t)), r = (e + 1) * o, i = k(r).greaterThanEqual(n), f = n.sub(r), p = d.sub(e * o), m =
|
|
4720
|
-
c.assign(
|
|
4875
|
+
let t = u.sub(s), n = k(1).sub(a(t)), r = (e + 1) * o, i = k(r).greaterThanEqual(n), f = n.sub(r), p = d.sub(e * o), m = Se(f.div(f.sub(p).max(1e-5))), h = I(t, u, m);
|
|
4876
|
+
c.assign(B(l.not().and(i), h, c)), l.assign(l.or(i)), u = t, d = n;
|
|
4721
4877
|
}
|
|
4722
4878
|
return c;
|
|
4723
4879
|
})();
|
|
4724
4880
|
}
|
|
4725
4881
|
//#endregion
|
|
4726
4882
|
//#region src/graph/textured-surface.ts
|
|
4727
|
-
var
|
|
4728
|
-
function
|
|
4883
|
+
var qa = 12;
|
|
4884
|
+
function Ja(e, t) {
|
|
4729
4885
|
return [
|
|
4730
4886
|
e,
|
|
4731
4887
|
t.shininess,
|
|
@@ -4734,21 +4890,18 @@ function Wa(e, t) {
|
|
|
4734
4890
|
t.matcap
|
|
4735
4891
|
].join("|");
|
|
4736
4892
|
}
|
|
4737
|
-
var
|
|
4893
|
+
var Ya = class {
|
|
4738
4894
|
graph;
|
|
4739
4895
|
service;
|
|
4740
4896
|
source;
|
|
4741
|
-
offlineMat =
|
|
4897
|
+
offlineMat = Wi();
|
|
4742
4898
|
matType = "physical";
|
|
4743
4899
|
matSig = "";
|
|
4744
4900
|
liveUniforms = /* @__PURE__ */ new Map();
|
|
4745
4901
|
material_;
|
|
4746
|
-
scaleUniform =
|
|
4747
|
-
sharpnessUniform =
|
|
4748
|
-
|
|
4749
|
-
metalnessFactor = U(1);
|
|
4750
|
-
colorTint = U(new e.Color(1, 1, 1));
|
|
4751
|
-
parallaxScale = U(0);
|
|
4902
|
+
scaleUniform = Ae(1.2);
|
|
4903
|
+
sharpnessUniform = Ae(8);
|
|
4904
|
+
parallaxScale = Ae(0);
|
|
4752
4905
|
lastBakeMs = 0;
|
|
4753
4906
|
set;
|
|
4754
4907
|
backend = "offline";
|
|
@@ -4765,7 +4918,7 @@ var Ga = class {
|
|
|
4765
4918
|
processingDepth = 0;
|
|
4766
4919
|
idleWaiters = [];
|
|
4767
4920
|
constructor(e, t, n) {
|
|
4768
|
-
this.graph = e, this.service = t, this.source = n, this.set = t.createTextureSet(
|
|
4921
|
+
this.graph = e, this.service = t, this.source = n, this.set = t.createTextureSet(Ia, this.surfaceBakeSize()), this.material_ = this.buildLive(), this.graph.onChange((e) => this.onGraphChange(e));
|
|
4769
4922
|
}
|
|
4770
4923
|
get material() {
|
|
4771
4924
|
return this.material_;
|
|
@@ -4822,21 +4975,19 @@ var Ga = class {
|
|
|
4822
4975
|
regenerate() {
|
|
4823
4976
|
this.flushRequested = !0, this.requestUpdate("rebuild");
|
|
4824
4977
|
}
|
|
4978
|
+
debugReport() {
|
|
4979
|
+
return {
|
|
4980
|
+
busy: this.busy,
|
|
4981
|
+
backend: this.backend,
|
|
4982
|
+
set: this.set.debugCounts()
|
|
4983
|
+
};
|
|
4984
|
+
}
|
|
4825
4985
|
setScale(e) {
|
|
4826
4986
|
this.scaleUniform.value = e;
|
|
4827
4987
|
}
|
|
4828
4988
|
setSharpness(e) {
|
|
4829
4989
|
this.sharpnessUniform.value = e;
|
|
4830
4990
|
}
|
|
4831
|
-
setRoughnessFactor(e) {
|
|
4832
|
-
this.roughnessFactor.value = e;
|
|
4833
|
-
}
|
|
4834
|
-
setMetalnessFactor(e) {
|
|
4835
|
-
this.metalnessFactor.value = e;
|
|
4836
|
-
}
|
|
4837
|
-
setColorTint(e) {
|
|
4838
|
-
this.colorTint.value.set(e);
|
|
4839
|
-
}
|
|
4840
4991
|
setParallaxScale(e) {
|
|
4841
4992
|
let t = this.parallaxScale.value > 0;
|
|
4842
4993
|
this.parallaxScale.value = e, e > 0 !== t && this.wire(this.lastPresent);
|
|
@@ -4877,7 +5028,7 @@ var Ga = class {
|
|
|
4877
5028
|
let e = n.value;
|
|
4878
5029
|
t.value.set(e.x, e.y, e.z);
|
|
4879
5030
|
} else if (n.paramType === "curve") {
|
|
4880
|
-
let e =
|
|
5031
|
+
let e = Ie(n.value), r = t.array;
|
|
4881
5032
|
for (let t = 0; t < e.length; t++) r[t] = e[t];
|
|
4882
5033
|
} else t.value = Number(n.value);
|
|
4883
5034
|
}
|
|
@@ -4919,7 +5070,7 @@ var Ga = class {
|
|
|
4919
5070
|
}
|
|
4920
5071
|
}
|
|
4921
5072
|
surfaceBakeSize() {
|
|
4922
|
-
return Math.max(64, Math.round(
|
|
5073
|
+
return Math.max(64, Math.round(Mi(this.graph.document) / 64) * 64);
|
|
4923
5074
|
}
|
|
4924
5075
|
async rebuild() {
|
|
4925
5076
|
this.enterProcessing();
|
|
@@ -4929,8 +5080,8 @@ var Ga = class {
|
|
|
4929
5080
|
if (this.backend === "offline" && this.service.hasRenderer) {
|
|
4930
5081
|
let e = this.surfaceBakeSize();
|
|
4931
5082
|
this.flushRequested && (this.flushRequested = !1, this.set.flushCaches()), this.set.resize(e);
|
|
4932
|
-
let { type: n, settings: r } =
|
|
4933
|
-
a && (t = this.offlineMat, this.offlineMat =
|
|
5083
|
+
let { type: n, settings: r } = Ni(this.graph.document), i = Ja(n, r), a = i !== this.matSig;
|
|
5084
|
+
a && (t = this.offlineMat, this.offlineMat = Wi(n, r), this.matType = n, this.matSig = i);
|
|
4934
5085
|
let o = this.graph.soloNode ?? void 0, s = performance.now(), c = await this.service.bakeInto(this.set, this.graph, {
|
|
4935
5086
|
soloNodeId: o,
|
|
4936
5087
|
label: "surface",
|
|
@@ -4948,7 +5099,7 @@ var Ga = class {
|
|
|
4948
5099
|
}
|
|
4949
5100
|
}
|
|
4950
5101
|
buildLive() {
|
|
4951
|
-
let e = this.graph.soloNode ?? void 0, { material: t, uniforms: n } =
|
|
5102
|
+
let e = this.graph.soloNode ?? void 0, { material: t, uniforms: n } = Ki(this.graph.document, this.graph.getRegistry(), {
|
|
4952
5103
|
backend: "live",
|
|
4953
5104
|
soloNodeId: e
|
|
4954
5105
|
});
|
|
@@ -4956,12 +5107,12 @@ var Ga = class {
|
|
|
4956
5107
|
}
|
|
4957
5108
|
wire(e) {
|
|
4958
5109
|
this.lastPresent = e;
|
|
4959
|
-
let t = this.offlineMat, n =
|
|
5110
|
+
let t = this.offlineMat, n = Re[this.matType], r = this.scaleUniform, i = this.sharpnessUniform, a = this.set.hasHeight && !this.triplanar && this.parallaxScale.value > 0, o = G(), s = a ? Ka(this.set.heightTarget.texture, o, this.parallaxScale, qa) : void 0, c = o.dFdx(), l = o.dFdy(), u = (e) => a ? U(e, s).grad(c, l) : U(e), d = (e) => this.triplanar ? Ua(this.set.texture(e), r, i) : u(this.set.texture(e)), f = e.has("normal") ? this.triplanar ? Wa(this.set.texture("normal"), r, i) : fe(u(this.set.texture("normal")).xyz, k(1)) : pe;
|
|
4960
5111
|
if (this.debugNormals) {
|
|
4961
|
-
t.colorNode =
|
|
5112
|
+
t.colorNode = q(0, 0, 0), t.emissiveNode = f.normalize().mul(.5).add(.5), t.roughnessNode = t.metalnessNode = t.aoNode = t.normalNode = null, t.needsUpdate = !0;
|
|
4962
5113
|
return;
|
|
4963
5114
|
}
|
|
4964
|
-
if (t.colorNode = e.has("baseColor") ? d("baseColor")
|
|
5115
|
+
if (t.colorNode = e.has("baseColor") ? d("baseColor") : null, t.normalNode = e.has("normal") ? f : null, n.roughMetal && (t.roughnessNode = e.has("roughness") ? d("roughness").r : null, t.metalnessNode = e.has("metallic") ? d("metallic").r : null), n.ao) {
|
|
4965
5116
|
let n = b("vertexAo", "float");
|
|
4966
5117
|
t.aoNode = e.has("ambientOcclusion") ? d("ambientOcclusion").r.mul(n) : n;
|
|
4967
5118
|
}
|
|
@@ -4973,7 +5124,7 @@ var Ga = class {
|
|
|
4973
5124
|
};
|
|
4974
5125
|
//#endregion
|
|
4975
5126
|
//#region src/graph/mesh-material.ts
|
|
4976
|
-
function
|
|
5127
|
+
function Xa(t) {
|
|
4977
5128
|
let n = { side: e.DoubleSide };
|
|
4978
5129
|
switch (t) {
|
|
4979
5130
|
case "standard": return new e.MeshStandardMaterial(n);
|
|
@@ -4984,8 +5135,8 @@ function Ka(t) {
|
|
|
4984
5135
|
default: return new e.MeshPhysicalMaterial(n);
|
|
4985
5136
|
}
|
|
4986
5137
|
}
|
|
4987
|
-
function
|
|
4988
|
-
let n =
|
|
5138
|
+
function Za(e, t) {
|
|
5139
|
+
let n = Pi(e), r = Re[n.type], i = Xa(n.type), a = i, o = (e) => t.get(e), s = o("baseColor");
|
|
4989
5140
|
s ? (a.map = s, a.color.set(16777215)) : a.color.set(n.baseColor);
|
|
4990
5141
|
let c = o("normal");
|
|
4991
5142
|
if (c && (a.normalMap = c), n.alpha < 1 && (a.transparent = !0, a.opacity = n.alpha), r.ao) {
|
|
@@ -5002,22 +5153,22 @@ function qa(e, t) {
|
|
|
5002
5153
|
let t = o("metallic");
|
|
5003
5154
|
t ? (a.metalnessMap = t, a.metalness = 1) : a.metalness = n.metallic;
|
|
5004
5155
|
}
|
|
5005
|
-
return r.physicalLobes && (a.ior = n.ior, a.clearcoat = n.coat, a.clearcoatRoughness = n.coatRoughness, a.sheen = n.sheen, n.sheen > 0 && a.sheenColor.set(16777215), a.sheenRoughness = n.sheenRoughness, a.transmission = n.transmission), n.type === "phong" && (a.shininess = n.shininess, a.specular.set(n.specular)), n.type === "toon" && (a.gradientMap =
|
|
5156
|
+
return r.physicalLobes && (a.ior = n.ior, a.clearcoat = n.coat, a.clearcoatRoughness = n.coatRoughness, a.sheen = n.sheen, n.sheen > 0 && a.sheenColor.set(16777215), a.sheenRoughness = n.sheenRoughness, a.transmission = n.transmission), n.type === "phong" && (a.shininess = n.shininess, a.specular.set(n.specular)), n.type === "toon" && (a.gradientMap = Ti(n.gradientSteps)), n.type === "matcap" && (a.matcap = Ei(n.matcap)), i;
|
|
5006
5157
|
}
|
|
5007
5158
|
//#endregion
|
|
5008
5159
|
//#region src/runtime.ts
|
|
5009
|
-
var
|
|
5160
|
+
var Qa = class {
|
|
5010
5161
|
graph;
|
|
5011
5162
|
surface;
|
|
5012
5163
|
service;
|
|
5013
5164
|
constructor(e = {}) {
|
|
5014
|
-
this.service = e.bakeService ??
|
|
5165
|
+
this.service = e.bakeService ?? Va, this.graph = new ua(e.document, e.registry ?? Ci), this.surface = new Ya(this.graph, this.service, e.source);
|
|
5015
5166
|
}
|
|
5016
5167
|
getNodeMaterial() {
|
|
5017
5168
|
return this.surface.material;
|
|
5018
5169
|
}
|
|
5019
5170
|
getMeshMaterial() {
|
|
5020
|
-
return
|
|
5171
|
+
return Za(this.graph.document, { get: (e) => this.surface.getChannelTexture(e) });
|
|
5021
5172
|
}
|
|
5022
5173
|
releaseCaches() {
|
|
5023
5174
|
return this.surface.releaseCaches();
|
|
@@ -5067,37 +5218,37 @@ var Ja = class {
|
|
|
5067
5218
|
};
|
|
5068
5219
|
//#endregion
|
|
5069
5220
|
//#region src/topology.ts
|
|
5070
|
-
function
|
|
5071
|
-
return Array.isArray(e) ? `[${e.map(
|
|
5221
|
+
function $a(e) {
|
|
5222
|
+
return Array.isArray(e) ? `[${e.map($a).join(",")}]` : e && typeof e == "object" ? `{${Object.entries(e).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => `${e}:${$a(t)}`).join(",")}}` : JSON.stringify(e);
|
|
5072
5223
|
}
|
|
5073
|
-
function
|
|
5224
|
+
function eo(e, t) {
|
|
5074
5225
|
let n = t.get(e.type), r = n.paramsFor ? n.paramsFor(e.params) : n.params, i = {};
|
|
5075
5226
|
for (let t of r) (t.type === "int" || t.type === "bool" || t.type === "select" || t.bakeStructural) && (i[t.key] = e.params[t.key]);
|
|
5076
5227
|
return i;
|
|
5077
5228
|
}
|
|
5078
|
-
function
|
|
5229
|
+
function to(e, t) {
|
|
5079
5230
|
return {
|
|
5080
5231
|
id: e.id,
|
|
5081
5232
|
type: e.type,
|
|
5082
5233
|
enabled: e.enabled,
|
|
5083
5234
|
ports: Q(e, t),
|
|
5084
|
-
params:
|
|
5085
|
-
subgraph: e.subgraph ?
|
|
5235
|
+
params: eo(e, t),
|
|
5236
|
+
subgraph: e.subgraph ? no(e.subgraph, t) : null
|
|
5086
5237
|
};
|
|
5087
5238
|
}
|
|
5088
|
-
function
|
|
5239
|
+
function no(e, t) {
|
|
5089
5240
|
return {
|
|
5090
5241
|
version: e.version,
|
|
5091
|
-
nodes: e.nodes.map((e) =>
|
|
5092
|
-
edges: [...e.edges].sort((e, t) =>
|
|
5242
|
+
nodes: e.nodes.map((e) => to(e, t)).sort((e, t) => String(e.id).localeCompare(String(t.id))),
|
|
5243
|
+
edges: [...e.edges].sort((e, t) => $a(e).localeCompare($a(t)))
|
|
5093
5244
|
};
|
|
5094
5245
|
}
|
|
5095
|
-
function
|
|
5096
|
-
return
|
|
5246
|
+
function ro(e, t) {
|
|
5247
|
+
return $a(no(e, t));
|
|
5097
5248
|
}
|
|
5098
5249
|
//#endregion
|
|
5099
5250
|
//#region src/graph/tiling-test.ts
|
|
5100
|
-
function
|
|
5251
|
+
function io(e) {
|
|
5101
5252
|
return {
|
|
5102
5253
|
version: 4,
|
|
5103
5254
|
nodes: [
|
|
@@ -5150,7 +5301,7 @@ function eo(e) {
|
|
|
5150
5301
|
}]
|
|
5151
5302
|
};
|
|
5152
5303
|
}
|
|
5153
|
-
function
|
|
5304
|
+
function ao(e, t) {
|
|
5154
5305
|
let n = (n, r) => e.data[(r * t + n) * 4], r = 0, i = 0;
|
|
5155
5306
|
for (let e = 0; e < t; e++) {
|
|
5156
5307
|
r += Math.abs(n(t - 1, e) - n(0, e));
|
|
@@ -5170,10 +5321,10 @@ function to(e, t) {
|
|
|
5170
5321
|
ratioV: a / Math.max(o, .001)
|
|
5171
5322
|
};
|
|
5172
5323
|
}
|
|
5173
|
-
async function
|
|
5324
|
+
async function oo(e, t, n = {}) {
|
|
5174
5325
|
let r = n.size ?? 256, i = n.threshold ?? 3, a = n.channel ?? "baseColor", o = t.get("tileable-noise").params, s = o.find((e) => e.key === "noiseType")?.options ?? [], c = (o.find((e) => e.key === "preset")?.options ?? []).filter((e) => e !== "none"), l = new Set(c), u = n.types ?? [...s, ...c], d = [];
|
|
5175
5326
|
for (let o of u) {
|
|
5176
|
-
let s = new
|
|
5327
|
+
let s = new ua(io(l.has(o) ? {
|
|
5177
5328
|
noiseType: "perlin-fbm",
|
|
5178
5329
|
preset: o
|
|
5179
5330
|
} : { noiseType: o }), t), c = await e.readImage(s, a, r);
|
|
@@ -5191,7 +5342,7 @@ async function no(e, t, n = {}) {
|
|
|
5191
5342
|
continue;
|
|
5192
5343
|
}
|
|
5193
5344
|
n.onTile && await n.onTile(o, c);
|
|
5194
|
-
let u =
|
|
5345
|
+
let u = ao(c, r);
|
|
5195
5346
|
d.push({
|
|
5196
5347
|
type: o,
|
|
5197
5348
|
...u,
|
|
@@ -5201,4 +5352,4 @@ async function no(e, t, n = {}) {
|
|
|
5201
5352
|
return d;
|
|
5202
5353
|
}
|
|
5203
5354
|
//#endregion
|
|
5204
|
-
export {
|
|
5355
|
+
export { za as BakedTextureSet, Ke as COERCION_MATRIX, Fe as CURVE_CHANNELS, Pe as CURVE_IDENTITY, Ve as GROUP_INPUT_TYPE, He as GROUP_OUTPUT_TYPE, Be as GROUP_TYPE, ea as MATERIAL_DOCUMENT_VERSION, Ue as MATERIAL_OUTPUT_TYPE, Le as MATERIAL_TYPES, Re as MATERIAL_TYPE_CAPS, Ba as MaterialBakeService, Qa as MaterialGraphRuntime, ua as MaterialGraphSession, xi as NodeRegistry, Ge as PBR_SOCKETS, We as SHADER_MATERIAL_TYPE, Ia as SURFACE_CHANNELS, Ya as TexturedSurface, Va as bakeService, Za as buildMeshMaterial, ta as cloneMaterialDocument, qe as coercionFor, Ki as compileGraph, Ri as compileSockets, Li as countGraphNodes, na as createDefaultMaterialDocument, Si as createDefaultRegistry, ro as createMaterialTopologyKey, Ie as curveToArray, Ci as defaultRegistry, oa as migrateMaterialDocument, Wi as newSurfaceMaterial, bi as nodeParamDefs, Q as nodePorts, ze as normalizeMaterialType, Pi as readMaterialConfig, Ni as readMaterialSurface, Mi as readOutputResolution, oo as runTilingTest };
|