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/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 le, log as ue, luminance as de, max as N, min as P, mix as F, mod as I, mx_noise_float as fe, normalLocal as pe, normalMap as me, normalWorld as he, normalize as ge, parallaxDirection as _e, positionLocal as ve, positionWorld as ye, pow as L, radians as be, reflect as xe, round as Se, sRGBTransferOETF as Ce, saturate as we, select as R, sign as Te, sin as z, sinh as Ee, smoothstep as B, sqrt as De, step as Oe, tan as ke, tanh as Ae, texture as V, trunc as je, uint as H, uniform as U, uniformArray as Me, uv as W, vec2 as G, vec3 as K, vec4 as Ne } from "three/tsl";
5
- var Pe = {
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
- }, Fe = [
32
+ }, Pe = [
33
33
  0,
34
34
  .25,
35
35
  .5,
36
36
  .75,
37
37
  1
38
- ], Ie = [
38
+ ], Fe = [
39
39
  "C",
40
40
  "R",
41
41
  "G",
42
42
  "B"
43
43
  ];
44
- function Le(e) {
45
- let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ?? Fe[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 Re = [
53
+ var Le = [
54
54
  "standard",
55
55
  "physical",
56
56
  "lambert",
57
57
  "toon",
58
58
  "phong",
59
59
  "matcap"
60
- ], ze = {
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 Be(e) {
99
- return Re.includes(e) ? e : "physical";
98
+ function ze(e) {
99
+ return Le.includes(e) ? e : "physical";
100
100
  }
101
- var Ve = "group", He = "group-input", Ue = "group-output", q = "material-output", We = "shader-material", Ge = [
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 = H(r).toVar(), a = H(r).toVar(), o = H(r).toVar();
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(H(e), H(t), H(n)), Ze = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), Qe = (e, t) => R(t.notEqual(H(0)), e.negate(), e);
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(H(15)).toVar(), a = R(i.lessThan(H(8)), t, n), o = R(i.equal(H(12)).or(i.equal(H(14))), t, r), s = R(i.lessThan(H(4)), n, o);
139
- return Qe(a, i.bitAnd(H(1))).add(Qe(s, i.bitAnd(H(2))));
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 = fe(n.add(K(11.3, 0, 0))), i = fe(n.add(K(0, 47.7, 0))), a = fe(n.add(K(0, 0, 93.1)));
253
- return { coord: t.add(K(r, i, a).mul(e.live("amount"))) };
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) => I(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(Ne(0, 0, 1, 1)), r = j(e.xyxy).sub(Ne(0, 0, 1, 1)), i = I(I(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 = G(d.x, u.x), p = G(d.y, u.y), m = G(d.z, u.z), h = G(d.w, u.w), _ = k(1.79284291400159).sub(k(.85373472095314).mul(Ne(O(f, f), O(m, m), O(p, p), O(h, h))));
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, G(s.x, c.x)), y = O(p, G(s.y, c.y)), b = O(m, G(s.z, c.z)), x = O(h, G(s.w, c.w)), S = st(r.xy), C = F(G(v, b), G(y, x), S.x);
259
- return F(C.x, C.y, S.y).mul(2.3);
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 = G(s.mul(n), c.mul(n)), o = f;
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 = N(r.x.mul(l.x), r.y.mul(l.y)), t = w(k(1).sub(B(.2, .5, e)), 0, 1);
267
- o = f.mul(F(k(1), t, a));
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 F(k(0), u.div(d.max(1e-4)), P(d, 1));
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(G(r, s)), g = p;
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 = N(r.mul(u.x), s.mul(u.y)), t = w(k(1).sub(B(.2, .5, e)), 0, 1);
281
- g = p.mul(F(k(1), t, o));
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 F(k(.5), d.div(f.max(1e-4)), P(f, 1));
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 K(k(r.bitAnd(o)).mul(dt), k(i.bitAnd(o)).mul(dt), k(a.bitAnd(o)).mul(dt));
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 F(F(c, l, a.x), F(u, d, a.x), a.y);
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 = K(i.x, i.y, k(0)), c = k(1e10);
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 = K(k(e).add(i.x), k(r).add(i.y), i.z);
320
- c = P(c, le(l.sub(s)));
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 = L(B(1.414, 0, le(G(e, r).sub(i).add(G(l.x, l.y)))), _t);
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, G(t, t)), xt = h(([e, t]) => {
335
- let n = k(.1), r = bt(e.add(G(n, 0)), t), i = bt(e.add(G(0, n)), t), a = bt(e.sub(G(n, 0)), t), o = bt(e.sub(G(0, n)), t);
336
- return G(r.sub(a), i.sub(o)).div(n).mul(.5);
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 K(r.x, r.y, k(0));
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(N(g(r.x), g(r.y)), 0, 1);
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(G(a, e));
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(G(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, G(E(s), z(s)).mul(n)).mul(Et), g = F(k(-1), k(1), Oe(.5, a.z)), _ = k(1).sub(Oe(1, p));
361
- c.addAssign(z(h).mul(m).mul(g).mul(_));
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 = G(e.x.add(e.y.mul(.5)), e.y), i = A(r), a = r.sub(i), o = Oe(a.y, a.x), s = G(o, k(1).sub(o)), c = G(i.x.sub(i.y.mul(.5)), i.y), l = G(c.x.add(s.x).sub(s.y.mul(.5)), c.y.add(s.y)), u = G(c.x.add(.5), c.y.add(1)), d = e.sub(c), f = e.sub(l), p = e.sub(u), m = I(K(c.x, l.x, u.x), k(t)), h = I(K(c.y, l.y, u.y), k(n)), g = A(m.add(h.mul(.5)).add(.5)), _ = A(h.add(.5)), v = I(g, 289);
370
- v = I(v.mul(51).add(2).mul(v).add(_), 289), v = I(v.mul(34).add(10).mul(v), 289);
371
- let y = v.mul(.07482), b = E(y), x = z(y), S = G(b.x, x.x), C = G(b.y, x.y), T = G(b.z, x.z), D = N(k(.8).sub(K(O(d, d), O(f, f), O(p, p))), 0), ee = D.mul(D);
372
- return w(O(ee.mul(ee), K(O(S, d), O(C, f), O(T, p))).mul(10.9).mul(.5).add(.5), 0, 1);
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 = z(a), c = o.mul(i.x).sub(s.mul(i.y)), l = s.mul(i.x).add(o.mul(i.y)), u = B(.25, 0, O(G(c, l), G(c, l)));
379
- return w(z(c.mul(10)).mul(u).mul(.5).add(.5), 0, 1);
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)), G(t, t)).mul(.5).add(.5);
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 = G(t.x, t.y), u = e.live("antialias"), d = Math.max(1, Math.round(e.tileRepeat ?? 1)), f = N(A((d > 1 ? s.div(k(d)) : s).add(.5)), k(1)), p = e.live("aspect"), m = N(A(f.mul(p).add(.5)), k(1));
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(I(f, k(2)));
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(G(141421356, 2718281828)));
612
- return k(t.x.bitXor(t.y).mul(H(3141592653))).div(Vt);
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, G(.06711056, .00583715)))));
615
+ return j(k(52.9829189).mul(j(O(e, K(.06711056, .00583715)))));
616
616
  }
