material-designer-runtime 0.1.2 → 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 +2 -6
- package/dist/index.d.ts +1 -0
- package/dist/index.js +779 -609
- package/dist/runtime.d.ts +1 -0
- 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,35 +4328,41 @@ 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
|
-
let c = new m(e, r
|
|
4360
|
+
let c = new m(e, r, {
|
|
4361
|
+
depthBuffer: !1,
|
|
4362
|
+
stencilBuffer: !1
|
|
4363
|
+
});
|
|
4304
4364
|
c.texture.colorSpace = n, c.texture.minFilter = c.texture.magFilter = t, c.texture.wrapS = c.texture.wrapT = i;
|
|
4305
|
-
let l =
|
|
4365
|
+
let l = K(1 / e, 1 / r), u = (e) => {
|
|
4306
4366
|
let t = new o();
|
|
4307
4367
|
return t.colorNode = ha(c.texture, l, e), new p(t);
|
|
4308
4368
|
}, d = {
|
|
@@ -4312,42 +4372,65 @@ function _a(e, r) {
|
|
|
4312
4372
|
};
|
|
4313
4373
|
return ga.set(a, d), d;
|
|
4314
4374
|
}
|
|
4315
|
-
function
|
|
4375
|
+
function ya() {
|
|
4316
4376
|
return new o();
|
|
4317
4377
|
}
|
|
4318
|
-
var
|
|
4319
|
-
async function
|
|
4320
|
-
for (;
|
|
4321
|
-
|
|
4322
|
-
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]);
|
|
4323
4383
|
let r = e.getRenderTarget();
|
|
4324
|
-
e.setRenderTarget(
|
|
4384
|
+
e.setRenderTarget(va(n * $, n * $).ssRT), await e.compileAsync(ba, xa), e.setRenderTarget(r);
|
|
4325
4385
|
}
|
|
4326
|
-
function
|
|
4327
|
-
|
|
4386
|
+
function wa(e, t, n) {
|
|
4387
|
+
ma.material = t;
|
|
4328
4388
|
let r = e.getRenderTarget();
|
|
4329
|
-
e.setRenderTarget(n),
|
|
4389
|
+
e.setRenderTarget(n), ma.render(e), e.setRenderTarget(r);
|
|
4330
4390
|
}
|
|
4331
|
-
function
|
|
4332
|
-
let { ssRT: i, downColorQuad: a, downNormalQuad: o } =
|
|
4333
|
-
|
|
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;
|
|
4334
4394
|
let s = e.getRenderTarget();
|
|
4335
|
-
e.setRenderTarget(i),
|
|
4395
|
+
e.setRenderTarget(i), ma.render(e), e.setRenderTarget(n), (r ? o : a).render(e), e.setRenderTarget(s);
|
|
4336
4396
|
}
|
|
4337
|
-
function
|
|
4338
|
-
|
|
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
|
+
}
|
|
4339
4422
|
}
|
|
4340
4423
|
//#endregion
|
|
4341
4424
|
//#region src/graph/bake-service.ts
|
|
4342
|
-
var
|
|
4343
|
-
function
|
|
4425
|
+
var Aa = 1024, ja = 8, Ma = 4096;
|
|
4426
|
+
function Na(e, t) {
|
|
4344
4427
|
let n = t?.size ?? Math.max(e, t?.minSize ?? 0);
|
|
4345
|
-
return Math.min(n,
|
|
4428
|
+
return Math.min(n, Ma);
|
|
4346
4429
|
}
|
|
4347
|
-
function
|
|
4430
|
+
function Pa(e) {
|
|
4348
4431
|
return e?.minSize != null;
|
|
4349
4432
|
}
|
|
4350
|
-
var
|
|
4433
|
+
var Fa = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator.userAgent) && !/firefox|fxios/i.test(navigator.userAgent), Ia = [
|
|
4351
4434
|
"baseColor",
|
|
4352
4435
|
"roughness",
|
|
4353
4436
|
"metallic",
|
|
@@ -4355,15 +4438,22 @@ var ja = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator
|
|
|
4355
4438
|
"normal",
|
|
4356
4439
|
"emission"
|
|
4357
4440
|
];
|
|
4358
|
-
function
|
|
4359
|
-
let r = new m(n, n
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4441
|
+
function La(t, n) {
|
|
4442
|
+
let r = new m(n, n, {
|
|
4443
|
+
depthBuffer: !1,
|
|
4444
|
+
stencilBuffer: !1
|
|
4445
|
+
}), i = r.texture;
|
|
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;
|
|
4447
|
+
}
|
|
4448
|
+
function Ra(t, n = !1) {
|
|
4449
|
+
let r = new m(t, t, {
|
|
4450
|
+
type: e.HalfFloatType,
|
|
4451
|
+
depthBuffer: !1,
|
|
4452
|
+
stencilBuffer: !1
|
|
4453
|
+
}), i = r.texture;
|
|
4364
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;
|
|
4365
4455
|
}
|
|
4366
|
-
var
|
|
4456
|
+
var za = class {
|
|
4367
4457
|
channels;
|
|
4368
4458
|
targets = /* @__PURE__ */ new Map();
|
|
4369
4459
|
mats = /* @__PURE__ */ new Map();
|
|
@@ -4390,19 +4480,19 @@ var Fa = class {
|
|
|
4390
4480
|
}
|
|
4391
4481
|
target(e) {
|
|
4392
4482
|
let t = this.targets.get(e);
|
|
4393
|
-
return t || (t =
|
|
4483
|
+
return t || (t = La(e, this.size), this.targets.set(e, t)), t;
|
|
4394
4484
|
}
|
|
4395
4485
|
channelMaterial(e) {
|
|
4396
4486
|
let t = this.mats.get(e);
|
|
4397
|
-
return t || (t =
|
|
4487
|
+
return t || (t = ya(), this.mats.set(e, t)), t;
|
|
4398
4488
|
}
|
|
4399
4489
|
cacheTarget(e, t = this.size, n = !1) {
|
|
4400
4490
|
let r = this.cacheTargets.get(e);
|
|
4401
|
-
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;
|
|
4402
4492
|
}
|
|
4403
4493
|
cacheMaterial(e) {
|
|
4404
4494
|
let t = this.cacheMats.get(e);
|
|
4405
|
-
return t || (t =
|
|
4495
|
+
return t || (t = ya(), this.cacheMats.set(e, t)), t;
|
|
4406
4496
|
}
|
|
4407
4497
|
cacheTexture(e, t, n = !1) {
|
|
4408
4498
|
return this.cacheTarget(e, t, n).texture;
|
|
@@ -4416,7 +4506,7 @@ var Fa = class {
|
|
|
4416
4506
|
return this.heightTarget;
|
|
4417
4507
|
}
|
|
4418
4508
|
ensureHeightTarget() {
|
|
4419
|
-
return this.heightTarget ||=
|
|
4509
|
+
return this.heightTarget ||= La("height", this.size), this.heightTarget;
|
|
4420
4510
|
}
|
|
4421
4511
|
texture(e) {
|
|
4422
4512
|
return this.targets.get(e)?.texture ?? null;
|
|
@@ -4438,14 +4528,24 @@ var Fa = class {
|
|
|
4438
4528
|
if (i === "vec3") {
|
|
4439
4529
|
let t = [];
|
|
4440
4530
|
for (let n = 0; n < r.length; n += 3) t.push(new e.Vector3(r[n], r[n + 1], r[n + 2]));
|
|
4441
|
-
s =
|
|
4442
|
-
} else s =
|
|
4531
|
+
s = je(t);
|
|
4532
|
+
} else s = je(Array.from(r), "float");
|
|
4443
4533
|
return this.constArrays.set(a, {
|
|
4444
4534
|
node: s,
|
|
4445
4535
|
length: r.length,
|
|
4446
4536
|
elementType: i
|
|
4447
4537
|
}), s;
|
|
4448
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
|
+
}
|
|
4449
4549
|
flushCaches() {
|
|
4450
4550
|
for (let e of this.mats.values()) e.dispose();
|
|
4451
4551
|
this.mats.clear();
|
|
@@ -4464,7 +4564,7 @@ var Fa = class {
|
|
|
4464
4564
|
for (let e of this.cacheMats.values()) e.dispose();
|
|
4465
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;
|
|
4466
4566
|
}
|
|
4467
|
-
},
|
|
4567
|
+
}, Ba = class {
|
|
4468
4568
|
renderer = null;
|
|
4469
4569
|
compileGateDepth = 0;
|
|
4470
4570
|
get rendererBusy() {
|
|
@@ -4516,8 +4616,8 @@ var Fa = class {
|
|
|
4516
4616
|
});
|
|
4517
4617
|
return this.queue = n.then(() => void 0, () => void 0), n;
|
|
4518
4618
|
}
|
|
4519
|
-
createTextureSet(e =
|
|
4520
|
-
return new
|
|
4619
|
+
createTextureSet(e = Ia, t = Aa) {
|
|
4620
|
+
return new za(t, e);
|
|
4521
4621
|
}
|
|
4522
4622
|
bakeInto(e, t, n = {}) {
|
|
4523
4623
|
return this.enqueue(n.label ?? "surface", async () => {
|
|
@@ -4526,16 +4626,16 @@ var Fa = class {
|
|
|
4526
4626
|
let i = performance.now(), { bundle: a, uniforms: o, cachePlan: s, paramUsage: c } = t.compileBundle({
|
|
4527
4627
|
backend: "offline",
|
|
4528
4628
|
soloNodeId: n.soloNodeId,
|
|
4529
|
-
allocCache: (t, n, r) => e.cacheTexture(t,
|
|
4629
|
+
allocCache: (t, n, r) => e.cacheTexture(t, Na(e.size, r), Pa(r)),
|
|
4530
4630
|
allocConstantArray: (t, n, r, i) => e.allocConstantArray(t, n, r, i)
|
|
4531
|
-
}), l = performance.now() - i, u =
|
|
4631
|
+
}), l = performance.now() - i, u = Li(t.document);
|
|
4532
4632
|
e.uniforms = o, e.paramUsage = c, e.cachePlan = s, n.soloNodeId || e.pruneCaches(new Set(s.map((e) => e.cacheId)));
|
|
4533
4633
|
let d = n.channels ?? e.channels, f = /* @__PURE__ */ new Set(), p = [];
|
|
4534
4634
|
for (let t of d) {
|
|
4535
4635
|
let n = a[t];
|
|
4536
4636
|
if (!n) continue;
|
|
4537
4637
|
let r = e.channelMaterial(t);
|
|
4538
|
-
r.colorNode =
|
|
4638
|
+
r.colorNode = pa(n, t), r.needsUpdate = !0, p.push({
|
|
4539
4639
|
mat: r,
|
|
4540
4640
|
target: e.target(t),
|
|
4541
4641
|
isNormal: t === "normal"
|
|
@@ -4543,7 +4643,7 @@ var Fa = class {
|
|
|
4543
4643
|
}
|
|
4544
4644
|
if (e.hasHeight = a.height !== void 0, e.hasHeight) {
|
|
4545
4645
|
let t = e.channelMaterial("height");
|
|
4546
|
-
t.colorNode =
|
|
4646
|
+
t.colorNode = q(a.height), t.needsUpdate = !0, p.push({
|
|
4547
4647
|
mat: t,
|
|
4548
4648
|
target: e.ensureHeightTarget(),
|
|
4549
4649
|
isNormal: !1
|
|
@@ -4561,10 +4661,10 @@ var Fa = class {
|
|
|
4561
4661
|
this.emitReport(m);
|
|
4562
4662
|
for (let t of s) {
|
|
4563
4663
|
let n = e.cacheMaterial(t.cacheId);
|
|
4564
|
-
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)));
|
|
4565
4665
|
}
|
|
4566
4666
|
let h = 0;
|
|
4567
|
-
if (
|
|
4667
|
+
if (Fa) {
|
|
4568
4668
|
this.emitReport({
|
|
4569
4669
|
...m,
|
|
4570
4670
|
phase: "shaders"
|
|
@@ -4572,18 +4672,18 @@ var Fa = class {
|
|
|
4572
4672
|
let t = performance.now();
|
|
4573
4673
|
this.compileGateDepth += 1;
|
|
4574
4674
|
try {
|
|
4575
|
-
await
|
|
4675
|
+
await Ca(r, p.map((e) => e.mat), e.size);
|
|
4576
4676
|
} finally {
|
|
4577
4677
|
--this.compileGateDepth;
|
|
4578
4678
|
}
|
|
4579
4679
|
h = performance.now() - t;
|
|
4580
4680
|
}
|
|
4581
4681
|
let g = performance.now();
|
|
4582
|
-
for (let e of p)
|
|
4682
|
+
for (let e of p) Ta(r, e.mat, e.target, e.isNormal);
|
|
4583
4683
|
let _ = performance.now() - g, v = [...f].sort().join(",") + (e.hasHeight ? "|h" : ""), y = v !== e.signature;
|
|
4584
4684
|
e.present = f, e.signature = v;
|
|
4585
4685
|
let b = performance.now();
|
|
4586
|
-
await this.gpuSync(e);
|
|
4686
|
+
await this.gpuSync(e.firstTarget());
|
|
4587
4687
|
let x = performance.now() - b, S = l + h + _ + x;
|
|
4588
4688
|
return this.emitReport({
|
|
4589
4689
|
...m,
|
|
@@ -4600,8 +4700,7 @@ var Fa = class {
|
|
|
4600
4700
|
await n.onSubmittedWorkDone();
|
|
4601
4701
|
return;
|
|
4602
4702
|
}
|
|
4603
|
-
|
|
4604
|
-
r && await t.readRenderTargetPixelsAsync(r, 0, 0, 1, 1);
|
|
4703
|
+
e && await t.readRenderTargetPixelsAsync(e, 0, 0, 1, 1);
|
|
4605
4704
|
}
|
|
4606
4705
|
rerenderInto(e, t) {
|
|
4607
4706
|
let n = this.queue.then(async () => {
|
|
@@ -4618,11 +4717,11 @@ var Fa = class {
|
|
|
4618
4717
|
};
|
|
4619
4718
|
this.emitReport(i);
|
|
4620
4719
|
let a = performance.now();
|
|
4621
|
-
for (let t of e.cachePlan)
|
|
4622
|
-
for (let t of e.present)
|
|
4623
|
-
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);
|
|
4624
4723
|
let o = performance.now() - a, s = performance.now();
|
|
4625
|
-
await this.gpuSync(e);
|
|
4724
|
+
await this.gpuSync(e.firstTarget());
|
|
4626
4725
|
let c = performance.now() - s;
|
|
4627
4726
|
this.emitReport({
|
|
4628
4727
|
...i,
|
|
@@ -4642,17 +4741,17 @@ var Fa = class {
|
|
|
4642
4741
|
if (!r) return null;
|
|
4643
4742
|
let { bundle: i, cachePlan: a } = e.compileBundle({
|
|
4644
4743
|
backend: "offline",
|
|
4645
|
-
allocCache: (e, t, r) => this.scratchCache(e, n,
|
|
4744
|
+
allocCache: (e, t, r) => this.scratchCache(e, n, Na(n, r), Pa(r)).rt.texture
|
|
4646
4745
|
}), o = i[t];
|
|
4647
4746
|
if (!o) return null;
|
|
4648
4747
|
let s = new Set(a.map((e) => e.cacheId));
|
|
4649
4748
|
for (let [e, t] of this.scratchCaches) s.has(e) || (t.rt.dispose(), t.mat.dispose(), this.scratchCaches.delete(e));
|
|
4650
4749
|
for (let e of a) {
|
|
4651
|
-
let t = this.scratchCache(e.cacheId, n,
|
|
4652
|
-
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);
|
|
4653
4752
|
}
|
|
4654
4753
|
let c = this.scratchTarget(n);
|
|
4655
|
-
|
|
4754
|
+
Ea(r, pa(o, t), c, t === "normal");
|
|
4656
4755
|
let l = await r.readRenderTargetPixelsAsync(c, 0, 0, n, n), u = new Uint8ClampedArray(n * n * 4), d = n * 4;
|
|
4657
4756
|
for (let e = 0; e < n; e++) {
|
|
4658
4757
|
let t = (n - 1 - e) * d;
|
|
@@ -4661,8 +4760,78 @@ var Fa = class {
|
|
|
4661
4760
|
return new ImageData(u, n, n);
|
|
4662
4761
|
});
|
|
4663
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
|
+
}
|
|
4664
4773
|
scratchTarget(e) {
|
|
4665
|
-
return (!this.scratch || this.scratchSize !== e) && (this.scratch?.dispose(), this.scratch = new m(e, e
|
|
4774
|
+
return (!this.scratch || this.scratchSize !== e) && (this.scratch?.dispose(), this.scratch = new m(e, e, {
|
|
4775
|
+
depthBuffer: !1,
|
|
4776
|
+
stencilBuffer: !1
|
|
4777
|
+
}), this.scratchSize = e), this.scratch;
|
|
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
|
+
});
|
|
4666
4835
|
}
|
|
4667
4836
|
scratchCache(e, t, n, r = !1) {
|
|
4668
4837
|
if (this.scratchCacheSize !== t) {
|
|
@@ -4671,48 +4840,48 @@ var Fa = class {
|
|
|
4671
4840
|
}
|
|
4672
4841
|
let i = this.scratchCaches.get(e);
|
|
4673
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 = {
|
|
4674
|
-
rt:
|
|
4675
|
-
mat:
|
|
4843
|
+
rt: Ra(n, r),
|
|
4844
|
+
mat: ya()
|
|
4676
4845
|
}, this.scratchCaches.set(e, i)), i;
|
|
4677
4846
|
}
|
|
4678
|
-
},
|
|
4847
|
+
}, Va = new Ba();
|
|
4679
4848
|
//#endregion
|
|
4680
4849
|
//#region src/tsl/triplanar.ts
|
|
4681
|
-
function
|
|
4682
|
-
let t =
|
|
4683
|
-
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));
|
|
4684
4853
|
}
|
|
4685
|
-
function
|
|
4854
|
+
function Ua(e, t, n) {
|
|
4686
4855
|
return h(() => {
|
|
4687
|
-
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);
|
|
4688
4857
|
return a.add(o).add(s);
|
|
4689
4858
|
})();
|
|
4690
4859
|
}
|
|
4691
4860
|
//#endregion
|
|
4692
4861
|
//#region src/tsl/triplanar-normal.ts
|
|
4693
|
-
function
|
|
4862
|
+
function Wa(e, t, n) {
|
|
4694
4863
|
return h(() => {
|
|
4695
|
-
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));
|
|
4696
4865
|
return l.zxy.mul(i.x).add(u.yzx.mul(i.y)).add(d.xyz.mul(i.z)).normalize();
|
|
4697
4866
|
})();
|
|
4698
4867
|
}
|
|
4699
4868
|
//#endregion
|
|
4700
4869
|
//#region src/tsl/parallax.ts
|
|
4701
|
-
var
|
|
4702
|
-
function
|
|
4870
|
+
var Ga = .3;
|
|
4871
|
+
function Ka(e, t, n, r) {
|
|
4703
4872
|
return h(() => {
|
|
4704
|
-
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));
|
|
4705
4874
|
for (let e = 0; e < r; e++) {
|
|
4706
|
-
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 =
|
|
4707
|
-
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;
|
|
4708
4877
|
}
|
|
4709
4878
|
return c;
|
|
4710
4879
|
})();
|
|
4711
4880
|
}
|
|
4712
4881
|
//#endregion
|
|
4713
4882
|
//#region src/graph/textured-surface.ts
|
|
4714
|
-
var
|
|
4715
|
-
function
|
|
4883
|
+
var qa = 12;
|
|
4884
|
+
function Ja(e, t) {
|
|
4716
4885
|
return [
|
|
4717
4886
|
e,
|
|
4718
4887
|
t.shininess,
|
|
@@ -4721,21 +4890,18 @@ function Wa(e, t) {
|
|
|
4721
4890
|
t.matcap
|
|
4722
4891
|
].join("|");
|
|
4723
4892
|
}
|
|
4724
|
-
var
|
|
4893
|
+
var Ya = class {
|
|
4725
4894
|
graph;
|
|
4726
4895
|
service;
|
|
4727
4896
|
source;
|
|
4728
|
-
offlineMat =
|
|
4897
|
+
offlineMat = Wi();
|
|
4729
4898
|
matType = "physical";
|
|
4730
4899
|
matSig = "";
|
|
4731
4900
|
liveUniforms = /* @__PURE__ */ new Map();
|
|
4732
4901
|
material_;
|
|
4733
|
-
scaleUniform =
|
|
4734
|
-
sharpnessUniform =
|
|
4735
|
-
|
|
4736
|
-
metalnessFactor = U(1);
|
|
4737
|
-
colorTint = U(new e.Color(1, 1, 1));
|
|
4738
|
-
parallaxScale = U(0);
|
|
4902
|
+
scaleUniform = Ae(1.2);
|
|
4903
|
+
sharpnessUniform = Ae(8);
|
|
4904
|
+
parallaxScale = Ae(0);
|
|
4739
4905
|
lastBakeMs = 0;
|
|
4740
4906
|
set;
|
|
4741
4907
|
backend = "offline";
|
|
@@ -4752,7 +4918,7 @@ var Ga = class {
|
|
|
4752
4918
|
processingDepth = 0;
|
|
4753
4919
|
idleWaiters = [];
|
|
4754
4920
|
constructor(e, t, n) {
|
|
4755
|
-
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));
|
|
4756
4922
|
}
|
|
4757
4923
|
get material() {
|
|
4758
4924
|
return this.material_;
|
|
@@ -4803,24 +4969,25 @@ var Ga = class {
|
|
|
4803
4969
|
refresh() {
|
|
4804
4970
|
return this.rebuild();
|
|
4805
4971
|
}
|
|
4972
|
+
async releaseCaches() {
|
|
4973
|
+
await this.whenIdle(), this.set.flushCaches();
|
|
4974
|
+
}
|
|
4806
4975
|
regenerate() {
|
|
4807
4976
|
this.flushRequested = !0, this.requestUpdate("rebuild");
|
|
4808
4977
|
}
|
|
4978
|
+
debugReport() {
|
|
4979
|
+
return {
|
|
4980
|
+
busy: this.busy,
|
|
4981
|
+
backend: this.backend,
|
|
4982
|
+
set: this.set.debugCounts()
|
|
4983
|
+
};
|
|
4984
|
+
}
|
|
4809
4985
|
setScale(e) {
|
|
4810
4986
|
this.scaleUniform.value = e;
|
|
4811
4987
|
}
|
|
4812
4988
|
setSharpness(e) {
|
|
4813
4989
|
this.sharpnessUniform.value = e;
|
|
4814
4990
|
}
|
|
4815
|
-
setRoughnessFactor(e) {
|
|
4816
|
-
this.roughnessFactor.value = e;
|
|
4817
|
-
}
|
|
4818
|
-
setMetalnessFactor(e) {
|
|
4819
|
-
this.metalnessFactor.value = e;
|
|
4820
|
-
}
|
|
4821
|
-
setColorTint(e) {
|
|
4822
|
-
this.colorTint.value.set(e);
|
|
4823
|
-
}
|
|
4824
4991
|
setParallaxScale(e) {
|
|
4825
4992
|
let t = this.parallaxScale.value > 0;
|
|
4826
4993
|
this.parallaxScale.value = e, e > 0 !== t && this.wire(this.lastPresent);
|
|
@@ -4861,7 +5028,7 @@ var Ga = class {
|
|
|
4861
5028
|
let e = n.value;
|
|
4862
5029
|
t.value.set(e.x, e.y, e.z);
|
|
4863
5030
|
} else if (n.paramType === "curve") {
|
|
4864
|
-
let e =
|
|
5031
|
+
let e = Ie(n.value), r = t.array;
|
|
4865
5032
|
for (let t = 0; t < e.length; t++) r[t] = e[t];
|
|
4866
5033
|
} else t.value = Number(n.value);
|
|
4867
5034
|
}
|
|
@@ -4903,7 +5070,7 @@ var Ga = class {
|
|
|
4903
5070
|
}
|
|
4904
5071
|
}
|
|
4905
5072
|
surfaceBakeSize() {
|
|
4906
|
-
return Math.max(64, Math.round(
|
|
5073
|
+
return Math.max(64, Math.round(Mi(this.graph.document) / 64) * 64);
|
|
4907
5074
|
}
|
|
4908
5075
|
async rebuild() {
|
|
4909
5076
|
this.enterProcessing();
|
|
@@ -4913,8 +5080,8 @@ var Ga = class {
|
|
|
4913
5080
|
if (this.backend === "offline" && this.service.hasRenderer) {
|
|
4914
5081
|
let e = this.surfaceBakeSize();
|
|
4915
5082
|
this.flushRequested && (this.flushRequested = !1, this.set.flushCaches()), this.set.resize(e);
|
|
4916
|
-
let { type: n, settings: r } =
|
|
4917
|
-
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);
|
|
4918
5085
|
let o = this.graph.soloNode ?? void 0, s = performance.now(), c = await this.service.bakeInto(this.set, this.graph, {
|
|
4919
5086
|
soloNodeId: o,
|
|
4920
5087
|
label: "surface",
|
|
@@ -4932,7 +5099,7 @@ var Ga = class {
|
|
|
4932
5099
|
}
|
|
4933
5100
|
}
|
|
4934
5101
|
buildLive() {
|
|
4935
|
-
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(), {
|
|
4936
5103
|
backend: "live",
|
|
4937
5104
|
soloNodeId: e
|
|
4938
5105
|
});
|
|
@@ -4940,12 +5107,12 @@ var Ga = class {
|
|
|
4940
5107
|
}
|
|
4941
5108
|
wire(e) {
|
|
4942
5109
|
this.lastPresent = e;
|
|
4943
|
-
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;
|
|
4944
5111
|
if (this.debugNormals) {
|
|
4945
|
-
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;
|
|
4946
5113
|
return;
|
|
4947
5114
|
}
|
|
4948
|
-
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) {
|
|
4949
5116
|
let n = b("vertexAo", "float");
|
|
4950
5117
|
t.aoNode = e.has("ambientOcclusion") ? d("ambientOcclusion").r.mul(n) : n;
|
|
4951
5118
|
}
|
|
@@ -4957,7 +5124,7 @@ var Ga = class {
|
|
|
4957
5124
|
};
|
|
4958
5125
|
//#endregion
|
|
4959
5126
|
//#region src/graph/mesh-material.ts
|
|
4960
|
-
function
|
|
5127
|
+
function Xa(t) {
|
|
4961
5128
|
let n = { side: e.DoubleSide };
|
|
4962
5129
|
switch (t) {
|
|
4963
5130
|
case "standard": return new e.MeshStandardMaterial(n);
|
|
@@ -4968,8 +5135,8 @@ function Ka(t) {
|
|
|
4968
5135
|
default: return new e.MeshPhysicalMaterial(n);
|
|
4969
5136
|
}
|
|
4970
5137
|
}
|
|
4971
|
-
function
|
|
4972
|
-
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");
|
|
4973
5140
|
s ? (a.map = s, a.color.set(16777215)) : a.color.set(n.baseColor);
|
|
4974
5141
|
let c = o("normal");
|
|
4975
5142
|
if (c && (a.normalMap = c), n.alpha < 1 && (a.transparent = !0, a.opacity = n.alpha), r.ao) {
|
|
@@ -4986,22 +5153,25 @@ function qa(e, t) {
|
|
|
4986
5153
|
let t = o("metallic");
|
|
4987
5154
|
t ? (a.metalnessMap = t, a.metalness = 1) : a.metalness = n.metallic;
|
|
4988
5155
|
}
|
|
4989
|
-
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;
|
|
4990
5157
|
}
|
|
4991
5158
|
//#endregion
|
|
4992
5159
|
//#region src/runtime.ts
|
|
4993
|
-
var
|
|
5160
|
+
var Qa = class {
|
|
4994
5161
|
graph;
|
|
4995
5162
|
surface;
|
|
4996
5163
|
service;
|
|
4997
5164
|
constructor(e = {}) {
|
|
4998
|
-
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);
|
|
4999
5166
|
}
|
|
5000
5167
|
getNodeMaterial() {
|
|
5001
5168
|
return this.surface.material;
|
|
5002
5169
|
}
|
|
5003
5170
|
getMeshMaterial() {
|
|
5004
|
-
return
|
|
5171
|
+
return Za(this.graph.document, { get: (e) => this.surface.getChannelTexture(e) });
|
|
5172
|
+
}
|
|
5173
|
+
releaseCaches() {
|
|
5174
|
+
return this.surface.releaseCaches();
|
|
5005
5175
|
}
|
|
5006
5176
|
get lastError() {
|
|
5007
5177
|
return this.surface.lastError ?? this.graph.lastError;
|
|
@@ -5048,37 +5218,37 @@ var Ja = class {
|
|
|
5048
5218
|
};
|
|
5049
5219
|
//#endregion
|
|
5050
5220
|
//#region src/topology.ts
|
|
5051
|
-
function
|
|
5052
|
-
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);
|
|
5053
5223
|
}
|
|
5054
|
-
function
|
|
5224
|
+
function eo(e, t) {
|
|
5055
5225
|
let n = t.get(e.type), r = n.paramsFor ? n.paramsFor(e.params) : n.params, i = {};
|
|
5056
5226
|
for (let t of r) (t.type === "int" || t.type === "bool" || t.type === "select" || t.bakeStructural) && (i[t.key] = e.params[t.key]);
|
|
5057
5227
|
return i;
|
|
5058
5228
|
}
|
|
5059
|
-
function
|
|
5229
|
+
function to(e, t) {
|
|
5060
5230
|
return {
|
|
5061
5231
|
id: e.id,
|
|
5062
5232
|
type: e.type,
|
|
5063
5233
|
enabled: e.enabled,
|
|
5064
5234
|
ports: Q(e, t),
|
|
5065
|
-
params:
|
|
5066
|
-
subgraph: e.subgraph ?
|
|
5235
|
+
params: eo(e, t),
|
|
5236
|
+
subgraph: e.subgraph ? no(e.subgraph, t) : null
|
|
5067
5237
|
};
|
|
5068
5238
|
}
|
|
5069
|
-
function
|
|
5239
|
+
function no(e, t) {
|
|
5070
5240
|
return {
|
|
5071
5241
|
version: e.version,
|
|
5072
|
-
nodes: e.nodes.map((e) =>
|
|
5073
|
-
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)))
|
|
5074
5244
|
};
|
|
5075
5245
|
}
|
|
5076
|
-
function
|
|
5077
|
-
return
|
|
5246
|
+
function ro(e, t) {
|
|
5247
|
+
return $a(no(e, t));
|
|
5078
5248
|
}
|
|
5079
5249
|
//#endregion
|
|
5080
5250
|
//#region src/graph/tiling-test.ts
|
|
5081
|
-
function
|
|
5251
|
+
function io(e) {
|
|
5082
5252
|
return {
|
|
5083
5253
|
version: 4,
|
|
5084
5254
|
nodes: [
|
|
@@ -5131,7 +5301,7 @@ function eo(e) {
|
|
|
5131
5301
|
}]
|
|
5132
5302
|
};
|
|
5133
5303
|
}
|
|
5134
|
-
function
|
|
5304
|
+
function ao(e, t) {
|
|
5135
5305
|
let n = (n, r) => e.data[(r * t + n) * 4], r = 0, i = 0;
|
|
5136
5306
|
for (let e = 0; e < t; e++) {
|
|
5137
5307
|
r += Math.abs(n(t - 1, e) - n(0, e));
|
|
@@ -5151,10 +5321,10 @@ function to(e, t) {
|
|
|
5151
5321
|
ratioV: a / Math.max(o, .001)
|
|
5152
5322
|
};
|
|
5153
5323
|
}
|
|
5154
|
-
async function
|
|
5324
|
+
async function oo(e, t, n = {}) {
|
|
5155
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 = [];
|
|
5156
5326
|
for (let o of u) {
|
|
5157
|
-
let s = new
|
|
5327
|
+
let s = new ua(io(l.has(o) ? {
|
|
5158
5328
|
noiseType: "perlin-fbm",
|
|
5159
5329
|
preset: o
|
|
5160
5330
|
} : { noiseType: o }), t), c = await e.readImage(s, a, r);
|
|
@@ -5172,7 +5342,7 @@ async function no(e, t, n = {}) {
|
|
|
5172
5342
|
continue;
|
|
5173
5343
|
}
|
|
5174
5344
|
n.onTile && await n.onTile(o, c);
|
|
5175
|
-
let u =
|
|
5345
|
+
let u = ao(c, r);
|
|
5176
5346
|
d.push({
|
|
5177
5347
|
type: o,
|
|
5178
5348
|
...u,
|
|
@@ -5182,4 +5352,4 @@ async function no(e, t, n = {}) {
|
|
|
5182
5352
|
return d;
|
|
5183
5353
|
}
|
|
5184
5354
|
//#endregion
|
|
5185
|
-
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 };
|