617
617
  function Wt(e) {
618
- let t = H(e.x), n = H(e.y);
619
- return k(t.mul(H(3242174889)).add(n.mul(H(2447445413)))).mul(ae(-32));
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(G(n % 3 - 1, Math.floor(n / 3) - 1))));
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 = R(n.bitAnd(t).notEqual(M(0)), M(1), M(0)), o = R(r.bitAnd(t).notEqual(M(0)), M(1), M(0));
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(z(n.x.mul(51024)).mul(3104))), n.y.assign(A(z(n.y.mul(1324)).mul(554)));
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(G(r.y.negate(), r.x).mul(z(i))), r = r.add(z(n.x.sub(n.y))), r = r.mul(.5).add(.5);
645
- let a = z(n.x.add(r.y.mul(3.1415))).add(z(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 = B(-2, se(o).mul(1.5).add(16), o).mul(12), o.mul(r.y);
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 = N(i, Jt(n, r)), n = G(n.x.sub(n.y.mul(.7)), n.x.mul(.7).add(n.y)).sub(12.31);
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 = G(t.x, t.y), r = e.constant("noiseType") ?? "blue";
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: "int",
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 r = t.div(Math.max(1, Number(e.constant("scale") ?? 4))), i = fe(r.add(K(11.3, 0, 0))), a = fe(r.add(K(0, 47.7, 0))), o = fe(r.add(K(0, 0, 93.1)));
730
- return { coord: t.add(K(i, a, o).mul(n)) };
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 r = Math.max(1, Math.round(Number(e.constant("scale") ?? 4))), i = G(t.x, t.y), a = G(r, r), o = ct(i.mul(r), a), s = ct(i.mul(r).add(G(5.2, 1.3)), a), c = i.add(G(o, s).mul(n));
733
- return { coord: K(c.x, c.y, t.z) };
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 K(k(r.bitAnd(o)).mul(Qt), k(i.bitAnd(o)).mul(Qt), k(a.bitAnd(o)).mul(Qt));
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 L(L(i.x, e).add(L(i.y, e)).add(L(i.z, e)), k(1).div(e));
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 = K(0, 0, 0).toVar(), p = K(0, 0, 0).toVar();
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 = K(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);
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 = K(0, 0, 0).toVar(), m = K(0, 0, 0).toVar(), h = K(0, 0, 0).toVar(), g = K(0, 0, 0).toVar();
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 _ = K(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 = R(b, d, R(x, y, f)), C = R(b, p, R(x, _, m)), w = R(b, h, R(x, v, g)), T = R(b, y, d), E = R(b, _, p), D = R(b, v, h);
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 = N(i, k(1e-6)), p = k(0).toVar(), m = K(0, 0, 0).toVar(), h = K(0, 0, 0).toVar(), g = k(-1).toVar();
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 = K(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(R(g.equal(-1), k(1), B(0, 1, k(.5).add(p.sub(y).mul(.5).div(f)))));
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(F(p, y, g).sub(b)), b.assign(b.div(k(1).add(f.mul(3)))), m.assign(F(m, _, g).sub(b)), h.assign(F(h, v, g).sub(b));
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) => K(e, r, c).add(tn(a.add(e), o.add(r), s.add(c), n).mul(t)).sub(i), l = K(0, 0, 0).toVar(), u = k(1e10).toVar();
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) => K(e, n, 0).add(t(i.add(e), a.add(n))).sub(r), s = K(0, 0, 0).toVar(), c = k(1e10).toVar();
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) => K(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();
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: 64,
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 = Number(e.constant("randomness") ?? 1), r = i.mul(t), o = e.constantArray("seeds", () => bn(t, n, a), "vec3"), s = (e) => e.sub(M(A(k(e).div(t))).mul(M(t))), c = (e, n) => o.element(s(n).mul(t).add(s(e))), l = e.constantArray("randoms", () => On(t * t), "float"), u = (e, n) => l.element(s(n).mul(t).add(s(e))), d = e.live("edgeWidth"), f = xn(r, c);
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: f,
1033
- edges: B(k(0), d, f).oneMinus(),
1034
- random: Sn(r, c, u)
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 = N(A(u.add(.5)), k(1)), f = i.mul(t ? d : u), p = t ? d : 0;
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: B(k(0), l, e).oneMinus(),
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 = I(A(t.x).add(A(t.y)).add(A(t.z)), 2).lessThan(1);
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: R(n, e.inputs.color1 ?? e.live("color1"), e.inputs.color2 ?? e.live("color2")),
1119
- fac: R(n, k(1), k(0))
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 = G(e.x.mul(r), e.y.mul(i)), s = h(() => {
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 = R(I(d, k(a)).notEqual(0), n.rowOffset, k(0)), m = A(o.x.sub(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 = z(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(P(re, O)), ae = g(ee).sub(re.sub(ie)), oe = g(te).sub(O.sub(ie)), A = le(G(N(ae, 0), N(oe, 0))), j = P(N(ae, oe), 0), se = A.add(j).sub(ie).negate(), ce = se.greaterThan(t);
1130
- s.assign(R(ce, _.y, s)), c.assign(R(ce, a, c)), l.assign(R(ce, d, l)), t.assign(R(ce, se, t));
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 Ne(B(0, n.edge.add(1e-5), t), s, c, l);
1134
- })(), c = s.x, l = s.y, u = s.z, d = s.w, f = M(u), p = M(d), m = R(I(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
+ 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: K(o.x.sub(v), o.y.sub(y), 0),
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 = G(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();
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 = R(I(i, k(2)).notEqual(0), k(.5), k(0)), m = A(t.x.sub(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 = le(G(e.x.sub(r), e.y.sub(h))), _ = g.lessThan(s);
1149
- s.assign(R(_, g, s)), c.assign(R(_, r, c)), l.assign(R(_, h, l)), d.assign(R(_, n, d)), f.assign(R(_, i, f)), u.assign(R(_, mt(M(n), M(i), a, o), u));
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 = R(I(i, k(2)).notEqual(0), k(.5), k(0)), u = A(t.x.sub(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 = le(G(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);
1157
- p.assign(P(p, R(v, k(1e9), _)));
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 Ne(B(r, r.add(i).add(1e-5), p), u, d, f);
1161
- })(), c = s.x, l = s.y, u = s.z, d = s.w, f = R(I(d, k(2)).notEqual(0), k(.5), k(0)), p = u.add(.5).add(f).div(a), m = d.add(.5).div(o);
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: K(e.x.sub(p).mul(a), e.y.sub(m).mul(o), 0),
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 = G(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();
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 = R(g, le(G(C, w)), k(1e9)), D = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(Fn).negate(), ee = E(D), te = z(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);
1337
- s.assign(R(O, ne, s)), c.assign(R(O, re, c)), l.assign(R(O, h.y, l)), u.assign(R(O, _, u)), o.assign(R(O, T, o));
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 Ne(s, c, l, u);
1342
+ return Me(s, c, l, u);
1341
1343
  })();
1342
1344
  return {
1343
- coord: K(i.x, i.y, 0),
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
- function zn(e, t, n, r, i) {
1447
- let a = r ?? k(0), o = h(() => {
1448
- let r = le(G(e.x, e.y)), o = y(e.y, e.x), s, c;
1449
- if (t === "polygon") {
1450
- let e = Math.max(3, Math.round(n)), t = Rn / e, a = E(A(o.div(t).add(.5)).mul(t).sub(o)).mul(r), l = Math.cos(Math.PI / e), u = w(a.div(l), 0, 1);
1451
- s = B(0, i.edge.add(1e-4), u.oneMinus()), c = u.oneMinus();
1452
- } else {
1453
- let e = j(a.mul(13.13)).mul(Rn), t = j(a.mul(27.71)).mul(Rn), n = j(a.mul(51.37)).mul(Rn), l = z(o.mul(2).add(e)).mul(.5).add(z(o.mul(3).add(t)).mul(.3)).add(z(o.mul(5).add(n)).mul(.2)), u = k(1).add(l.mul(i.irregularity.mul(.4))), d = w(r.div(u.add(1e-6)), 0, 1);
1454
- s = B(0, i.edge.add(1e-4), d.oneMinus()), c = d.oneMinus();
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
- let l = w(r, 0, 1), u = L(w(l.mul(l).oneMinus(), 0, 1), i.dome), d = B(0, .3, c), f = u.mul(d);
1457
- return K(s, f, 0);
1474
+ return q(m, h, 0);
1458
1475
  })();
1459
1476
  return {
1460
- mask: o.x,
1461
- height: o.y
1477
+ mask: s.x,
1478
+ height: s.y
1462
1479
  };
1463
1480
  }
1464
- var Bn = {
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 } = zn(t, r, Number.isFinite(i) ? Math.max(3, i) : 6, n ?? null, {
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
- }, Vn = Math.PI * 2;
1542
- function Hn(e, t) {
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(Vn).add(.5);
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 Un = [
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
- ], Wn = {
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: Un,
1661
+ options: Wn,
1608
1662
  default: "linear"
1609
1663
  }],
1610
1664
  build(e) {
1611
- return { field: Hn((e.inputs.coord ?? e.coord).mul(e.live("scale")), Math.max(0, Un.indexOf(e.constant("gradientType")))) };
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, Gn = Math.PI / 2, Kn = 20, qn = 10;
1614
- function Jn(e, t) {
1615
- if (t === 0) return k(.5).add(z(e.sub(Gn)).mul(.5));
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 Yn(e, t, n, r, i) {
1624
- let a = Math.max(1, Math.round(i.scaleNum * Kn / X)), o = Math.max(1, Math.round(i.scaleNum * qn / X)), s;
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(G(e.x, e.y), a, o, Math.max(1, i.detail), r);
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 Jn(s, i.profile);
1685
+ return Yn(s, i.profile);
1632
1686
  }
1633
- function Xn(e, t, n, r, i, a) {
1634
- let o = (e) => e.sub(Se(e)), s;
1635
- s = a.dir === 0 ? K(k(0), o(e.y), o(e.z)) : a.dir === 1 ? K(o(e.x), k(0), o(e.z)) : a.dir === 2 ? K(o(e.x), o(e.y), k(0)) : K(o(e.x), o(e.y), o(e.z));
1636
- let c = s.length().mul(t).mul(Kn).add(n);
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(G(e.x, e.y), t, t, Math.max(1, a.detail), i);
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 Jn(c, a.profile);
1695
+ return Yn(c, a.profile);
1642
1696
  }
1643
- function Zn(e, t, n, r, i, a, o) {
1644
- if (o.tileable) return o.waveType === 0 ? Yn(e, n, r, a, o) : Xn(e, t, n, r, a, o);
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(Kn) : o.dir === 1 ? s.y.mul(Kn) : o.dir === 2 ? s.z.mul(Kn) : s.x.add(s.y).add(s.z).mul(qn);
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(K(0, 1, 1)) : o.dir === 1 ? e = s.mul(K(1, 0, 1)) : o.dir === 2 && (e = s.mul(K(1, 1, 0))), c = e.length().mul(Kn);
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 Jn(c, o.profile);
1709
+ return Yn(c, o.profile);
1656
1710
  }
1657
1711
  //#endregion
1658
1712
  //#region src/graph/nodes/texture/wave.ts
1659
- var Qn = ["bands", "rings"], $n = [
1713
+ var $n = ["bands", "rings"], er = [
1660
1714
  "x",
1661
1715
  "y",
1662
1716
  "z",
1663
1717
  "diagonal"
1664
- ], er = [
1718
+ ], tr = [
1665
1719
  "sine",
1666
1720
  "saw",
1667
1721
  "triangle"
1668
- ], tr = {
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: Qn,
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: $n,
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: er,
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, Qn.indexOf(e.constant("waveType"))),
1763
- dir: Math.max(0, $n.indexOf(e.constant("direction"))),
1764
- profile: Math.max(0, er.indexOf(e.constant("profile"))),
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: Zn(t, e.live("scale"), e.live("phase"), e.live("distortion"), e.live("detailScale"), e.live("detailRoughness"), n) };
1825
+ return { field: Qn(t, e.live("scale"), e.live("phase"), e.live("distortion"), e.live("detailScale"), e.live("detailRoughness"), n) };
1772
1826
  }
1773
- }, nr = 6.283185307179586, rr = {
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(nr), r = fe(K(t.y.mul(.6), n.mul(6), k(0))).mul(e.live("waviness"));
1825
- return { field: n.mul(e.live("count")).add(r).mul(nr).sin().mul(.5).add(.5).pow(e.live("sharpness")).mul(e.live("contrast")) };
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
- }, ir = /* @__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("."), ar = new Set([
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
- ]), or = new Set([
1903
+ ]), sr = new Set([
1850
1904
  "multiply-add",
1851
1905
  "compare",
1852
1906
  "smooth-min",
1853
1907
  "smooth-max",
1854
1908
  "wrap"
1855
- ]), sr = {
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 cr(e) {
1889
- let [t, n, r] = sr[e] ?? [
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 ar.has(e) || i.push({
1952
+ return or.has(e) || i.push({
1899
1953
  key: "b",
1900
1954
  label: n ?? "B",
1901
1955
  kind: "float"
1902
- }), or.has(e) && i.push({
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 lr = {
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: ir,
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: cr(e.op ?? "mix"),
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: R(n.equal(0), k(0), t.div(n)) };
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: L(t, n) };
1970
- case "logarithm": return { field: R(t.greaterThan(0).and(n.greaterThan(0)), ue(t).div(ue(n)), k(0)) };
1971
- case "sqrt": return { field: De(t) };
1972
- case "inverse-sqrt": return { field: R(t.greaterThan(0), ce(t), k(0)) };
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: P(t, n) };
1976
- case "max": return { field: N(t, n) };
1977
- case "less-than": return { field: R(t.lessThan(n), k(1), k(0)) };
1978
- case "greater-than": return { field: R(t.greaterThan(n), k(1), k(0)) };
1979
- case "sign": return { field: Te(t) };
1980
- case "compare": return { field: R(t.sub(n).abs().lessThanEqual(N(r, k(1e-5))), k(1), k(0)) };
1981
- case "smooth-min": return { field: ur(t, n, r) };
1982
- case "smooth-max": return { field: ur(t.negate(), n.negate(), r).negate() };
1983
- case "round": return { field: Se(t) };
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: je(t) };
2040
+ case "truncate": return { field: ke(t) };
1987
2041
  case "fraction": return { field: j(t) };
1988
- case "modulo": return { field: R(n.equal(0), k(0), t.sub(n.mul(je(t.div(n))))) };
1989
- case "floored-modulo": return { field: R(n.equal(0), k(0), t.sub(n.mul(A(t.div(n))))) };
1990
- case "wrap": return { field: dr(t, n, r) };
1991
- case "snap": return { field: R(n.equal(0), k(0), A(t.div(n)).mul(n)) };
1992
- case "pingpong": return { field: fr(t, n) };
1993
- case "sine": return { field: z(t) };
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: ke(t) };
1996
- case "arcsine": return { field: R(t.abs().lessThanEqual(1), v(t), k(0)) };
1997
- case "arccosine": return { field: R(t.abs().lessThanEqual(1), _(t), k(0)) };
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: Ee(t) };
2054
+ case "sinh": return { field: we(t) };
2001
2055
  case "cosh": return { field: D(t) };
2002
- case "tanh": return { field: Ae(t) };
2003
- case "radians": return { field: be(t) };
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: F(t, n, e.live("factor")) };
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 R(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
2069
+ return B(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
2016
2070
  }
2017
- function fr(e, t) {
2071
+ function pr(e, t) {
2018
2072
  let n = t.mul(2);
2019
- return R(t.equal(0), k(0), j(e.sub(t).div(n)).mul(n).sub(t).abs());
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 pr = {
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: F(e.live("min"), e.live("max"), n) };
2117
+ return { field: I(e.live("min"), e.live("max"), n) };
2064
2118
  }
2065
- }, mr = {
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: F(e.live("colorA"), e.live("colorB"), i) };
2165
+ return { color: I(e.live("colorA"), e.live("colorB"), i) };
2112
2166
  }
2113
- }, hr = {
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: .01,
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: B(i.negate(), i, a) };
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
- }, gr = {
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: F(t, r, i) };
2288
+ return { color: I(t, r, i) };
2235
2289
  }
2236
- }, _r = {
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 ?? K(0, 0, 0), n = e.inputs.fac ?? e.live("fac");
2264
- return { color: F(t, K(1, 1, 1).sub(t), n) };
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
- }, vr = {
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 ?? K(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));
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
- }, yr = 1e-10;
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 = R(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 = K(r, s, c);
2319
- return u = R(a.equal(4), K(l, s, r), u), u = R(a.equal(3), K(s, c, r), u), u = R(a.equal(2), K(s, r, l), u), u = R(a.equal(1), K(c, r, s), u), u = R(a.equal(0), K(r, l, s), u), R(n.equal(0), K(r, r, r), u);
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 Sr = {
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 ?? K(.8, .8, .8), n = br(t);
2376
- return { color: F(t, xr(K(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")) };
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
- }, Cr = (e, t, n, r, i) => R(e.equal(0), t, R(e.equal(1), n, R(e.equal(2), r, i)));
2379
- function wr(e, t) {
2380
- let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a = Cr(r, t[0], t[0], t[1], t[2]), o = Cr(r, t[0], t[1], t[2], t[3]), s = Cr(r, t[1], t[2], t[3], t[4]), c = Cr(r, t[2], t[3], t[4], t[4]), l = i.mul(i), u = l.mul(i);
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 Tr = () => [...Fe], Er = {
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: Tr(),
2416
- R: Tr(),
2417
- G: Tr(),
2418
- B: Tr()
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 ?? K(0, 0, 0), n = e.live("curves"), r = (e) => [
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 = wr(wr(t.x, i), a), l = wr(wr(t.y, i), o), u = wr(wr(t.z, i), s), d = e.inputs.fac ?? e.live("fac");
2434
- return { color: F(t, K(c, l, u), d) };
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
- }, Dr = {
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 ? de(t) : k(0) };
2505
+ return { field: t ? ue(t) : k(0) };
2452
2506
  }
2453
- }, Or = {
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
- }, kr = {
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: K(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
2566
+ return { color: q(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
2513
2567
  }
2514
- }, Ar = {
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(P(n, r), N(n, r)) } : { field: w(t, n, r) };
2622
+ return e.constant("mode") === "range" ? { field: t.clamp(F(n, r), P(n, r)) } : { field: w(t, n, r) };
2569
2623
  }
2570
- }, jr = {
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 ?? K(0, 0, 0);
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
- }, Mr = {
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: K(e.inputs.x ?? e.live("x"), e.inputs.y ?? e.live("y"), e.inputs.z ?? e.live("z")) };
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
- }, Nr = {
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
- }, Pr = {
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
- }, Fr = {
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 = K(W().x, W().y, k(0));
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: ve,
2784
+ generated: ge,
2731
2785
  uv: t,
2732
- object: ve,
2733
- normal: pe
2786
+ object: ge,
2787
+ normal: de
2734
2788
  };
2735
2789
  }
2736
- }, Ir = [
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
- ], Lr = new Set([
2813
+ ], Rr = new Set([
2760
2814
  "dot",
2761
2815
  "distance",
2762
2816
  "length"
2763
- ]), Rr = [{
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
- }], zr = {
2825
+ }], Br = {
2772
2826
  type: "vector-math",
2773
2827
  nodeClass: "vector",
2774
2828
  label: "Vector Math",
2775
- inputs: Rr,
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: Ir,
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: Rr,
2800
- outputs: Lr.has(t) ? [{
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 ?? K(0, 0, 0);
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: xe(t, n.normalize()) };
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: P(t, n) };
2831
- case "maximum": return { vector: N(t, n) };
2832
- case "sine": return { vector: z(t) };
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: ke(t) };
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 Br(e, t, n, r) {
2842
- let i = e.sub(t), a = E(n), o = z(n), s, c, l;
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(K(s, c, l));
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 Vr = [
2901
+ var Hr = [
2848
2902
  "x",
2849
2903
  "y",
2850
2904
  "z"
2851
- ], Hr = {
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: Vr,
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: Br(e.inputs.vector ?? e.coord, e.inputs.center ?? K(0, 0, 0), e.inputs.angle ?? e.live("angle"), Math.max(0, Vr.indexOf(e.constant("axis")))) };
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
- }, Ur = 1, Wr = {
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 = W(), i = te(n).div(te(r.x)), a = ne(n).div(ne(r.y)), o = e.live("strength"), s = G(i, a).mul(o), c = k(Ur), l = s.mul(c.div(s.length().max(c)));
2917
- return { normal: ge(K(l.x.negate(), l.y.negate(), k(1))).mul(.5).add(.5) };
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
- }, Gr = {
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: me(e.inputs.color ?? K(.5, .5, 1), e.inputs.strength ?? e.live("strength")) };
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 Kr(e) {
2952
- let t = E(e.x), n = E(e.y), r = E(e.z), i = z(e.x), a = z(e.y), o = z(e.z), s = t.mul(r), c = t.mul(o), l = i.mul(r), u = i.mul(o);
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 K(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)));
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 Yr(e, t, n, r, i) {
2972
- let a = Kr(n);
2973
- return i === 1 ? Jr(a, e.sub(t)).div(r) : i === 2 ? qr(a, e.mul(r)) : i === 3 ? qr(a, e.div(r)).normalize() : qr(a, e.mul(r)).add(t);
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 Xr = [
3031
+ var Zr = [
2978
3032
  "point",
2979
3033
  "texture",
2980
3034
  "vector",
2981
3035
  "normal"
2982
- ], Zr = {
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: Xr,
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, Xr.indexOf(e.constant("mappingType")));
3035
- return { vector: Yr(t, e.live("location"), e.live("rotation"), e.live("scale"), n) };
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
- }, Qr = [
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
- ], $r = [
3175
+ ], ei = [
3122
3176
  Z.baseColor,
3123
3177
  Z.alpha,
3124
3178
  Z.normal,
3125
3179
  Z.height
3126
- ], ei = [Z.metallic, Z.roughness], ti = [
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
- ], ni = [{
3187
+ ], ri = [{
3134
3188
  key: "bsdf",
3135
3189
  kind: "shader"
3136
- }], ri = [
3190
+ }], ii = [
3137
3191
  {
3138
3192
  key: "materialType",
3139
3193
  label: "type",
3140
3194
  type: "select",
3141
- options: Re,
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
- ], ii = Object.fromEntries(ri.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default]));
3282
- function ai(e) {
3283
- let t = Be(e.materialType), n = new Set([
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")), ri.filter((e) => n.has(e.key));
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 oi = {
3354
+ var si = {
3301
3355
  type: We,
3302
3356
  nodeClass: "shader",
3303
3357
  label: "Material",
3304
3358
  inputs: [
3305
- ...Qr,
3306
- ...ei,
3307
- ...ti
3359
+ ...$r,
3360
+ ...ti,
3361
+ ...ni
3308
3362
  ],
3309
- outputs: ni,
3310
- params: ri,
3363
+ outputs: ri,
3364
+ params: ii,
3311
3365
  declare(e) {
3312
- switch (Be(e.materialType)) {
3366
+ switch (ze(e.materialType)) {
3313
3367
  case "standard": return {
3314
- inputs: [...Qr, ...ei],
3315
- outputs: ni
3368
+ inputs: [...$r, ...ti],
3369
+ outputs: ri
3316
3370
  };
3317
3371
  case "physical": return {
3318
3372
  inputs: [
3319
- ...Qr,
3320
- ...ei,
3321
- ...ti
3373
+ ...$r,
3374
+ ...ti,
3375
+ ...ni
3322
3376
  ],
3323
- outputs: ni
3377
+ outputs: ri
3324
3378
  };
3325
3379
  case "matcap": return {
3326
- inputs: $r,
3327
- outputs: ni
3380
+ inputs: ei,
3381
+ outputs: ri
3328
3382
  };
3329
3383
  default: return {
3330
- inputs: Qr,
3331
- outputs: ni
3384
+ inputs: $r,
3385
+ outputs: ri
3332
3386
  };
3333
3387
  }
3334
3388
  },
3335
- paramsFor: ai,
3389
+ paramsFor: oi,
3336
3390
  build(e) {
3337
- let t = ze[Be(e.constant("materialType"))], n = (t) => e.inputs[t] ?? e.live(t), r = (t) => Number(e.constant(t) ?? ii[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 = {
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
- }, si = [
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
- ], ci = Object.fromEntries(si.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default])), li = {
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: si,
3594
+ params: ci,
3541
3595
  build(e) {
3542
- let t = (t) => e.inputs[t] ?? e.live(t), n = (t) => Number(e.constant(t) ?? ci[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");
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
- }, ui = {
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: K(0),
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
- }, di = {
3601
- emission: K(0, 0, 0),
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
- }, fi = [
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 pi(e, t, n) {
3676
+ function mi(e, t, n) {
3623
3677
  let r = {};
3624
- for (let i of fi) {
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] = F(a, o, n);
3682
+ r[i] = I(a, o, n);
3629
3683
  continue;
3630
3684
  }
3631
- let s = di[i];
3632
- s === void 0 ? r[i] = a ?? o : r[i] = a === void 0 ? F(s, o, n) : F(a, s, n);
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 mi = {
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: pi(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.live("fac")) };
3725
+ return { shader: mi(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.live("fac")) };
3672
3726
  }
3673
- }, hi = {
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
- }, gi = {
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
- }, _i = {
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
- }, vi = {
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 yi(e, t) {
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 bi = class {
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 xi() {
3764
- return new bi().register(it).register(at).register(Bt).register(Xt).register(Zt).register(kn).register(An).register(Pn).register(Ln).register(Bn).register(Wn).register(tr).register(rr).register(lr).register(pr).register(mr).register(hr).register(gr).register(_r).register(vr).register(Sr).register(Er).register(Dr).register(Or).register(kr).register(Ar).register(jr).register(Mr).register(Nr).register(Pr).register(Fr).register(zr).register(Hr).register(Wr).register(Gr).register(Zr).register(oi).register(li).register(ui).register(mi).register(hi).register(gi).register(_i).register(vi);
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 Si = xi(), Ci = /* @__PURE__ */ new Map();
3767
- function wi(t) {
3768
- let n = Math.max(2, Math.min(5, Math.round(t ?? 3))), r = Ci.get(n);
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, Ci.set(n, a), a;
3827
+ return a.minFilter = e.NearestFilter, a.magFilter = e.NearestFilter, a.needsUpdate = !0, wi.set(n, a), a;
3774
3828
  }
3775
- function Ti(e) {
3829
+ function Ei(e) {
3776
3830
  return null;
3777
3831
  }
3778
3832
  //#endregion
3779
3833
  //#region src/graph/compiler.ts
3780
- var Ei = 2048;
3781
- function Di(e, t, n) {
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 Oi(e, t) {
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 === He)?.id, c = (e, t, r, i) => {
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 === Ue), l = s && o.edges.find((e) => e.toNode === s.id && e.toInput === t);
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
- let n = V(e, W());
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 ji(e) {
3842
- let t = e.nodes.find((e) => e.type === q)?.params?.outputResolution, n = typeof t == "string" ? Number(t) : typeof t == "number" ? t : NaN;
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 Mi(e) {
3846
- let t = e.nodes.find((e) => e.type === q), n = t && e.edges.find((e) => e.toNode === t.id && e.toInput === "surface"), r = n && e.nodes.find((e) => e.id === n.fromNode);
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: Be(i.materialType),
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 Ni(e) {
3866
- let t = e.nodes.find((e) => e.type === q), 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) => {
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: Be(i.materialType),
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 Pi(e, t, n) {
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 Fi(e, t, n, r, i, a) {
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: ki(n.field, "float"),
3959
+ colorNode: Ai(n.field, "float"),
3906
3960
  sizing: { size: s }
3907
- }), { field: V(l, W().mul(k(a))).r };
3961
+ }), { field: U(l, G().mul(k(a))).r };
3908
3962
  }
3909
- function Ii(e) {
3963
+ function Li(e) {
3910
3964
  let t = 0;
3911
- for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t += Ii(n.subgraph));
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 Li(e, t, n) {
3968
+ function Ri(e, t, n) {
3915
3969
  let r = {
3916
3970
  ...n,
3917
- outputResolution: n.outputResolution ?? ji(e)
3918
- }, i = r.backend === "live" ? ye : K(W().x, W().y, k(0)), a = r.soloNodeId ? { id: r.soloNodeId } : void 0, o = [], { outputs: s, uniforms: c, usage: l } = zi(e, t, r, i, o, r.allocCache ? Oi(e, t) : /* @__PURE__ */ new Set(), void 0, a);
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" ? Ri(a.value, a.kind) : Xi(e, t, s),
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 Ri(e, t) {
3980
+ function zi(e, t) {
3927
3981
  return {
3928
- baseColor: t === "float" ? K(e) : e,
3982
+ baseColor: t === "float" ? q(e) : e,
3929
3983
  roughness: k(1),
3930
3984
  metallic: k(0)
3931
3985
  };
3932
3986
  }
3933
- function zi(e, t, n, r, i, a, o, s) {
3934
- Qi(e, t, o !== void 0);
3935
- let c = Zi(e), l = new Map(e.nodes.map((e) => [e.id, e])), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map();
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 = Vi(c, t, n, r, i, a, Ki(c, e, u, l, t), s);
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 = Ki(c, e, u, l, t), g = t.get(c.type), _ = Yi(g, c);
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 = Pi(c, g, n), y = Bi(p, c, g, h, _, r, n, v, f), b = g.build(y);
3956
- u.set(p, Fi(c, g, b, n, i, v) ?? b);
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 Bi(t, n, r, i, a, o, s, c, l) {
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 Me(t);
4044
+ return je(t);
3991
4045
  }
3992
- return Me(Array.from(a), "float");
4046
+ return je(Array.from(a), "float");
3993
4047
  }
3994
4048
  };
3995
4049
  }
3996
- function Vi(e, t, n, r, i, a, o, s) {
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 } = zi(c, t, n, r, i, a, o, s), f = c.nodes.find((e) => e.type === Ue), p = {};
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 ? qi(o, r.kind, l, m, t) : void 0;
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 && Di(o.fromNode, c, t) || a.has(s) ? { minSize: Ei } : void 0, d = n.allocCache(s, r.kind, l);
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: ki(u, r.kind),
4071
+ colorNode: Ai(u, r.kind),
4018
4072
  sizing: l
4019
- }), p[r.key] = Ai(d, r.kind);
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 Hi = {
4082
+ var Ui = {
4029
4083
  side: e.DoubleSide,
4030
4084
  polygonOffset: !0,
4031
4085
  polygonOffsetFactor: 1,
4032
4086
  polygonOffsetUnits: 1
4033
4087
  };
4034
- function Ui(t = "physical", n = {}) {
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
- ...Hi
4093
+ ...Ui
4040
4094
  });
4041
- case "lambert": return new s({ ...Hi });
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
- ...Hi
4099
+ ...Ui
4046
4100
  });
4047
4101
  case "toon": return new f({
4048
- gradientMap: wi(n.gradientSteps),
4049
- ...Hi
4102
+ gradientMap: Ti(n.gradientSteps),
4103
+ ...Ui
4050
4104
  });
4051
4105
  case "matcap": return new c({
4052
- matcap: Ti(n.matcap),
4053
- ...Hi
4106
+ matcap: Ei(n.matcap),
4107
+ ...Ui
4054
4108
  });
4055
4109
  default: return new u({
4056
4110
  metalness: 0,
4057
4111
  roughness: .9,
4058
- ...Hi
4112
+ ...Ui
4059
4113
  });
4060
4114
  }
4061
4115
  }
4062
- function Wi(e, t, n) {
4063
- let r = ze[n], i = e;
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 Gi(e, t, n) {
4071
- let { bundle: r, uniforms: i } = Li(e, t, n), { type: a, settings: o } = Mi(e), s = Ui(a, o);
4072
- return Wi(s, r, a), {
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 Ki(e, t, n, r, i) {
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 ? qi(s, o.kind, n, r, i) : void 0;
4135
+ a[o.key] = s ? Ji(s, o.kind, n, r, i) : void 0;
4082
4136
  }
4083
4137
  return a;
4084
4138
  }
4085
- function qi(e, t, n, r, i) {
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 = Ji(a, e));
4145
+ e && (a = Yi(a, e));
4092
4146
  }
4093
4147
  return a;
4094
4148
  }
4095
- function Ji(e, t) {
4149
+ function Yi(e, t) {
4096
4150
  switch (t) {
4097
4151
  case "float-to-vector":
4098
- case "float-to-color": return K(e);
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 de(e);
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 Yi(t, n) {
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] = U(new e.Color(t));
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] = U(new e.Vector3(n.x, n.y, n.z));
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] = U(Number.isFinite(e) ? e : Number(i.default) || 0);
4121
- } else i.type === "curve" && (r[i.key] = Me(Le(t), "float"));
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 Xi(e, t, n) {
4126
- let r = e.nodes.find((e) => e.type === q);
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 ? qi(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
4183
+ return i ? Ji(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
4130
4184
  }
4131
- function Zi(e) {
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 Qi(e, t, n = !1) {
4149
- let r = n ? Ue : q, i = e.nodes.filter((e) => e.type === r);
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 $i = 4;
4168
- function ea(e) {
4221
+ var ea = 4;
4222
+ function ta(e) {
4169
4223
  return structuredClone(e);
4170
4224
  }
4171
- function ta() {
4172
- return ea(Pe);
4225
+ function na() {
4226
+ return ta(Ne);
4173
4227
  }
4174
- function na(e) {
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 && na(t.subgraph);
4232
+ }), t.subgraph && ra(t.subgraph);
4179
4233
  }
4180
- var ra = new Set([
4234
+ var ia = new Set([
4181
4235
  "curl",
4182
4236
  "paper",
4183
4237
  "wool",
4184
4238
  "stone",
4185
4239
  "erosion"
4186
4240
  ]);
4187
- function ia(e) {
4188
- for (let t of e.nodes) t.type === "tileable-noise" && ra.has(t.params.noiseType) && (t.params = {
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 && ia(t.subgraph);
4246
+ }), t.subgraph && aa(t.subgraph);
4193
4247
  }
4194
- function aa(e) {
4195
- let t = ea(e);
4196
- return (e.version ?? 0) < 3 && na(t), (e.version ?? 0) < 4 && ia(t), t.version = 4, t;
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 oa(e, t) {
4252
+ function sa(e, t) {
4199
4253
  return e.nodes.find((e) => e.id === t);
4200
4254
  }
4201
- function sa(e, t) {
4255
+ function ca(e, t) {
4202
4256
  return e.find((e) => e.key === t);
4203
4257
  }
4204
- function ca(e) {
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 la = class {
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 = ta(), t = Si) {
4214
- this.registry = t, this.doc = aa(e), this.validate(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 = Li(this.doc, this.registry, e);
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 = aa(e);
4294
+ let t = oa(e);
4241
4295
  this.validate(t), this.doc = t, this.emit({ kind: "structural" });
4242
4296
  }
4243
4297
  getDocument() {
4244
- return ea(this.doc);
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 === q);
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 = oa(this.doc, e);
4313
+ let r = sa(this.doc, e);
4260
4314
  if (!r) return !1;
4261
- let i = this.registry.get(r.type), a = sa(yi(r, this.registry), t) ?? sa(i.params, t);
4262
- return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n, ca(a) === "param" ? this.emit({
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
- Li(e, this.registry, { backend: "live" }), this.lastError_ = null;
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
- }, ua = [
4336
+ }, da = [
4283
4337
  "roughness",
4284
4338
  "metallic",
4285
4339
  "ambientOcclusion"
4286
- ], da = ["baseColor", "emission"];
4287
- function fa(e, t) {
4288
- return ua.includes(t) ? K(e) : da.includes(t) ? Ce(e) : e;
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, pa = new p(new o()), ma = new o();
4344
+ var $ = 2, ma = new p(new o());
4291
4345
  function ha(e, t, n) {
4292
- let r = ($ - 1) / 2, i = K(0, 0, 0);
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 = G(o - r, a - r).mul(t), c = V(e, W().add(s)).xyz;
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 ? ge(i).mul(.5).add(.5) : i;
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(e, r) {
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 = G(1 / e, 1 / r), u = (e) => {
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 va() {
4375
+ function ya() {
4316
4376
  return new o();
4317
4377
  }
4318
- var ya = new a(), ba = new r(-1, 1, 1, -1, 0, 1), xa = [];
4319
- async function Sa(e, t, n) {
4320
- for (; xa.length < t.length;) xa.push(new p());
4321
- ya.clear();
4322
- for (let e = 0; e < t.length; e++) xa[e].material = t[e], ya.add(xa[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(_a(n * $, n * $).ssRT), await e.compileAsync(ya, ba), e.setRenderTarget(r);
4384
+ e.setRenderTarget(va(n * $, n * $).ssRT), await e.compileAsync(ba, xa), e.setRenderTarget(r);
4325
4385
  }
4326
- function Ca(e, t, n) {
4327
- pa.material = t;
4386
+ function wa(e, t, n) {
4387
+ ma.material = t;
4328
4388
  let r = e.getRenderTarget();
4329
- e.setRenderTarget(n), pa.render(e), e.setRenderTarget(r);
4389
+ e.setRenderTarget(n), ma.render(e), e.setRenderTarget(r);
4330
4390
  }
4331
- function wa(e, t, n, r = !1) {
4332
- let { ssRT: i, downColorQuad: a, downNormalQuad: o } = _a(n.width * $, n.height * $);
4333
- pa.material = t;
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), pa.render(e), e.setRenderTarget(n), (r ? o : a).render(e), e.setRenderTarget(s);
4395
+ e.setRenderTarget(i), ma.render(e), e.setRenderTarget(n), (r ? o : a).render(e), e.setRenderTarget(s);
4336
4396
  }
4337
- function Ta(e, t, n, r = !1) {
4338
- ma.colorNode = t, ma.needsUpdate = !0, wa(e, ma, n, r);
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 Ea = 1024, Da = 8, Oa = 4096;
4343
- function ka(e, t) {
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, Oa);
4428
+ return Math.min(n, Ma);
4346
4429
  }
4347
- function Aa(e) {
4430
+ function Pa(e) {
4348
4431
  return e?.minSize != null;
4349
4432
  }
4350
- var ja = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator.userAgent) && !/firefox|fxios/i.test(navigator.userAgent), Ma = [
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 Na(t, n) {
4359
- let r = new m(n, n), i = r.texture;
4360
- return i.colorSpace = t !== "height" && da.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 = Da, r;
4361
- }
4362
- function Pa(t, n = !1) {
4363
- let r = new m(t, t, { type: e.HalfFloatType }), i = r.texture;
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 Fa = class {
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 = Na(e, this.size), this.targets.set(e, 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 = va(), this.mats.set(e, 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 = Pa(t, n), this.cacheTargets.set(e, r)), 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 = va(), this.cacheMats.set(e, 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 ||= Na("height", this.size), 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 = Me(t);
4442
- } else s = Me(Array.from(r), "float");
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
- }, Ia = class {
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 = Ma, t = Ea) {
4520
- return new Fa(t, e);
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, ka(e.size, r), Aa(r)),
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 = Ii(t.document);
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 = fa(n, t), r.needsUpdate = !0, p.push({
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 = K(a.height), t.needsUpdate = !0, p.push({
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, Ca(r, n, e.cacheTarget(t.cacheId, ka(e.size, t.sizing), Aa(t.sizing)));
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 (ja) {
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 Sa(r, p.map((e) => e.mat), e.size);
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) wa(r, e.mat, e.target, e.isNormal);
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
- let r = e.firstTarget();
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) Ca(n, e.cacheMaterial(t.cacheId), e.cacheTarget(t.cacheId, ka(e.size, t.sizing), Aa(t.sizing)));
4622
- for (let t of e.present) wa(n, e.channelMaterial(t), e.target(t), t === "normal");
4623
- e.hasHeight && e.heightTarget && wa(n, e.channelMaterial("height"), e.heightTarget, !1);
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, ka(n, r), Aa(r)).rt.texture
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, ka(n, e.sizing), Aa(e.sizing));
4652
- t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0, Ca(r, t.mat, t.rt);
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
- Ta(r, fa(o, t), c, t === "normal");
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), this.scratchSize = e), this.scratch;
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: Pa(n, r),
4675
- mat: va()
4843
+ rt: Ra(n, r),
4844
+ mat: ya()
4676
4845
  }, this.scratchCaches.set(e, i)), i;
4677
4846
  }
4678
- }, La = new Ia();
4847
+ }, Va = new Ba();
4679
4848
  //#endregion
4680
4849
  //#region src/tsl/triplanar.ts
4681
- function Ra(e) {
4682
- let t = L(he.abs(), e);
4683
- return t.div(t.dot(K(1, 1, 1)).max(1e-4));
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 za(e, t, n) {
4854
+ function Ua(e, t, n) {
4686
4855
  return h(() => {
4687
- let r = ye.mul(t), i = Ra(n), a = V(e, r.yz).mul(i.x), o = V(e, r.zx).mul(i.y), s = V(e, r.xy).mul(i.z);
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 Ba(e, t, n) {
4862
+ function Wa(e, t, n) {
4694
4863
  return h(() => {
4695
- let r = ye.mul(t), i = Ra(n), a = he.sign(), o = V(e, r.yz).xyz.mul(2).sub(1), s = V(e, r.zx).xyz.mul(2).sub(1), c = V(e, r.xy).xyz.mul(2).sub(1), l = K(o.x, o.y, o.z.mul(a.x)), u = K(s.x, s.y, s.z.mul(a.y)), d = K(c.x, c.y, c.z.mul(a.z));
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 Va = .3;
4702
- function Ha(e, t, n, r) {
4870
+ var Ga = .3;
4871
+ function Ka(e, t, n, r) {
4703
4872
  return h(() => {
4704
- let i = _e.normalize(), a = (t) => V(e, t).x, o = 1 / r, s = i.xy.div(i.z.abs().max(Va)).mul(n).mul(o), c = t.toVar(), l = x(!1).toVar(), u = t, d = k(1).sub(a(u));
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 = we(f.div(f.sub(p).max(1e-5))), h = F(t, u, m);
4707
- c.assign(R(l.not().and(i), h, c)), l.assign(l.or(i)), u = t, d = n;
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 Ua = 12;
4715
- function Wa(e, t) {
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 Ga = class {
4893
+ var Ya = class {
4725
4894
  graph;
4726
4895
  service;
4727
4896
  source;
4728
- offlineMat = Ui();
4897
+ offlineMat = Wi();
4729
4898
  matType = "physical";
4730
4899
  matSig = "";
4731
4900
  liveUniforms = /* @__PURE__ */ new Map();
4732
4901
  material_;
4733
- scaleUniform = U(1.2);
4734
- sharpnessUniform = U(8);
4735
- roughnessFactor = U(1);
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(Ma, this.surfaceBakeSize()), this.material_ = this.buildLive(), this.graph.onChange((e) => this.onGraphChange(e));
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 = Le(n.value), r = t.array;
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(ji(this.graph.document) / 64) * 64);
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 } = Mi(this.graph.document), i = Wa(n, r), a = i !== this.matSig;
4917
- a && (t = this.offlineMat, this.offlineMat = Ui(n, r), this.matType = n, this.matSig = i);
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 } = Gi(this.graph.document, this.graph.getRegistry(), {
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 = ze[this.matType], r = this.scaleUniform, i = this.sharpnessUniform, a = this.set.hasHeight && !this.triplanar && this.parallaxScale.value > 0, o = W(), s = a ? Ha(this.set.heightTarget.texture, o, this.parallaxScale, Ua) : void 0, c = o.dFdx(), l = o.dFdy(), u = (e) => a ? V(e, s).grad(c, l) : V(e), d = (e) => this.triplanar ? za(this.set.texture(e), r, i) : u(this.set.texture(e)), f = e.has("normal") ? this.triplanar ? Ba(this.set.texture("normal"), r, i) : me(u(this.set.texture("normal")).xyz, k(1)) : he;
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 = K(0, 0, 0), t.emissiveNode = f.normalize().mul(.5).add(.5), t.roughnessNode = t.metalnessNode = t.aoNode = t.normalNode = null, t.needsUpdate = !0;
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").mul(this.colorTint) : null, t.normalNode = e.has("normal") ? f : null, n.roughMetal && (t.roughnessNode = e.has("roughness") ? d("roughness").r.mul(this.roughnessFactor) : null, t.metalnessNode = e.has("metallic") ? d("metallic").r.mul(this.metalnessFactor) : null), n.ao) {
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 Ka(t) {
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 qa(e, t) {
4972
- let n = Ni(e), r = ze[n.type], i = Ka(n.type), a = i, o = (e) => t.get(e), s = o("baseColor");
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 = wi(n.gradientSteps)), n.type === "matcap" && (a.matcap = Ti(n.matcap)), i;
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 Ja = class {
5160
+ var Qa = class {
4994
5161
  graph;
4995
5162
  surface;
4996
5163
  service;
4997
5164
  constructor(e = {}) {
4998
- this.service = e.bakeService ?? La, this.graph = new la(e.document, e.registry ?? Si), this.surface = new Ga(this.graph, this.service, e.source);
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 qa(this.graph.document, { get: (e) => this.surface.getChannelTexture(e) });
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 Ya(e) {
5052
- return Array.isArray(e) ? `[${e.map(Ya).join(",")}]` : e && typeof e == "object" ? `{${Object.entries(e).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => `${e}:${Ya(t)}`).join(",")}}` : JSON.stringify(e);
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 Xa(e, t) {
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 Za(e, t) {
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: Xa(e, t),
5066
- subgraph: e.subgraph ? Qa(e.subgraph, t) : null
5235
+ params: eo(e, t),
5236
+ subgraph: e.subgraph ? no(e.subgraph, t) : null
5067
5237
  };
5068
5238
  }
5069
- function Qa(e, t) {
5239
+ function no(e, t) {
5070
5240
  return {
5071
5241
  version: e.version,
5072
- nodes: e.nodes.map((e) => Za(e, t)).sort((e, t) => String(e.id).localeCompare(String(t.id))),
5073
- edges: [...e.edges].sort((e, t) => Ya(e).localeCompare(Ya(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 $a(e, t) {
5077
- return Ya(Qa(e, t));
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 eo(e) {
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 to(e, t) {
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 no(e, t, n = {}) {
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 la(eo(l.has(o) ? {
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 = to(c, r);
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 { Fa as BakedTextureSet, Ke as COERCION_MATRIX, Ie as CURVE_CHANNELS, Fe as CURVE_IDENTITY, He as GROUP_INPUT_TYPE, Ue as GROUP_OUTPUT_TYPE, Ve as GROUP_TYPE, $i as MATERIAL_DOCUMENT_VERSION, q as MATERIAL_OUTPUT_TYPE, Re as MATERIAL_TYPES, ze as MATERIAL_TYPE_CAPS, Ia as MaterialBakeService, Ja as MaterialGraphRuntime, la as MaterialGraphSession, bi as NodeRegistry, Ge as PBR_SOCKETS, We as SHADER_MATERIAL_TYPE, Ma as SURFACE_CHANNELS, Ga as TexturedSurface, La as bakeService, qa as buildMeshMaterial, ea as cloneMaterialDocument, qe as coercionFor, Gi as compileGraph, Li as compileSockets, Ii as countGraphNodes, ta as createDefaultMaterialDocument, xi as createDefaultRegistry, $a as createMaterialTopologyKey, Le as curveToArray, Si as defaultRegistry, aa as migrateMaterialDocument, Ui as newSurfaceMaterial, yi as nodeParamDefs, Q as nodePorts, Be as normalizeMaterialType, Ni as readMaterialConfig, Mi as readMaterialSurface, ji as readOutputResolution, no as runTilingTest };
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 };