material-designer-runtime 0.1.0 → 0.1.1

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, Vector3 as o } from "three";
3
3
  import { MeshBasicNodeMaterial as s, MeshPhysicalNodeMaterial as c, QuadMesh as l, RenderTarget as u } from "three/webgpu";
4
- import { Fn as d, abs as f, acos as p, asin as m, atan as h, attribute as g, bool as _, bumpMap as v, ceil as y, clamp as b, color as x, cos as S, cosh as C, cross as w, dFdx as T, dFdy as E, degrees as ee, dot as D, exp as O, exp2 as te, float as k, floatBitsToUint as ne, floor as A, fract as j, fwidth as re, int as M, inverseSqrt as ie, length as N, log as ae, luminance as oe, max as P, min as F, mix as I, mod as L, mx_noise_float as se, normalLocal as ce, normalMap as le, normalWorld as ue, normalize as de, parallaxDirection as fe, positionLocal as pe, positionWorld as me, pow as R, radians as he, reflect as ge, round as _e, sRGBTransferOETF as ve, saturate as ye, select as z, sign as be, sin as B, sinh as xe, smoothstep as V, sqrt as Se, step as Ce, tan as we, tanh as Te, texture as H, trunc as Ee, uint as U, uniform as W, uniformArray as De, uv as G, vec2 as K, vec3 as q, vec4 as Oe } from "three/tsl";
5
- var ke = {
4
+ import { Fn as d, abs as f, acos as p, asin as m, atan as h, attribute as g, bool as _, bumpMap as v, ceil as y, clamp as b, color as x, cos as S, cosh as C, cross as w, dFdx as T, dFdy as E, degrees as ee, dot as D, exp as O, exp2 as te, float as k, floatBitsToUint as ne, floor as A, fract as j, fwidth as re, int as M, inverseSqrt as ie, length as N, log as ae, luminance as oe, max as P, min as F, mix as I, mod as L, mx_noise_float as R, normalLocal as se, normalMap as ce, normalWorld as le, normalize as ue, parallaxDirection as de, positionLocal as fe, positionWorld as pe, pow as z, radians as me, reflect as he, round as ge, sRGBTransferOETF as _e, saturate as ve, select as B, sign as ye, sin as V, sinh as be, smoothstep as H, sqrt as xe, step as Se, tan as Ce, tanh as we, texture as U, trunc as Te, uint as W, uniform as G, uniformArray as Ee, uv as K, vec2 as q, vec3 as J, vec4 as De } from "three/tsl";
5
+ var Oe = {
6
6
  version: 2,
7
7
  nodes: [{
8
8
  id: "pr",
@@ -29,20 +29,20 @@ var ke = {
29
29
  toNode: "out",
30
30
  toInput: "surface"
31
31
  }]
32
- }, Ae = [
32
+ }, ke = [
33
33
  0,
34
34
  .25,
35
35
  .5,
36
36
  .75,
37
37
  1
38
- ], je = [
38
+ ], Ae = [
39
39
  "C",
40
40
  "R",
41
41
  "G",
42
42
  "B"
43
43
  ];
44
- function Me(e) {
45
- let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ?? Ae[n]);
44
+ function je(e) {
45
+ let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ?? ke[n]);
46
46
  return [
47
47
  ...t(e?.C),
48
48
  ...t(e?.R),
@@ -50,14 +50,14 @@ function Me(e) {
50
50
  ...t(e?.B)
51
51
  ];
52
52
  }
53
- var Ne = "group", Pe = "group-input", Fe = "group-output", Ie = "material-output", Le = [
53
+ var Me = "group", Ne = "group-input", Pe = "group-output", Fe = "material-output", Ie = [
54
54
  "baseColor",
55
55
  "normal",
56
56
  "emission",
57
57
  "roughness",
58
58
  "metallic",
59
59
  "ambientOcclusion"
60
- ], Re = {
60
+ ], Le = {
61
61
  float: {
62
62
  float: "identity",
63
63
  vector: "float-to-vector",
@@ -75,28 +75,28 @@ var Ne = "group", Pe = "group-input", Fe = "group-output", Ie = "material-output
75
75
  },
76
76
  shader: { shader: "identity" }
77
77
  };
78
- function ze(e, t) {
79
- return Re[e]?.[t];
78
+ function Re(e, t) {
79
+ return Le[e]?.[t];
80
80
  }
81
81
  //#endregion
82
82
  //#region src/tsl/blender-noise.ts
83
- var J = (e, t) => e.shiftLeft(t).bitOr(e.shiftRight(32 - t));
84
- function Be(e, t, n) {
85
- let r = 3735928584, i = U(r).toVar(), a = U(r).toVar(), o = U(r).toVar();
86
- 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(J(a, 14))), i.assign(i.bitXor(o)), i.assign(i.sub(J(o, 11))), a.assign(a.bitXor(i)), a.assign(a.sub(J(i, 25))), o.assign(o.bitXor(a)), o.assign(o.sub(J(a, 16))), i.assign(i.bitXor(o)), i.assign(i.sub(J(o, 4))), a.assign(a.bitXor(i)), a.assign(a.sub(J(i, 14))), o.assign(o.bitXor(a)), o.assign(o.sub(J(a, 24))), o;
83
+ var Y = (e, t) => e.shiftLeft(t).bitOr(e.shiftRight(32 - t));
84
+ function ze(e, t, n) {
85
+ let r = 3735928584, i = W(r).toVar(), a = W(r).toVar(), o = W(r).toVar();
86
+ 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(Y(a, 14))), i.assign(i.bitXor(o)), i.assign(i.sub(Y(o, 11))), a.assign(a.bitXor(i)), a.assign(a.sub(Y(i, 25))), o.assign(o.bitXor(a)), o.assign(o.sub(Y(a, 16))), i.assign(i.bitXor(o)), i.assign(i.sub(Y(o, 4))), a.assign(a.bitXor(i)), a.assign(a.sub(Y(i, 14))), o.assign(o.bitXor(a)), o.assign(o.sub(Y(a, 24))), o;
87
87
  }
88
- var Ve = (e, t, n) => Be(U(e), U(t), U(n)), He = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), Ue = (e, t) => z(t.notEqual(U(0)), e.negate(), e);
89
- function We(e, t, n, r) {
90
- let i = e.bitAnd(U(15)).toVar(), a = z(i.lessThan(U(8)), t, n), o = z(i.equal(U(12)).or(i.equal(U(14))), t, r), s = z(i.lessThan(U(4)), n, o);
91
- return Ue(a, i.bitAnd(U(1))).add(Ue(s, i.bitAnd(U(2))));
88
+ var Be = (e, t, n) => ze(W(e), W(t), W(n)), Ve = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), He = (e, t) => B(t.notEqual(W(0)), e.negate(), e);
89
+ function Ue(e, t, n, r) {
90
+ 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);
91
+ return He(a, i.bitAnd(W(1))).add(He(s, i.bitAnd(W(2))));
92
92
  }
93
- function Ge(e, t, n, r) {
93
+ function We(e, t, n, r) {
94
94
  let i = k(1).sub(t), a = k(1).sub(n);
95
95
  return k(1).sub(r).mul(a.mul(e[0].mul(i).add(e[1].mul(t))).add(n.mul(e[2].mul(i).add(e[3].mul(t))))).add(r.mul(a.mul(e[4].mul(i).add(e[5].mul(t))).add(n.mul(e[6].mul(i).add(e[7].mul(t))))));
96
96
  }
97
- function Ke(e) {
98
- let t = A(e.x).toVar(), n = A(e.y).toVar(), r = A(e.z).toVar(), i = e.x.sub(t).toVar(), a = e.y.sub(n).toVar(), o = e.z.sub(r).toVar(), s = M(t), c = M(n), l = M(r), u = He(i), d = He(a), f = He(o), p = (e, t, n) => We(Ve(s.add(e), c.add(t), l.add(n)), i.sub(e), a.sub(t), o.sub(n));
99
- return Ge([
97
+ function Ge(e) {
98
+ let t = A(e.x).toVar(), n = A(e.y).toVar(), r = A(e.z).toVar(), i = e.x.sub(t).toVar(), a = e.y.sub(n).toVar(), o = e.z.sub(r).toVar(), s = M(t), c = M(n), l = M(r), u = Ve(i), d = Ve(a), f = Ve(o), p = (e, t, n) => Ue(Be(s.add(e), c.add(t), l.add(n)), i.sub(e), a.sub(t), o.sub(n));
99
+ return We([
100
100
  p(0, 0, 0),
101
101
  p(1, 0, 0),
102
102
  p(0, 1, 0),
@@ -107,18 +107,18 @@ function Ke(e) {
107
107
  p(1, 1, 1)
108
108
  ], u, d, f);
109
109
  }
110
- var qe = (e) => Ke(e).mul(.982);
111
- function Je(e, t, n, r) {
110
+ var Ke = (e) => Ge(e).mul(.982);
111
+ function qe(e, t, n, r) {
112
112
  let i = Math.max(0, Math.min(15, Math.floor(t)));
113
113
  return d(() => {
114
114
  let t = k(1).toVar(), a = k(1).toVar(), o = k(0).toVar(), s = k(0).toVar();
115
- for (let c = 0; c <= i; c++) o.assign(o.add(qe(e.mul(a)).mul(t))), s.assign(s.add(t)), t.assign(t.mul(n)), a.assign(a.mul(r));
115
+ for (let c = 0; c <= i; c++) o.assign(o.add(Ke(e.mul(a)).mul(t))), s.assign(s.add(t)), t.assign(t.mul(n)), a.assign(a.mul(r));
116
116
  return o.div(s).mul(.5).add(.5);
117
117
  })();
118
118
  }
119
119
  //#endregion
120
120
  //#region src/graph/nodes/texture/fbm.ts
121
- var Ye = {
121
+ var Je = {
122
122
  type: "fbm",
123
123
  nodeClass: "texture",
124
124
  label: "Noise (FBM)",
@@ -169,9 +169,9 @@ var Ye = {
169
169
  }
170
170
  ],
171
171
  build(e) {
172
- return { field: Je((e.inputs.coord ?? e.coord).mul(e.uniforms.scale), e.params.octaves ?? 4, e.uniforms.gain, e.uniforms.lacunarity) };
172
+ return { field: qe((e.inputs.coord ?? e.coord).mul(e.uniforms.scale), e.params.octaves ?? 4, e.uniforms.gain, e.uniforms.lacunarity) };
173
173
  }
174
- }, Xe = {
174
+ }, Ye = {
175
175
  type: "domain-warp",
176
176
  nodeClass: "vector",
177
177
  label: "Domain Warp",
@@ -201,35 +201,35 @@ var Ye = {
201
201
  default: 1
202
202
  }],
203
203
  build(e) {
204
- let t = e.inputs.coord ?? e.coord, n = t.div(e.uniforms.scale), r = se(n.add(q(11.3, 0, 0))), i = se(n.add(q(0, 47.7, 0))), a = se(n.add(q(0, 0, 93.1)));
205
- return { coord: t.add(q(r, i, a).mul(e.uniforms.amount)) };
204
+ let t = e.inputs.coord ?? e.coord, n = t.div(e.uniforms.scale), r = R(n.add(J(11.3, 0, 0))), i = R(n.add(J(0, 47.7, 0))), a = R(n.add(J(0, 0, 93.1)));
205
+ return { coord: t.add(J(r, i, a).mul(e.uniforms.amount)) };
206
206
  }
207
- }, Ze = (e) => L(e.mul(34).add(1).mul(e), 289), Qe = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), $e = d(([e, t]) => {
208
- let n = A(e.xyxy).add(Oe(0, 0, 1, 1)), r = j(e.xyxy).sub(Oe(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(Ze(Ze(a).add(o)).mul(.0243902439)).mul(2).sub(1), u = f(l).sub(.5), d = l.sub(A(l.add(.5))), p = K(d.x, u.x), m = K(d.y, u.y), h = K(d.z, u.z), g = K(d.w, u.w), _ = k(1.79284291400159).sub(k(.85373472095314).mul(Oe(D(p, p), D(h, h), D(m, m), D(g, g))));
207
+ }, Xe = (e) => L(e.mul(34).add(1).mul(e), 289), Ze = (e) => e.mul(e).mul(e).mul(e.mul(e.mul(6).sub(15)).add(10)), Qe = d(([e, t]) => {
208
+ let n = A(e.xyxy).add(De(0, 0, 1, 1)), r = j(e.xyxy).sub(De(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(Xe(Xe(a).add(o)).mul(.0243902439)).mul(2).sub(1), u = f(l).sub(.5), d = l.sub(A(l.add(.5))), p = q(d.x, u.x), m = q(d.y, u.y), h = q(d.z, u.z), g = q(d.w, u.w), _ = k(1.79284291400159).sub(k(.85373472095314).mul(De(D(p, p), D(h, h), D(m, m), D(g, g))));
209
209
  p = p.mul(_.x), h = h.mul(_.y), m = m.mul(_.z), g = g.mul(_.w);
210
- let v = D(p, K(s.x, c.x)), y = D(m, K(s.y, c.y)), b = D(h, K(s.z, c.z)), x = D(g, K(s.w, c.w)), S = Qe(r.xy), C = I(K(v, b), K(y, x), S.x);
210
+ let v = D(p, q(s.x, c.x)), y = D(m, q(s.y, c.y)), b = D(h, q(s.z, c.z)), x = D(g, q(s.w, c.w)), S = Ze(r.xy), C = I(q(v, b), q(y, x), S.x);
211
211
  return I(C.x, C.y, S.y).mul(2.3);
212
212
  });
213
- function et(e, t, n, r, i, a, o = 2) {
213
+ function $e(e, t, n, r, i, a, o = 2) {
214
214
  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 = re(e), u = k(0), d = k(0), f = k(1), p = Math.max(2, Math.round(o));
215
215
  for (let t = 0; t < Math.max(1, r); t++) {
216
- let n = Math.round(p ** +t), r = K(s.mul(n), c.mul(n)), o = f;
216
+ let n = Math.round(p ** +t), r = q(s.mul(n), c.mul(n)), o = f;
217
217
  if (a !== void 0) {
218
- let e = P(r.x.mul(l.x), r.y.mul(l.y)), t = b(k(1).sub(V(.2, .5, e)), 0, 1);
218
+ let e = P(r.x.mul(l.x), r.y.mul(l.y)), t = b(k(1).sub(H(.2, .5, e)), 0, 1);
219
219
  o = f.mul(I(k(1), t, a));
220
220
  }
221
- u = u.add(o.mul($e(e.mul(r), r))), d = d.add(o), f = f.mul(i);
221
+ u = u.add(o.mul(Qe(e.mul(r), r))), d = d.add(o), f = f.mul(i);
222
222
  }
223
223
  return I(k(0), u.div(d.max(1e-4)), F(d, 1));
224
224
  }
225
225
  //#endregion
226
226
  //#region src/tsl/noise/fbm.ts
227
- function tt(e, t, n, r, i, a, o, s = 2) {
227
+ function et(e, t, n, r, i, a, o, s = 2) {
228
228
  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 = re(e), d = k(0), f = k(0), p = k(1), m = Math.max(2, Math.round(s));
229
229
  for (let t = 0; t < Math.max(1, r); t++) {
230
- let n = Math.round(m ** +t), r = c.mul(n), s = l.mul(n), h = e.mul(K(r, s)), g = p;
230
+ let n = Math.round(m ** +t), r = c.mul(n), s = l.mul(n), h = e.mul(q(r, s)), g = p;
231
231
  if (o !== void 0) {
232
- let e = P(r.mul(u.x), s.mul(u.y)), t = b(k(1).sub(V(.2, .5, e)), 0, 1);
232
+ let e = P(r.mul(u.x), s.mul(u.y)), t = b(k(1).sub(H(.2, .5, e)), 0, 1);
233
233
  g = p.mul(I(k(1), t, o));
234
234
  }
235
235
  d = d.add(g.mul(a(h, r, s))), f = f.add(g), p = p.mul(i);
@@ -238,107 +238,107 @@ function tt(e, t, n, r, i, a, o, s = 2) {
238
238
  }
239
239
  //#endregion
240
240
  //#region src/tsl/noise/hash.ts
241
- var nt = 1 / 2147483648, rt = d(([e, t, n]) => {
241
+ var tt = 1 / 2147483648, nt = d(([e, t, n]) => {
242
242
  let r = e.mul(1664525).add(1013904223).toVar(), i = t.mul(1664525).add(1013904223).toVar(), a = n.mul(1664525).add(1013904223).toVar();
243
243
  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)));
244
244
  let o = M(2147483647);
245
- return q(k(r.bitAnd(o)).mul(nt), k(i.bitAnd(o)).mul(nt), k(a.bitAnd(o)).mul(nt));
245
+ return J(k(r.bitAnd(o)).mul(tt), k(i.bitAnd(o)).mul(tt), k(a.bitAnd(o)).mul(tt));
246
246
  });
247
- function it(e, t) {
247
+ function rt(e, t) {
248
248
  return typeof t == "number" && t <= 0 ? e : e.sub(M(A(k(e).div(t))).mul(M(t)));
249
249
  }
250
- function at(e, t, n, r) {
251
- return rt(it(e, n), it(t, r), M(0)).x;
250
+ function it(e, t, n, r) {
251
+ return nt(rt(e, n), rt(t, r), M(0)).x;
252
252
  }
253
- function ot(e, t, n, r) {
254
- return rt(it(e, n), it(t, r), M(0));
253
+ function at(e, t, n, r) {
254
+ return nt(rt(e, n), rt(t, r), M(0));
255
255
  }
256
- function st(e, t, n, r, i) {
257
- return rt(it(e, r), it(t, i), M(n));
256
+ function ot(e, t, n, r, i) {
257
+ return nt(rt(e, r), rt(t, i), M(n));
258
258
  }
259
259
  //#endregion
260
260
  //#region src/tsl/noise/value.ts
261
- function ct(e, t, n) {
262
- 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 = at(o, s, t, n), l = at(o.add(1), s, t, n), u = at(o, s.add(1), t, n), d = at(o.add(1), s.add(1), t, n);
261
+ function st(e, t, n) {
262
+ 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 = it(o, s, t, n), l = it(o.add(1), s, t, n), u = it(o, s.add(1), t, n), d = it(o.add(1), s.add(1), t, n);
263
263
  return I(I(c, l, a.x), I(u, d, a.x), a.y);
264
264
  }
265
265
  //#endregion
266
266
  //#region src/tsl/noise/cellular.ts
267
- var lt = 2;
268
- function ut(e, t, n) {
269
- 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);
267
+ var ct = 2;
268
+ function lt(e, t, n) {
269
+ let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = J(i.x, i.y, k(0)), c = k(1e10);
270
270
  for (let e = -1; e <= 1; e++) for (let r = -1; r <= 1; r++) {
271
- let i = ot(a.add(e), o.add(r), t, n), l = q(k(e).add(i.x), k(r).add(i.y), i.z);
271
+ let i = at(a.add(e), o.add(r), t, n), l = J(k(e).add(i.x), k(r).add(i.y), i.z);
272
272
  c = F(c, N(l.sub(s)));
273
273
  }
274
274
  return b(k(1).sub(c), 0, 1);
275
275
  }
276
- function dt(e, t, n) {
276
+ function ut(e, t, n) {
277
277
  let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = k(0), c = k(0);
278
278
  for (let e = -1; e <= 1; e++) for (let r = -1; r <= 1; r++) {
279
- let l = ot(a.add(e), o.add(r), t, n), u = R(V(1.414, 0, N(K(e, r).sub(i).add(K(l.x, l.y)))), lt);
279
+ let l = at(a.add(e), o.add(r), t, n), u = z(H(1.414, 0, N(q(e, r).sub(i).add(q(l.x, l.y)))), ct);
280
280
  s = s.add(l.z.mul(u)), c = c.add(u);
281
281
  }
282
282
  return s.div(c.max(1e-4));
283
283
  }
284
284
  //#endregion
285
285
  //#region src/tsl/noise/flow.ts
286
- var ft = (e, t) => $e(e, K(t, t)), pt = d(([e, t]) => {
287
- let n = k(.1), r = ft(e.add(K(n, 0)), t), i = ft(e.add(K(0, n)), t), a = ft(e.sub(K(n, 0)), t), o = ft(e.sub(K(0, n)), t);
288
- return K(r.sub(a), i.sub(o)).div(n).mul(.5);
286
+ var dt = (e, t) => Qe(e, q(t, t)), ft = d(([e, t]) => {
287
+ let n = k(.1), r = dt(e.add(q(n, 0)), t), i = dt(e.add(q(0, n)), t), a = dt(e.sub(q(n, 0)), t), o = dt(e.sub(q(0, n)), t);
288
+ return q(r.sub(a), i.sub(o)).div(n).mul(.5);
289
289
  });
290
+ function pt(e, t, n) {
291
+ let r = ft(e, t);
292
+ return J(r.x, r.y, k(0));
293
+ }
290
294
  function mt(e, t, n) {
291
- let r = pt(e, t);
292
- return q(r.x, r.y, k(0));
295
+ return b(ft(e, t).length().mul(.6).add(.2), 0, 1);
293
296
  }
294
297
  function ht(e, t, n) {
295
- return b(pt(e, t).length().mul(.6).add(.2), 0, 1);
296
- }
297
- function gt(e, t, n) {
298
- let r = pt(e, t);
298
+ let r = ft(e, t);
299
299
  return b(P(f(r.x), f(r.y)), 0, 1);
300
300
  }
301
- function _t(e, t, n) {
302
- let r = pt(e, t).mul(.4);
303
- return ft(e.add(r), t).mul(.5).add(.5);
301
+ function gt(e, t, n) {
302
+ let r = ft(e, t).mul(.4);
303
+ return dt(e.add(r), t).mul(.5).add(.5);
304
304
  }
305
305
  //#endregion
306
306
  //#region src/tsl/noise/gabor.ts
307
- var vt = 6.283185307179586, yt = Math.PI, bt = 8, xt = d(([e, t, n, r, i]) => {
307
+ var _t = 6.283185307179586, vt = Math.PI, yt = 8, bt = d(([e, t, n, r, i]) => {
308
308
  let a = e.mul(t), o = A(a), s = a.sub(o), c = k(0).toVar();
309
309
  for (let e = -1; e <= 1; e++) for (let a = -1; a <= 1; a++) {
310
- let l = M(o.x).add(a), u = M(o.y).add(e), d = s.sub(K(a, e));
311
- for (let e = 0; e < bt; e++) {
312
- let a = st(l, u, e * 2, t, t), o = st(l, u, e * 2 + 1, t, t), s = i.add(o.x.sub(.5).mul(yt).mul(r)), f = d.sub(K(a.x, a.y)), p = D(f, f), m = O(p.mul(-yt)).mul(k(.5).add(S(p.mul(yt)).mul(.5))), h = D(f, K(S(s), B(s)).mul(n)).mul(vt), g = I(k(-1), k(1), Ce(.5, a.z)), _ = k(1).sub(Ce(1, p));
313
- c.addAssign(B(h).mul(m).mul(g).mul(_));
310
+ let l = M(o.x).add(a), u = M(o.y).add(e), d = s.sub(q(a, e));
311
+ for (let e = 0; e < yt; e++) {
312
+ let a = ot(l, u, e * 2, t, t), o = ot(l, u, e * 2 + 1, t, t), s = i.add(o.x.sub(.5).mul(vt).mul(r)), f = d.sub(q(a.x, a.y)), p = D(f, f), m = O(p.mul(-vt)).mul(k(.5).add(S(p.mul(vt)).mul(.5))), h = D(f, q(S(s), V(s)).mul(n)).mul(_t), g = I(k(-1), k(1), Se(.5, a.z)), _ = k(1).sub(Se(1, p));
313
+ c.addAssign(V(h).mul(m).mul(g).mul(_));
314
314
  }
315
315
  }
316
316
  return c.div(6).mul(.5).add(.5);
317
317
  });
318
318
  //#endregion
319
319
  //#region src/tsl/noise/simplex.ts
320
- function St(e, t, n) {
321
- let r = K(e.x.add(e.y.mul(.5)), e.y), i = A(r), a = r.sub(i), o = Ce(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);
320
+ function xt(e, t, n) {
321
+ let r = q(e.x.add(e.y.mul(.5)), e.y), i = A(r), a = r.sub(i), o = Se(a.y, a.x), s = q(o, k(1).sub(o)), c = q(i.x.sub(i.y.mul(.5)), i.y), l = q(c.x.add(s.x).sub(s.y.mul(.5)), c.y.add(s.y)), u = q(c.x.add(.5), c.y.add(1)), d = e.sub(c), f = e.sub(l), p = e.sub(u), m = L(J(c.x, l.x, u.x), k(t)), h = L(J(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);
322
322
  v = L(v.mul(51).add(2).mul(v).add(_), 289), v = L(v.mul(34).add(10).mul(v), 289);
323
- let y = v.mul(.07482), x = S(y), C = B(y), w = K(x.x, C.x), T = K(x.y, C.y), E = K(x.z, C.z), ee = P(k(.8).sub(q(D(d, d), D(f, f), D(p, p))), 0), O = ee.mul(ee);
324
- return b(D(O.mul(O), q(D(w, d), D(T, f), D(E, p))).mul(10.9).mul(.5).add(.5), 0, 1);
323
+ let y = v.mul(.07482), x = S(y), C = V(y), w = q(x.x, C.x), T = q(x.y, C.y), E = q(x.z, C.z), ee = P(k(.8).sub(J(D(d, d), D(f, f), D(p, p))), 0), O = ee.mul(ee);
324
+ return b(D(O.mul(O), J(D(w, d), D(T, f), D(E, p))).mul(10.9).mul(.5).add(.5), 0, 1);
325
325
  }
326
326
  //#endregion
327
327
  //#region src/tsl/noise/wavelet.ts
328
- var Ct = 6.283185307179586;
329
- function wt(e, t, n) {
330
- let r = A(e), i = j(e).sub(.5), a = at(M(r.x), M(r.y), t, n).mul(Ct), o = S(a), s = B(a), c = o.mul(i.x).sub(s.mul(i.y)), l = s.mul(i.x).add(o.mul(i.y)), u = V(.25, 0, D(K(c, l), K(c, l)));
331
- return b(B(c.mul(10)).mul(u).mul(.5).add(.5), 0, 1);
328
+ var St = 6.283185307179586;
329
+ function Ct(e, t, n) {
330
+ let r = A(e), i = j(e).sub(.5), a = it(M(r.x), M(r.y), t, n).mul(St), o = S(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, D(q(c, l), q(c, l)));
331
+ return b(V(c.mul(10)).mul(u).mul(.5).add(.5), 0, 1);
332
332
  }
333
333
  //#endregion
334
334
  //#region src/tsl/noise/erosion.ts
335
- function Tt(e, t, n) {
336
- let r = pt(e, t), i = $e(e.add(r.mul(.6)), K(t, t)).mul(.5).add(.5);
335
+ function wt(e, t, n) {
336
+ let r = ft(e, t), i = Qe(e.add(r.mul(.6)), q(t, t)).mul(.5).add(.5);
337
337
  return b(k(1).sub(i.mul(2).sub(1).abs()), 0, 1);
338
338
  }
339
339
  //#endregion
340
340
  //#region src/graph/nodes/texture/tileable-noise.ts
341
- var Et = [
341
+ var Tt = [
342
342
  "perlin-fbm",
343
343
  "value",
344
344
  "worley",
@@ -351,23 +351,23 @@ var Et = [
351
351
  "wavelet",
352
352
  "erosion",
353
353
  "curl"
354
- ], Y = [
354
+ ], X = [
355
355
  "octaves",
356
356
  "gain",
357
357
  "lacunarity",
358
358
  "antialias",
359
359
  "tileSize"
360
- ], Dt = {
361
- "perlin-fbm": ["aspect", ...Y],
362
- value: ["aspect", ...Y],
363
- worley: Y,
364
- "voronoi-smooth": Y,
365
- stone: Y,
366
- paper: Y,
367
- wool: Y,
368
- simplex: Y,
369
- wavelet: Y,
370
- erosion: Y,
360
+ ], Et = {
361
+ "perlin-fbm": ["aspect", ...X],
362
+ value: ["aspect", ...X],
363
+ worley: X,
364
+ "voronoi-smooth": X,
365
+ stone: X,
366
+ paper: X,
367
+ wool: X,
368
+ simplex: X,
369
+ wavelet: X,
370
+ erosion: X,
371
371
  gabor: [
372
372
  "gaborFreq",
373
373
  "gaborAniso",
@@ -375,25 +375,25 @@ var Et = [
375
375
  "tileSize"
376
376
  ],
377
377
  curl: []
378
- }, Ot = {
379
- value: ct,
380
- worley: ut,
381
- "voronoi-smooth": dt,
382
- stone: _t,
383
- paper: ht,
384
- wool: gt,
385
- wavelet: wt,
386
- erosion: Tt
387
- }, kt = [{
378
+ }, Dt = {
379
+ value: st,
380
+ worley: lt,
381
+ "voronoi-smooth": ut,
382
+ stone: gt,
383
+ paper: mt,
384
+ wool: ht,
385
+ wavelet: Ct,
386
+ erosion: wt
387
+ }, Ot = [{
388
388
  key: "field",
389
389
  kind: "float"
390
- }], At = [{
390
+ }], kt = [{
391
391
  key: "field",
392
392
  kind: "float"
393
393
  }, {
394
394
  key: "vector",
395
395
  kind: "vector"
396
- }], jt = {
396
+ }], At = {
397
397
  type: "tileable-noise",
398
398
  nodeClass: "texture",
399
399
  label: "Tileable Noise",
@@ -411,7 +411,7 @@ var Et = [
411
411
  key: "noiseType",
412
412
  label: "type",
413
413
  type: "select",
414
- options: Et,
414
+ options: Tt,
415
415
  default: "perlin-fbm"
416
416
  },
417
417
  {
@@ -516,23 +516,23 @@ var Et = [
516
516
  key: "coord",
517
517
  kind: "vector"
518
518
  }],
519
- outputs: e.noiseType === "curl" ? At : kt
519
+ outputs: e.noiseType === "curl" ? kt : Ot
520
520
  };
521
521
  },
522
522
  paramsFor(e) {
523
- let t = Dt[e.noiseType ?? "perlin-fbm"] ?? [], n = new Set([
523
+ let t = Et[e.noiseType ?? "perlin-fbm"] ?? [], n = new Set([
524
524
  "noiseType",
525
525
  "scale",
526
526
  ...t
527
527
  ]);
528
- return jt.params.filter((e) => n.has(e.key));
528
+ return At.params.filter((e) => n.has(e.key));
529
529
  },
530
530
  build(e) {
531
531
  let t = e.inputs.coord ?? e.coord, n = Math.max(1, Math.round(Number.isFinite(Number(e.params.octaves)) ? Number(e.params.octaves) : 4)), r = Math.max(2, Math.round(Number.isFinite(Number(e.params.lacunarity)) ? Number(e.params.lacunarity) : 2)), i = e.params.noiseType ?? "perlin-fbm", a = e.uniforms.gain, o = e.uniforms.scale;
532
- if (e.backend === "live") return { field: Je(t.mul(o), n, a, e.uniforms.lacunarity) };
533
- let s = K(t.x, t.y), c = e.uniforms.antialias, l = Math.max(1, Math.round(e.tileRepeat ?? 1)), u = P(A((l > 1 ? o.div(k(l)) : o).add(.5)), k(1)), d = e.uniforms.aspect, f = P(A(u.mul(d).add(.5)), k(1));
532
+ if (e.backend === "live") return { field: qe(t.mul(o), n, a, e.uniforms.lacunarity) };
533
+ let s = q(t.x, t.y), c = e.uniforms.antialias, l = Math.max(1, Math.round(e.tileRepeat ?? 1)), u = P(A((l > 1 ? o.div(k(l)) : o).add(.5)), k(1)), d = e.uniforms.aspect, f = P(A(u.mul(d).add(.5)), k(1));
534
534
  if (i === "curl") {
535
- let e = mt(s.mul(u), u, u);
535
+ let e = pt(s.mul(u), u, u);
536
536
  return {
537
537
  field: e.length(),
538
538
  vector: e
@@ -540,60 +540,60 @@ var Et = [
540
540
  }
541
541
  if (i === "simplex") {
542
542
  let e = u.add(L(u, k(2)));
543
- return { field: tt(s, e, e, n, a, St, c, r) };
543
+ return { field: et(s, e, e, n, a, xt, c, r) };
544
544
  }
545
545
  if (i === "gabor") {
546
546
  let t = k(1).sub(e.uniforms.gaborAniso);
547
- return { field: xt(s, u, e.uniforms.gaborFreq, t, e.uniforms.gaborOrient) };
547
+ return { field: bt(s, u, e.uniforms.gaborFreq, t, e.uniforms.gaborOrient) };
548
548
  }
549
- let p = Ot[i];
550
- return p ? { field: tt(s, i === "value" ? f : u, u, n, a, p, c, r) } : { field: et(s, f, u, n, a, c, r).mul(.5).add(.5) };
549
+ let p = Dt[i];
550
+ return p ? { field: et(s, i === "value" ? f : u, u, n, a, p, c, r) } : { field: $e(s, f, u, n, a, c, r).mul(.5).add(.5) };
551
551
  }
552
- }, Mt = 4294967295;
552
+ }, jt = 4294967295;
553
+ function Mt(e) {
554
+ let t = ne(e.mul(q(141421356, 2718281828)));
555
+ return k(t.x.bitXor(t.y).mul(W(3141592653))).div(jt);
556
+ }
553
557
  function Nt(e) {
554
- let t = ne(e.mul(K(141421356, 2718281828)));
555
- return k(t.x.bitXor(t.y).mul(U(3141592653))).div(Mt);
558
+ return j(k(52.9829189).mul(j(D(e, q(.06711056, .00583715)))));
556
559
  }
557
560
  function Pt(e) {
558
- return j(k(52.9829189).mul(j(D(e, K(.06711056, .00583715)))));
561
+ let t = W(e.x), n = W(e.y);
562
+ return k(t.mul(W(3242174889)).add(n.mul(W(2447445413)))).mul(te(-32));
559
563
  }
560
564
  function Ft(e) {
561
- let t = U(e.x), n = U(e.y);
562
- return k(t.mul(U(3242174889)).add(n.mul(U(2447445413)))).mul(te(-32));
563
- }
564
- function It(e) {
565
565
  let t = k(0);
566
- for (let n = 0; n < 9; n++) t = t.add(Nt(e.add(K(n % 3 - 1, Math.floor(n / 3) - 1))));
567
- return k(.9).mul(k(1.125).mul(Nt(e)).sub(t.div(8))).add(.5);
566
+ for (let n = 0; n < 9; n++) t = t.add(Mt(e.add(q(n % 3 - 1, Math.floor(n / 3) - 1))));
567
+ return k(.9).mul(k(1.125).mul(Mt(e)).sub(t.div(8))).add(.5);
568
568
  }
569
- var Lt = d(([e, t]) => {
569
+ var It = d(([e, t]) => {
570
570
  let n = e.toVar(), r = t.toVar(), i = M(0).toVar();
571
571
  for (let e = 256; e > 0; e >>= 1) {
572
- let t = M(e), a = z(n.bitAnd(t).notEqual(M(0)), M(1), M(0)), o = z(r.bitAnd(t).notEqual(M(0)), M(1), M(0));
572
+ 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));
573
573
  i.assign(i.add(t.mul(t).mul(a.shiftLeft(1).bitOr(a.bitXor(o)))));
574
574
  let s = n.bitXor(r).mul(M(1).sub(o)).bitXor(M(e - 1).mul(a.bitAnd(M(1).sub(o))));
575
575
  n.assign(n.bitXor(s)), r.assign(r.bitXor(s));
576
576
  }
577
577
  return i;
578
578
  });
579
- function Rt(e) {
580
- let t = Lt(M(e.x), M(e.y));
579
+ function Lt(e) {
580
+ let t = It(M(e.x), M(e.y));
581
581
  return j(k(.6180339887498948).mul(k(t.mod(M(262144)))));
582
582
  }
583
- var zt = d(([e, t]) => {
583
+ var Rt = d(([e, t]) => {
584
584
  let n = A(e).toVar(), r = e.sub(n);
585
- n.x.assign(A(B(n.x.mul(51024)).mul(3104))), n.y.assign(A(B(n.y.mul(1324)).mul(554)));
585
+ n.x.assign(A(V(n.x.mul(51024)).mul(3104))), n.y.assign(A(V(n.y.mul(1324)).mul(554)));
586
586
  let i = n.x.add(n.y);
587
- r = r.mul(2).sub(1), r = r.mul(S(i)).add(K(r.y.negate(), r.x).mul(B(i))), r = r.add(B(n.x.sub(n.y))), r = r.mul(.5).add(.5);
588
- let a = B(n.x.add(r.y.mul(3.1415))).add(B(n.y.add(r.y.mul(3.1415)))).mul(.2), o = f(r.x.sub(.5).add(a));
589
- return o = k(.5).sub(o.mul(t)), o = V(-2, re(o).mul(1.5).add(16), o).mul(12), o.mul(r.y);
587
+ r = r.mul(2).sub(1), r = r.mul(S(i)).add(q(r.y.negate(), r.x).mul(V(i))), r = r.add(V(n.x.sub(n.y))), r = r.mul(.5).add(.5);
588
+ let a = V(n.x.add(r.y.mul(3.1415))).add(V(n.y.add(r.y.mul(3.1415)))).mul(.2), o = f(r.x.sub(.5).add(a));
589
+ return o = k(.5).sub(o.mul(t)), o = H(-2, re(o).mul(1.5).add(16), o).mul(12), o.mul(r.y);
590
590
  });
591
- function Bt(e, t) {
591
+ function zt(e, t) {
592
592
  let n = e, r = t, i = k(0);
593
- for (let e = 0; e < 8; e++) i = P(i, zt(n, r)), n = K(n.x.sub(n.y.mul(.7)), n.x.mul(.7).add(n.y)).sub(12.31);
593
+ for (let e = 0; e < 8; e++) i = P(i, Rt(n, r)), n = q(n.x.sub(n.y.mul(.7)), n.x.mul(.7).add(n.y)).sub(12.31);
594
594
  return i;
595
595
  }
596
- var Vt = {
596
+ var Bt = {
597
597
  type: "screen-noise",
598
598
  nodeClass: "texture",
599
599
  label: "Screen Noise",
@@ -627,16 +627,16 @@ var Vt = {
627
627
  default: 512
628
628
  }],
629
629
  build(e) {
630
- let t = e.inputs.coord ?? e.coord, n = K(t.x, t.y), r = e.params.noiseType ?? "blue", i = n.mul(e.uniforms.resolution);
630
+ let t = e.inputs.coord ?? e.coord, n = q(t.x, t.y), r = e.params.noiseType ?? "blue", i = n.mul(e.uniforms.resolution);
631
631
  switch (r) {
632
- case "hilbert-blue": return { field: Rt(A(i)) };
633
- case "ign": return { field: Pt(A(i)) };
634
- case "golden-ign": return { field: Ft(A(i)) };
635
- case "scratches": return { field: Bt(n.mul(5), k(3)) };
636
- default: return { field: It(A(i)) };
632
+ case "hilbert-blue": return { field: Lt(A(i)) };
633
+ case "ign": return { field: Nt(A(i)) };
634
+ case "golden-ign": return { field: Pt(A(i)) };
635
+ case "scratches": return { field: zt(n.mul(5), k(3)) };
636
+ default: return { field: Ft(A(i)) };
637
637
  }
638
638
  }
639
- }, Ht = {
639
+ }, Vt = {
640
640
  type: "tileable-warp",
641
641
  nodeClass: "vector",
642
642
  label: "Tileable Warp",
@@ -668,72 +668,72 @@ var Vt = {
668
668
  build(e) {
669
669
  let t = e.inputs.coord ?? e.coord, n = e.uniforms.amount;
670
670
  if (e.backend === "live") {
671
- let r = t.div(Math.max(1, Number(e.params.scale ?? 4))), i = se(r.add(q(11.3, 0, 0))), a = se(r.add(q(0, 47.7, 0))), o = se(r.add(q(0, 0, 93.1)));
672
- return { coord: t.add(q(i, a, o).mul(n)) };
671
+ let r = t.div(Math.max(1, Number(e.params.scale ?? 4))), i = R(r.add(J(11.3, 0, 0))), a = R(r.add(J(0, 47.7, 0))), o = R(r.add(J(0, 0, 93.1)));
672
+ return { coord: t.add(J(i, a, o).mul(n)) };
673
673
  }
674
- let r = Math.max(1, Math.round(Number(e.params.scale ?? 4))), i = K(t.x, t.y), a = K(r, r), o = $e(i.mul(r), a), s = $e(i.mul(r).add(K(5.2, 1.3)), a), c = i.add(K(o, s).mul(n));
675
- return { coord: q(c.x, c.y, t.z) };
674
+ let r = Math.max(1, Math.round(Number(e.params.scale ?? 4))), i = q(t.x, t.y), a = q(r, r), o = Qe(i.mul(r), a), s = Qe(i.mul(r).add(q(5.2, 1.3)), a), c = i.add(q(o, s).mul(n));
675
+ return { coord: J(c.x, c.y, t.z) };
676
676
  }
677
- }, Ut = 1 / 2147483648;
678
- function Wt(e, t, n) {
677
+ }, Ht = 1 / 2147483648;
678
+ function Ut(e, t, n) {
679
679
  let r = e.mul(1664525).add(1013904223).toVar(), i = t.mul(1664525).add(1013904223).toVar(), a = n.mul(1664525).add(1013904223).toVar();
680
680
  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)));
681
681
  let o = M(2147483647);
682
- return q(k(r.bitAnd(o)).mul(Ut), k(i.bitAnd(o)).mul(Ut), k(a.bitAnd(o)).mul(Ut));
682
+ return J(k(r.bitAnd(o)).mul(Ht), k(i.bitAnd(o)).mul(Ht), k(a.bitAnd(o)).mul(Ht));
683
683
  }
684
- function Gt(e, t) {
684
+ function Wt(e, t) {
685
685
  return e.sub(M(A(k(e).div(t))).mul(M(t)));
686
686
  }
687
- function Kt(e, t, n, r) {
688
- return typeof r == "number" && r <= 0 ? Wt(e, t, n) : Wt(Gt(e, r), Gt(t, r), Gt(n, r));
687
+ function Gt(e, t, n, r) {
688
+ return typeof r == "number" && r <= 0 ? Ut(e, t, n) : Ut(Wt(e, r), Wt(t, r), Wt(n, r));
689
689
  }
690
- function qt(e, t, n, r) {
690
+ function Kt(e, t, n, r) {
691
691
  let i = e.sub(t).abs();
692
692
  if (n === 1) return i.x.add(i.y).add(i.z);
693
693
  if (n === 2) return i.x.max(i.y.max(i.z));
694
694
  if (n === 3) {
695
695
  let e = r;
696
- return R(R(i.x, e).add(R(i.y, e)).add(R(i.z, e)), k(1).div(e));
696
+ return z(z(i.x, e).add(z(i.y, e)).add(z(i.z, e)), k(1).div(e));
697
697
  }
698
698
  return e.sub(t).length();
699
699
  }
700
- function Jt(e, t, n, r, i, a) {
700
+ function qt(e, t, n, r, i, a) {
701
701
  return d(() => {
702
- 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();
702
+ 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 = J(0, 0, 0).toVar(), p = J(0, 0, 0).toVar();
703
703
  for (let e = -1; e <= 1; e++) for (let i = -1; i <= 1; i++) for (let o = -1; o <= 1; o++) {
704
- let m = q(o, i, e), h = m.add(Kt(c.add(o), l.add(i), u.add(e), a).mul(t)), g = qt(h, s, n, r), _ = g.lessThan(d);
704
+ let m = J(o, i, e), h = m.add(Gt(c.add(o), l.add(i), u.add(e), a).mul(t)), g = Kt(h, s, n, r), _ = g.lessThan(d);
705
705
  d.assign(_.select(g, d)), f.assign(_.select(m, f)), p.assign(_.select(h, p));
706
706
  }
707
- return i === "color" ? Kt(c.add(M(f.x)), l.add(M(f.y)), u.add(M(f.z)), a) : i === "position" ? p.add(o) : d;
707
+ return i === "color" ? Gt(c.add(M(f.x)), l.add(M(f.y)), u.add(M(f.z)), a) : i === "position" ? p.add(o) : d;
708
708
  })();
709
709
  }
710
- function Yt(e, t, n, r, i, a) {
710
+ function Jt(e, t, n, r, i, a) {
711
711
  return d(() => {
712
- 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();
712
+ 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 = J(0, 0, 0).toVar(), m = J(0, 0, 0).toVar(), h = J(0, 0, 0).toVar(), g = J(0, 0, 0).toVar();
713
713
  for (let e = -1; e <= 1; e++) for (let i = -1; i <= 1; i++) for (let o = -1; o <= 1; o++) {
714
- let _ = q(o, i, e), v = _.add(Kt(c.add(o), l.add(i), u.add(e), a).mul(t)), y = qt(v, s, n, r), b = y.lessThan(d).toVar(), x = y.lessThan(f).toVar(), S = z(b, d, z(x, y, f)), C = z(b, p, z(x, _, m)), w = z(b, h, z(x, v, g)), T = z(b, y, d), E = z(b, _, p), ee = z(b, v, h);
714
+ let _ = J(o, i, e), v = _.add(Gt(c.add(o), l.add(i), u.add(e), a).mul(t)), y = Kt(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), ee = B(b, v, h);
715
715
  f.assign(S), m.assign(C), g.assign(w), d.assign(T), p.assign(E), h.assign(ee);
716
716
  }
717
- return i === "color" ? Kt(c.add(M(m.x)), l.add(M(m.y)), u.add(M(m.z)), a) : i === "position" ? g.add(o) : f;
717
+ return i === "color" ? Gt(c.add(M(m.x)), l.add(M(m.y)), u.add(M(m.z)), a) : i === "position" ? g.add(o) : f;
718
718
  })();
719
719
  }
720
- var Xt = 1;
721
- function Zt(e, t, n, r, i, a, o) {
720
+ var Yt = 1;
721
+ function Xt(e, t, n, r, i, a, o) {
722
722
  return d(() => {
723
- 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();
724
- for (let e = -1; e <= Xt; e++) for (let i = -1; i <= Xt; i++) for (let a = -1; a <= Xt; a++) {
725
- let s = q(a, i, e), _ = Kt(l.add(a), u.add(i), d.add(e), o), v = s.add(_.mul(t)), y = qt(v, c, n, r);
726
- g.assign(z(g.equal(-1), k(1), V(0, 1, k(.5).add(p.sub(y).mul(.5).div(f)))));
723
+ 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 = J(0, 0, 0).toVar(), h = J(0, 0, 0).toVar(), g = k(-1).toVar();
724
+ for (let e = -1; e <= Yt; e++) for (let i = -1; i <= Yt; i++) for (let a = -1; a <= Yt; a++) {
725
+ let s = J(a, i, e), _ = Gt(l.add(a), u.add(i), d.add(e), o), v = s.add(_.mul(t)), y = Kt(v, c, n, r);
726
+ g.assign(B(g.equal(-1), k(1), H(0, 1, k(.5).add(p.sub(y).mul(.5).div(f)))));
727
727
  let b = f.mul(g).mul(k(1).sub(g)).toVar();
728
728
  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));
729
729
  }
730
730
  return a === "color" ? m : a === "position" ? h.add(s) : p;
731
731
  })();
732
732
  }
733
- var Qt = (e, t, n, r, i = 0) => Jt(e, t, n, r, "distance", i), $t = (e, t, n, r, i = 0) => Jt(e, t, n, r, "color", i), en = (e, t, n, r, i = 0) => Jt(e, t, n, r, "position", i), tn = (e, t, n, r, i = 0) => Yt(e, t, n, r, "distance", i), nn = (e, t, n, r, i = 0) => Yt(e, t, n, r, "color", i), rn = (e, t, n, r, i = 0) => Yt(e, t, n, r, "position", i), an = (e, t, n, r, i, a = 0) => Zt(e, t, n, r, i, "distance", a), on = (e, t, n, r, i, a = 0) => Zt(e, t, n, r, i, "color", a), sn = (e, t, n, r, i, a = 0) => Zt(e, t, n, r, i, "position", a);
734
- function cn(e, t, n = 0) {
733
+ var Zt = (e, t, n, r, i = 0) => qt(e, t, n, r, "distance", i), Qt = (e, t, n, r, i = 0) => qt(e, t, n, r, "color", i), $t = (e, t, n, r, i = 0) => qt(e, t, n, r, "position", i), en = (e, t, n, r, i = 0) => Jt(e, t, n, r, "distance", i), tn = (e, t, n, r, i = 0) => Jt(e, t, n, r, "color", i), nn = (e, t, n, r, i = 0) => Jt(e, t, n, r, "position", i), rn = (e, t, n, r, i, a = 0) => Xt(e, t, n, r, i, "distance", a), an = (e, t, n, r, i, a = 0) => Xt(e, t, n, r, i, "color", a), on = (e, t, n, r, i, a = 0) => Xt(e, t, n, r, i, "position", a);
734
+ function sn(e, t, n = 0) {
735
735
  return d(() => {
736
- 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(Kt(a.add(e), o.add(r), s.add(c), n).mul(t)).sub(i), l = q(0, 0, 0).toVar(), u = k(1e10).toVar();
736
+ let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = M(r.z), c = (e, r, c) => J(e, r, c).add(Gt(a.add(e), o.add(r), s.add(c), n).mul(t)).sub(i), l = J(0, 0, 0).toVar(), u = k(1e10).toVar();
737
737
  for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) for (let n = -1; n <= 1; n++) {
738
738
  let r = c(n, t, e), i = r.dot(r), a = i.lessThan(u);
739
739
  u.assign(a.select(i, u)), l.assign(a.select(r, l));
@@ -748,20 +748,20 @@ function cn(e, t, n = 0) {
748
748
  }
749
749
  //#endregion
750
750
  //#region src/tsl/lloyd-points.ts
751
- function ln(e, t, n) {
751
+ function cn(e, t, n) {
752
752
  let r = Math.imul(e, 374761393) + Math.imul(t, 668265263) + Math.imul(n, 362437) >>> 0;
753
753
  r = Math.imul(r ^ r >>> 13, 1274126177) >>> 0;
754
754
  let i = (r & 65535) / 65536;
755
755
  return r = Math.imul(r ^ r >>> 16, 2246822519) >>> 0, [i, (r >>> 8 & 65535) / 65536];
756
756
  }
757
- function un(e, t, n) {
757
+ function ln(e, t, n) {
758
758
  let r = e - t;
759
759
  return r -= n * Math.round(r / n), r;
760
760
  }
761
- function dn(e, t, n, r = 0) {
761
+ function un(e, t, n, r = 0) {
762
762
  let i = e * e, a = new Float64Array(i), o = new Float64Array(i);
763
763
  for (let n = 0; n < e; n++) for (let i = 0; i < e; i++) {
764
- let [s, c] = ln(i, n, r), l = n * e + i;
764
+ let [s, c] = cn(i, n, r), l = n * e + i;
765
765
  a[l] = i + .5 + (s - .5) * t, o[l] = n + .5 + (c - .5) * t;
766
766
  }
767
767
  let s = Math.max(64, e * 24);
@@ -772,10 +772,10 @@ function dn(e, t, n, r = 0) {
772
772
  for (let i = 0; i < s; i++) {
773
773
  let u = (i + .5) / s * e, d = Math.floor(u), f = Infinity, p = 0;
774
774
  for (let t = -1; t <= 1; t++) for (let n = -1; n <= 1; n++) {
775
- let r = ((d + n) % e + e) % e, i = ((l + t) % e + e) % e * e + r, s = un(a[i], u, e), m = un(o[i], c, e), h = s * s + m * m;
775
+ let r = ((d + n) % e + e) % e, i = ((l + t) % e + e) % e * e + r, s = ln(a[i], u, e), m = ln(o[i], c, e), h = s * s + m * m;
776
776
  h < f && (f = h, p = i);
777
777
  }
778
- t[p] += a[p] + un(u, a[p], e), n[p] += o[p] + un(c, o[p], e), r[p]++;
778
+ t[p] += a[p] + ln(u, a[p], e), n[p] += o[p] + ln(c, o[p], e), r[p]++;
779
779
  }
780
780
  }
781
781
  for (let s = 0; s < i; s++) r[s] > 0 && (a[s] = (t[s] / r[s] % e + e) % e, o[s] = (n[s] / r[s] % e + e) % e);
@@ -789,9 +789,9 @@ function dn(e, t, n, r = 0) {
789
789
  }
790
790
  //#endregion
791
791
  //#region src/tsl/relaxed-voronoi.ts
792
- function fn(e, t) {
792
+ function dn(e, t) {
793
793
  return d(() => {
794
- 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();
794
+ let n = A(e), r = e.sub(n), i = M(n.x), a = M(n.y), o = (e, n) => J(e, n, 0).add(t(i.add(e), a.add(n))).sub(r), s = J(0, 0, 0).toVar(), c = k(1e10).toVar();
795
795
  for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
796
796
  let n = o(t, e), r = n.dot(n), i = r.lessThan(c);
797
797
  c.assign(i.select(r, c)), s.assign(i.select(n, s));
@@ -804,9 +804,9 @@ function fn(e, t) {
804
804
  return l;
805
805
  })();
806
806
  }
807
- function pn(e, t, n) {
807
+ function fn(e, t, n) {
808
808
  return d(() => {
809
- 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();
809
+ let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s = (e, n) => J(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();
810
810
  for (let e = -1; e <= 1; e++) for (let t = -1; t <= 1; t++) {
811
811
  let n = s(t, e), r = n.dot(n), i = r.lessThan(c);
812
812
  c.assign(i.select(r, c)), l.assign(i.select(a.add(t), l)), u.assign(i.select(o.add(e), u));
@@ -816,17 +816,17 @@ function pn(e, t, n) {
816
816
  }
817
817
  //#endregion
818
818
  //#region src/graph/nodes/texture/voronoi.ts
819
- var mn = [
819
+ var pn = [
820
820
  "euclidean",
821
821
  "manhattan",
822
822
  "chebychev",
823
823
  "minkowski"
824
- ], hn = [
824
+ ], mn = [
825
825
  "f1",
826
826
  "f2",
827
827
  "smooth-f1",
828
828
  "distance-to-edge"
829
- ], gn = [
829
+ ], hn = [
830
830
  {
831
831
  key: "distance",
832
832
  label: "Distance",
@@ -842,7 +842,7 @@ var mn = [
842
842
  label: "Position",
843
843
  kind: "vector"
844
844
  }
845
- ], _n = [{
845
+ ], gn = [{
846
846
  key: "distance",
847
847
  label: "Distance",
848
848
  kind: "float"
@@ -850,11 +850,11 @@ var mn = [
850
850
  key: "random",
851
851
  label: "Random",
852
852
  kind: "float"
853
- }], vn = [{
853
+ }], _n = [{
854
854
  key: "coord",
855
855
  kind: "vector"
856
856
  }];
857
- function yn(e) {
857
+ function vn(e) {
858
858
  let t = Array(e);
859
859
  for (let n = 0; n < e; n++) {
860
860
  let e = Math.sin(n * 12.9898 + 78.233) * 43758.5453;
@@ -862,12 +862,12 @@ function yn(e) {
862
862
  }
863
863
  return t;
864
864
  }
865
- var bn = {
865
+ var yn = {
866
866
  type: "voronoi",
867
867
  nodeClass: "texture",
868
868
  label: "Voronoi",
869
- inputs: vn,
870
- outputs: gn,
869
+ inputs: _n,
870
+ outputs: hn,
871
871
  params: [
872
872
  {
873
873
  key: "scale",
@@ -891,14 +891,14 @@ var bn = {
891
891
  key: "metric",
892
892
  label: "metric",
893
893
  type: "select",
894
- options: mn,
894
+ options: pn,
895
895
  default: "euclidean"
896
896
  },
897
897
  {
898
898
  key: "feature",
899
899
  label: "feature",
900
900
  type: "select",
901
- options: hn,
901
+ options: mn,
902
902
  default: "f1"
903
903
  },
904
904
  {
@@ -931,8 +931,8 @@ var bn = {
931
931
  ],
932
932
  declare(e) {
933
933
  return {
934
- inputs: vn,
935
- outputs: (e.feature ?? "f1") === "distance-to-edge" ? _n : gn
934
+ inputs: _n,
935
+ outputs: (e.feature ?? "f1") === "distance-to-edge" ? gn : hn
936
936
  };
937
937
  },
938
938
  paramsFor(e) {
@@ -942,43 +942,43 @@ var bn = {
942
942
  "metric",
943
943
  "feature"
944
944
  ]);
945
- return t === "minkowski" && r.add("exponent"), n === "smooth-f1" && r.add("smoothness"), n === "distance-to-edge" && r.add("relax"), bn.params.filter((e) => r.has(e.key));
945
+ return t === "minkowski" && r.add("exponent"), n === "smooth-f1" && r.add("smoothness"), n === "distance-to-edge" && r.add("relax"), yn.params.filter((e) => r.has(e.key));
946
946
  },
947
947
  build(e) {
948
- let t = e.backend === "offline", n = Math.max(0, mn.indexOf(e.params.metric)), r = e.uniforms.randomness, i = e.uniforms.exponent, a = e.uniforms.smoothness, s = e.params.feature ?? "f1", c = e.inputs.coord ?? e.coord, l = Math.max(0, Math.round(Number(e.params.relax ?? 0)));
948
+ let t = e.backend === "offline", n = Math.max(0, pn.indexOf(e.params.metric)), r = e.uniforms.randomness, i = e.uniforms.exponent, a = e.uniforms.smoothness, s = e.params.feature ?? "f1", c = e.inputs.coord ?? e.coord, l = Math.max(0, Math.round(Number(e.params.relax ?? 0)));
949
949
  if (s === "distance-to-edge" && t && l > 0) {
950
- let t = Math.max(1, Math.round(Number(e.params.scale ?? 1))), n = c.mul(t), r = dn(t, Number(e.params.randomness ?? 1), l), i = [];
950
+ let t = Math.max(1, Math.round(Number(e.params.scale ?? 1))), n = c.mul(t), r = un(t, Number(e.params.randomness ?? 1), l), i = [];
951
951
  for (let e = 0; e < t * t; e++) i.push(new o(r[e * 3], r[e * 3 + 1], r[e * 3 + 2]));
952
- let a = De(i), s = (e) => e.sub(M(A(k(e).div(t))).mul(M(t))), u = (e, n) => a.element(s(n).mul(t).add(s(e))), d = De(yn(t * t));
952
+ let a = Ee(i), s = (e) => e.sub(M(A(k(e).div(t))).mul(M(t))), u = (e, n) => a.element(s(n).mul(t).add(s(e))), d = Ee(vn(t * t));
953
953
  return {
954
- distance: fn(n, u),
955
- random: pn(n, u, (e, n) => d.element(s(n).mul(t).add(s(e))))
954
+ distance: dn(n, u),
955
+ random: fn(n, u, (e, n) => d.element(s(n).mul(t).add(s(e))))
956
956
  };
957
957
  }
958
958
  let u = e.uniforms.scale, d = P(A(u.add(.5)), k(1)), f = c.mul(t ? d : u), p = t ? d : 0;
959
959
  switch (s) {
960
960
  case "distance-to-edge": return {
961
- distance: cn(f, r, p),
962
- random: $t(f, r, n, i, p).x
961
+ distance: sn(f, r, p),
962
+ random: Qt(f, r, n, i, p).x
963
963
  };
964
964
  case "f2": return {
965
- distance: tn(f, r, n, i, p),
966
- color: nn(f, r, n, i, p),
967
- position: rn(f, r, n, i, p)
965
+ distance: en(f, r, n, i, p),
966
+ color: tn(f, r, n, i, p),
967
+ position: nn(f, r, n, i, p)
968
968
  };
969
969
  case "smooth-f1": return {
970
- distance: an(f, r, n, i, a, p),
971
- color: on(f, r, n, i, a, p),
972
- position: sn(f, r, n, i, a, p)
970
+ distance: rn(f, r, n, i, a, p),
971
+ color: an(f, r, n, i, a, p),
972
+ position: on(f, r, n, i, a, p)
973
973
  };
974
974
  default: return {
975
- distance: Qt(f, r, n, i, p),
976
- color: $t(f, r, n, i, p),
977
- position: en(f, r, n, i, p)
975
+ distance: Zt(f, r, n, i, p),
976
+ color: Qt(f, r, n, i, p),
977
+ position: $t(f, r, n, i, p)
978
978
  };
979
979
  }
980
980
  }
981
- }, xn = {
981
+ }, bn = {
982
982
  type: "checker",
983
983
  nodeClass: "texture",
984
984
  label: "Checker",
@@ -1032,54 +1032,54 @@ var bn = {
1032
1032
  build(e) {
1033
1033
  let t = (e.inputs.coord ?? e.coord).mul(e.uniforms.scale), n = L(A(t.x).add(A(t.y)).add(A(t.z)), 2).lessThan(1);
1034
1034
  return {
1035
- color: z(n, e.inputs.color1 ?? e.uniforms.color1, e.inputs.color2 ?? e.uniforms.color2),
1036
- fac: z(n, k(1), k(0))
1035
+ color: B(n, e.inputs.color1 ?? e.uniforms.color1, e.inputs.color2 ?? e.uniforms.color2),
1036
+ fac: B(n, k(1), k(0))
1037
1037
  };
1038
1038
  }
1039
- }, Sn = 6.283185307179586;
1040
- function Cn(e, t, n) {
1039
+ }, xn = 6.283185307179586;
1040
+ function Sn(e, t, n) {
1041
1041
  let { columns: r, rows: i, offsetFreq: a } = t, o = d(() => {
1042
- let t = K(e.x.mul(r), e.y.mul(i)), o = A(t.y), s = k(-1e9).toVar(), c = k(0).toVar();
1042
+ let t = q(e.x.mul(r), e.y.mul(i)), o = A(t.y), s = k(-1e9).toVar(), c = k(0).toVar();
1043
1043
  for (let e = -1; e <= 1; e++) {
1044
- let l = o.add(e), u = M(l), d = z(L(l, k(a)).notEqual(0), n.rowOffset, k(0)), p = A(t.x.sub(d));
1044
+ let l = o.add(e), u = M(l), d = B(L(l, k(a)).notEqual(0), n.rowOffset, k(0)), p = A(t.x.sub(d));
1045
1045
  for (let e = -1; e <= 1; e++) {
1046
- let a = p.add(e), o = M(a), m = st(o, u, 0, r, i), h = st(o, u, 1, r, i), g = m.x.sub(.5).mul(n.posRandom), _ = m.y.sub(.5).mul(n.posRandom), v = a.add(.5).add(d).add(g), y = l.add(.5).add(_), b = t.x.sub(v).div(r), x = t.y.sub(y).div(i), C = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(Sn * .5).negate(), w = S(C), T = B(C), E = w.mul(b).sub(T.mul(x)), ee = T.mul(b).add(w.mul(x)), D = k(1).add(m.z.sub(.5).mul(2).mul(n.sizeRandom)), O = k(.5).div(r).mul(D).sub(n.gap), te = k(.5).div(i).mul(D).sub(n.gap), ne = n.roundness.mul(F(O, te)), A = f(E).sub(O.sub(ne)), j = f(ee).sub(te.sub(ne)), re = N(K(P(A, 0), P(j, 0))), ie = F(P(A, j), 0), ae = re.add(ie).sub(ne).negate(), oe = ae.greaterThan(s);
1047
- c.assign(z(oe, h.y, c)), s.assign(z(oe, ae, s));
1046
+ let a = p.add(e), o = M(a), m = ot(o, u, 0, r, i), h = ot(o, u, 1, r, i), g = m.x.sub(.5).mul(n.posRandom), _ = m.y.sub(.5).mul(n.posRandom), v = a.add(.5).add(d).add(g), y = l.add(.5).add(_), b = t.x.sub(v).div(r), x = t.y.sub(y).div(i), C = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(xn * .5).negate(), w = S(C), T = V(C), E = w.mul(b).sub(T.mul(x)), ee = T.mul(b).add(w.mul(x)), D = k(1).add(m.z.sub(.5).mul(2).mul(n.sizeRandom)), O = k(.5).div(r).mul(D).sub(n.gap), te = k(.5).div(i).mul(D).sub(n.gap), ne = n.roundness.mul(F(O, te)), A = f(E).sub(O.sub(ne)), j = f(ee).sub(te.sub(ne)), re = N(q(P(A, 0), P(j, 0))), ie = F(P(A, j), 0), ae = re.add(ie).sub(ne).negate(), oe = ae.greaterThan(s);
1047
+ c.assign(B(oe, h.y, c)), s.assign(B(oe, ae, s));
1048
1048
  }
1049
1049
  }
1050
- return K(V(0, n.edge.add(1e-5), s), c);
1050
+ return q(H(0, n.edge.add(1e-5), s), c);
1051
1051
  })();
1052
1052
  return {
1053
1053
  mask: o.x,
1054
1054
  value: o.y
1055
1055
  };
1056
1056
  }
1057
- function wn(e, t, n, r, i) {
1057
+ function Cn(e, t, n, r, i) {
1058
1058
  let a = t, o = n, s = d(() => {
1059
- 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();
1059
+ let t = q(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();
1060
1060
  for (let r = -1; r <= 1; r++) {
1061
- let i = n.add(r), d = z(L(i, k(2)).notEqual(0), k(.5), k(0)), f = A(t.x.sub(d));
1061
+ let i = n.add(r), d = B(L(i, k(2)).notEqual(0), k(.5), k(0)), f = A(t.x.sub(d));
1062
1062
  for (let t = -1; t <= 1; t++) {
1063
- let n = f.add(t), r = n.add(.5).add(d).div(a), p = i.add(.5).div(o), m = N(K(e.x.sub(r), e.y.sub(p))), h = m.lessThan(s);
1064
- s.assign(z(h, m, s)), c.assign(z(h, r, c)), l.assign(z(h, p, l)), u.assign(z(h, at(M(n), M(i), a, o), u));
1063
+ let n = f.add(t), r = n.add(.5).add(d).div(a), p = i.add(.5).div(o), m = N(q(e.x.sub(r), e.y.sub(p))), h = m.lessThan(s);
1064
+ s.assign(B(h, m, s)), c.assign(B(h, r, c)), l.assign(B(h, p, l)), u.assign(B(h, it(M(n), M(i), a, o), u));
1065
1065
  }
1066
1066
  }
1067
1067
  let d = k(1e9).toVar();
1068
1068
  for (let r = -1; r <= 1; r++) {
1069
- let i = n.add(r), s = z(L(i, k(2)).notEqual(0), k(.5), k(0)), u = A(t.x.sub(s));
1069
+ let i = n.add(r), s = B(L(i, k(2)).notEqual(0), k(.5), k(0)), u = A(t.x.sub(s));
1070
1070
  for (let t = -1; t <= 1; t++) {
1071
- let n = u.add(t).add(.5).add(s).div(a), r = i.add(.5).div(o), f = n.sub(c), p = r.sub(l), m = N(K(f, p)).add(1e-9), h = c.add(n).mul(.5), g = l.add(r).mul(.5), _ = h.sub(e.x).mul(f.div(m)).add(g.sub(e.y).mul(p.div(m))), v = m.lessThan(1e-4);
1072
- d.assign(F(d, z(v, k(1e9), _)));
1071
+ let n = u.add(t).add(.5).add(s).div(a), r = i.add(.5).div(o), f = n.sub(c), p = r.sub(l), m = N(q(f, p)).add(1e-9), h = c.add(n).mul(.5), g = l.add(r).mul(.5), _ = h.sub(e.x).mul(f.div(m)).add(g.sub(e.y).mul(p.div(m))), v = m.lessThan(1e-4);
1072
+ d.assign(F(d, B(v, k(1e9), _)));
1073
1073
  }
1074
1074
  }
1075
- return K(V(r, r.add(i).add(1e-5), d), u);
1075
+ return q(H(r, r.add(i).add(1e-5), d), u);
1076
1076
  })();
1077
1077
  return {
1078
1078
  mask: s.x,
1079
1079
  value: s.y
1080
1080
  };
1081
1081
  }
1082
- var Tn = {
1082
+ var wn = {
1083
1083
  type: "tile",
1084
1084
  nodeClass: "texture",
1085
1085
  label: "Tile Generator",
@@ -1198,13 +1198,13 @@ var Tn = {
1198
1198
  build(e) {
1199
1199
  let t = e.inputs.coord ?? e.coord, n = Math.max(1, Math.round(Number(e.params.columns ?? 6)));
1200
1200
  if (e.params.lattice === "hex") {
1201
- let { mask: r, value: i } = wn(t, n, Math.max(2, Math.round(n * 2 / Math.sqrt(3) / 2) * 2), e.uniforms.gap, e.uniforms.edge);
1201
+ let { mask: r, value: i } = Cn(t, n, Math.max(2, Math.round(n * 2 / Math.sqrt(3) / 2) * 2), e.uniforms.gap, e.uniforms.edge);
1202
1202
  return {
1203
1203
  mask: r,
1204
1204
  value: i
1205
1205
  };
1206
1206
  }
1207
- let r = Math.max(1, Math.round(Number(e.params.offsetFreq ?? 2))), i = Math.max(1, Math.round(Number(e.params.rows ?? 12))), { mask: a, value: o } = Cn(t, {
1207
+ let r = Math.max(1, Math.round(Number(e.params.offsetFreq ?? 2))), i = Math.max(1, Math.round(Number(e.params.rows ?? 12))), { mask: a, value: o } = Sn(t, {
1208
1208
  columns: n,
1209
1209
  rows: Math.ceil(i / r) * r,
1210
1210
  offsetFreq: r
@@ -1222,28 +1222,28 @@ var Tn = {
1222
1222
  value: o
1223
1223
  };
1224
1224
  }
1225
- }, En = Math.PI;
1226
- function Dn(e, t, n) {
1225
+ }, Tn = Math.PI;
1226
+ function En(e, t, n) {
1227
1227
  let r = t, i = d(() => {
1228
- 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();
1228
+ let t = q(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();
1229
1229
  for (let e = -1; e <= 1; e++) {
1230
1230
  let d = a.add(e), f = M(d);
1231
1231
  for (let e = -1; e <= 1; e++) {
1232
- let a = i.add(e), p = M(a), m = st(p, f, 0, r, r), h = st(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), C = d.add(.5).add(b), w = t.x.sub(x).div(r), T = t.y.sub(C).div(r), E = z(g, N(K(w, T)), k(1e9)), ee = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(En).negate(), D = S(ee), O = B(ee), te = D.mul(w).sub(O.mul(T)).div(v.add(1e-9)), ne = O.mul(w).add(D.mul(T)).div(v.add(1e-9)), A = E.lessThan(o);
1233
- s.assign(z(A, te, s)), c.assign(z(A, ne, c)), l.assign(z(A, h.y, l)), u.assign(z(A, _, u)), o.assign(z(A, E, o));
1232
+ let a = i.add(e), p = M(a), m = ot(p, f, 0, r, r), h = ot(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), C = d.add(.5).add(b), w = t.x.sub(x).div(r), T = t.y.sub(C).div(r), E = B(g, N(q(w, T)), k(1e9)), ee = h.x.sub(.5).mul(2).mul(n.rotRandom).mul(Tn).negate(), D = S(ee), O = V(ee), te = D.mul(w).sub(O.mul(T)).div(v.add(1e-9)), ne = O.mul(w).add(D.mul(T)).div(v.add(1e-9)), A = E.lessThan(o);
1233
+ s.assign(B(A, te, s)), c.assign(B(A, ne, c)), l.assign(B(A, h.y, l)), u.assign(B(A, _, u)), o.assign(B(A, E, o));
1234
1234
  }
1235
1235
  }
1236
- return Oe(s, c, l, u);
1236
+ return De(s, c, l, u);
1237
1237
  })();
1238
1238
  return {
1239
- coord: q(i.x, i.y, 0),
1239
+ coord: J(i.x, i.y, 0),
1240
1240
  value: i.z,
1241
1241
  size: i.w
1242
1242
  };
1243
1243
  }
1244
1244
  //#endregion
1245
1245
  //#region src/graph/nodes/texture/scatter.ts
1246
- var On = {
1246
+ var Dn = {
1247
1247
  type: "scatter",
1248
1248
  nodeClass: "texture",
1249
1249
  label: "Scatter",
@@ -1325,7 +1325,7 @@ var On = {
1325
1325
  }
1326
1326
  ],
1327
1327
  build(e) {
1328
- let t = e.inputs.coord ?? e.coord, n = Math.round(Number(e.params.density ?? 10)), { coord: r, value: i, size: a } = Dn(t, Number.isFinite(n) ? Math.max(1, n) : 10, {
1328
+ let t = e.inputs.coord ?? e.coord, n = Math.round(Number(e.params.density ?? 10)), { coord: r, value: i, size: a } = En(t, Number.isFinite(n) ? Math.max(1, n) : 10, {
1329
1329
  amount: e.uniforms.amount,
1330
1330
  radius: e.uniforms.radius,
1331
1331
  sizeRandom: e.uniforms.sizeRandom,
@@ -1338,26 +1338,26 @@ var On = {
1338
1338
  size: a
1339
1339
  };
1340
1340
  }
1341
- }, kn = 6.283185307179586;
1342
- function An(e, t, n, r, i) {
1341
+ }, On = 6.283185307179586;
1342
+ function kn(e, t, n, r, i) {
1343
1343
  let a = r ?? k(0), o = d(() => {
1344
- let r = N(K(e.x, e.y)), o = h(e.y, e.x), s, c;
1344
+ let r = N(q(e.x, e.y)), o = h(e.y, e.x), s, c;
1345
1345
  if (t === "polygon") {
1346
- let e = Math.max(3, Math.round(n)), t = kn / e, a = S(A(o.div(t).add(.5)).mul(t).sub(o)).mul(r), l = Math.cos(Math.PI / e), u = b(a.div(l), 0, 1);
1347
- s = V(0, i.edge.add(1e-4), u.oneMinus()), c = u.oneMinus();
1346
+ let e = Math.max(3, Math.round(n)), t = On / e, a = S(A(o.div(t).add(.5)).mul(t).sub(o)).mul(r), l = Math.cos(Math.PI / e), u = b(a.div(l), 0, 1);
1347
+ s = H(0, i.edge.add(1e-4), u.oneMinus()), c = u.oneMinus();
1348
1348
  } else {
1349
- let e = j(a.mul(13.13)).mul(kn), t = j(a.mul(27.71)).mul(kn), n = j(a.mul(51.37)).mul(kn), l = B(o.mul(2).add(e)).mul(.5).add(B(o.mul(3).add(t)).mul(.3)).add(B(o.mul(5).add(n)).mul(.2)), u = k(1).add(l.mul(i.irregularity.mul(.4))), d = b(r.div(u.add(1e-6)), 0, 1);
1350
- s = V(0, i.edge.add(1e-4), d.oneMinus()), c = d.oneMinus();
1349
+ let e = j(a.mul(13.13)).mul(On), t = j(a.mul(27.71)).mul(On), n = j(a.mul(51.37)).mul(On), l = V(o.mul(2).add(e)).mul(.5).add(V(o.mul(3).add(t)).mul(.3)).add(V(o.mul(5).add(n)).mul(.2)), u = k(1).add(l.mul(i.irregularity.mul(.4))), d = b(r.div(u.add(1e-6)), 0, 1);
1350
+ s = H(0, i.edge.add(1e-4), d.oneMinus()), c = d.oneMinus();
1351
1351
  }
1352
- let l = b(r, 0, 1), u = R(b(l.mul(l).oneMinus(), 0, 1), i.dome), d = V(0, .3, c), f = u.mul(d);
1353
- return q(s, f, 0);
1352
+ let l = b(r, 0, 1), u = z(b(l.mul(l).oneMinus(), 0, 1), i.dome), d = H(0, .3, c), f = u.mul(d);
1353
+ return J(s, f, 0);
1354
1354
  })();
1355
1355
  return {
1356
1356
  mask: o.x,
1357
1357
  height: o.y
1358
1358
  };
1359
1359
  }
1360
- var jn = {
1360
+ var An = {
1361
1361
  type: "shape",
1362
1362
  nodeClass: "texture",
1363
1363
  label: "Shape",
@@ -1424,7 +1424,7 @@ var jn = {
1424
1424
  }
1425
1425
  ],
1426
1426
  build(e) {
1427
- let t = e.inputs.coord ?? e.coord, n = e.inputs.seed, r = e.params.shape ?? "blob", i = Math.round(Number(e.params.sides ?? 6)), { mask: a, height: o } = An(t, r, Number.isFinite(i) ? Math.max(3, i) : 6, n ?? null, {
1427
+ let t = e.inputs.coord ?? e.coord, n = e.inputs.seed, r = e.params.shape ?? "blob", i = Math.round(Number(e.params.sides ?? 6)), { mask: a, height: o } = kn(t, r, Number.isFinite(i) ? Math.max(3, i) : 6, n ?? null, {
1428
1428
  irregularity: e.uniforms.irregularity,
1429
1429
  dome: e.uniforms.dome,
1430
1430
  edge: e.uniforms.edge
@@ -1434,8 +1434,8 @@ var jn = {
1434
1434
  height: o
1435
1435
  };
1436
1436
  }
1437
- }, Mn = Math.PI * 2;
1438
- function Nn(e, t) {
1437
+ }, jn = Math.PI * 2;
1438
+ function Mn(e, t) {
1439
1439
  let n = e.x, r = e.y, i = e.z, a;
1440
1440
  switch (t) {
1441
1441
  case 1: {
@@ -1452,7 +1452,7 @@ function Nn(e, t) {
1452
1452
  a = n.add(r).mul(.5);
1453
1453
  break;
1454
1454
  case 4:
1455
- a = h(r, n).div(Mn).add(.5);
1455
+ a = h(r, n).div(jn).add(.5);
1456
1456
  break;
1457
1457
  case 5: {
1458
1458
  let e = k(.999999).sub(n.mul(n).add(r.mul(r)).add(i.mul(i)).sqrt()).max(0);
@@ -1468,7 +1468,7 @@ function Nn(e, t) {
1468
1468
  }
1469
1469
  //#endregion
1470
1470
  //#region src/graph/nodes/texture/gradient.ts
1471
- var Pn = [
1471
+ var Nn = [
1472
1472
  "linear",
1473
1473
  "quadratic",
1474
1474
  "easing",
@@ -1476,7 +1476,7 @@ var Pn = [
1476
1476
  "radial",
1477
1477
  "quadratic-sphere",
1478
1478
  "sphere"
1479
- ], Fn = {
1479
+ ], Pn = {
1480
1480
  type: "gradient",
1481
1481
  nodeClass: "texture",
1482
1482
  label: "Gradient",
@@ -1500,68 +1500,68 @@ var Pn = [
1500
1500
  key: "gradientType",
1501
1501
  label: "type",
1502
1502
  type: "select",
1503
- options: Pn,
1503
+ options: Nn,
1504
1504
  default: "linear"
1505
1505
  }],
1506
1506
  build(e) {
1507
- return { field: Nn((e.inputs.coord ?? e.coord).mul(e.uniforms.scale), Math.max(0, Pn.indexOf(e.params.gradientType))) };
1507
+ return { field: Mn((e.inputs.coord ?? e.coord).mul(e.uniforms.scale), Math.max(0, Nn.indexOf(e.params.gradientType))) };
1508
1508
  }
1509
- }, X = Math.PI * 2, In = Math.PI / 2, Ln = 20, Rn = 10;
1510
- function zn(e, t) {
1511
- if (t === 0) return k(.5).add(B(e.sub(In)).mul(.5));
1509
+ }, Z = Math.PI * 2, Fn = Math.PI / 2, In = 20, Ln = 10;
1510
+ function Rn(e, t) {
1511
+ if (t === 0) return k(.5).add(V(e.sub(Fn)).mul(.5));
1512
1512
  if (t === 1) {
1513
- let t = e.div(X);
1513
+ let t = e.div(Z);
1514
1514
  return t.sub(A(t));
1515
1515
  }
1516
- let n = e.div(X);
1516
+ let n = e.div(Z);
1517
1517
  return n.sub(A(n.add(.5))).abs().mul(2);
1518
1518
  }
1519
- function Bn(e, t, n, r, i) {
1520
- let a = Math.max(1, Math.round(i.scaleNum * Ln / X)), o = Math.max(1, Math.round(i.scaleNum * Rn / X)), s;
1521
- 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) {
1519
+ function zn(e, t, n, r, i) {
1520
+ let a = Math.max(1, Math.round(i.scaleNum * In / Z)), o = Math.max(1, Math.round(i.scaleNum * Ln / Z)), s;
1521
+ if (s = i.dir === 0 ? e.x.mul(a * Z) : i.dir === 1 ? e.y.mul(a * Z) : i.dir === 2 ? e.z.mul(a * Z) : e.x.add(e.y).add(e.z).mul(o * Z), s = s.add(t), i.withDistortion) {
1522
1522
  let t = Math.max(1, Math.round(i.scaleNum * i.detailScaleNum)), a = t, o = t;
1523
1523
  i.dir === 0 ? o = 2 : i.dir === 1 && (a = 2);
1524
- let c = et(K(e.x, e.y), a, o, Math.max(1, i.detail), r);
1524
+ let c = $e(q(e.x, e.y), a, o, Math.max(1, i.detail), r);
1525
1525
  s = s.add(n.mul(c));
1526
1526
  }
1527
- return zn(s, i.profile);
1527
+ return Rn(s, i.profile);
1528
1528
  }
1529
- function Vn(e, t, n, r, i, a) {
1530
- let o = (e) => e.sub(_e(e)), s;
1531
- 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));
1532
- let c = s.length().mul(t).mul(Ln).add(n);
1529
+ function Bn(e, t, n, r, i, a) {
1530
+ let o = (e) => e.sub(ge(e)), s;
1531
+ s = a.dir === 0 ? J(k(0), o(e.y), o(e.z)) : a.dir === 1 ? J(o(e.x), k(0), o(e.z)) : a.dir === 2 ? J(o(e.x), o(e.y), k(0)) : J(o(e.x), o(e.y), o(e.z));
1532
+ let c = s.length().mul(t).mul(In).add(n);
1533
1533
  if (a.withDistortion) {
1534
- let t = Math.max(1, Math.round(a.scaleNum * a.detailScaleNum)), n = et(K(e.x, e.y), t, t, Math.max(1, a.detail), i);
1534
+ let t = Math.max(1, Math.round(a.scaleNum * a.detailScaleNum)), n = $e(q(e.x, e.y), t, t, Math.max(1, a.detail), i);
1535
1535
  c = c.add(r.mul(n));
1536
1536
  }
1537
- return zn(c, a.profile);
1537
+ return Rn(c, a.profile);
1538
1538
  }
1539
- function Hn(e, t, n, r, i, a, o) {
1540
- if (o.tileable) return o.waveType === 0 ? Bn(e, n, r, a, o) : Vn(e, t, n, r, a, o);
1539
+ function Vn(e, t, n, r, i, a, o) {
1540
+ if (o.tileable) return o.waveType === 0 ? zn(e, n, r, a, o) : Bn(e, t, n, r, a, o);
1541
1541
  let s = e.mul(t).add(1e-6).mul(.999999), c;
1542
- if (o.waveType === 0) c = o.dir === 0 ? s.x.mul(Ln) : o.dir === 1 ? s.y.mul(Ln) : o.dir === 2 ? s.z.mul(Ln) : s.x.add(s.y).add(s.z).mul(Rn);
1542
+ if (o.waveType === 0) c = o.dir === 0 ? s.x.mul(In) : o.dir === 1 ? s.y.mul(In) : o.dir === 2 ? s.z.mul(In) : s.x.add(s.y).add(s.z).mul(Ln);
1543
1543
  else {
1544
1544
  let e = s;
1545
- 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(Ln);
1545
+ o.dir === 0 ? e = s.mul(J(0, 1, 1)) : o.dir === 1 ? e = s.mul(J(1, 0, 1)) : o.dir === 2 && (e = s.mul(J(1, 1, 0))), c = e.length().mul(In);
1546
1546
  }
1547
1547
  if (c = c.add(n), o.withDistortion) {
1548
- let e = Je(s.mul(i), o.detail, a, k(2));
1548
+ let e = qe(s.mul(i), o.detail, a, k(2));
1549
1549
  c = c.add(r.mul(e.mul(2).sub(1)));
1550
1550
  }
1551
- return zn(c, o.profile);
1551
+ return Rn(c, o.profile);
1552
1552
  }
1553
1553
  //#endregion
1554
1554
  //#region src/graph/nodes/texture/wave.ts
1555
- var Un = ["bands", "rings"], Wn = [
1555
+ var Hn = ["bands", "rings"], Un = [
1556
1556
  "x",
1557
1557
  "y",
1558
1558
  "z",
1559
1559
  "diagonal"
1560
- ], Gn = [
1560
+ ], Wn = [
1561
1561
  "sine",
1562
1562
  "saw",
1563
1563
  "triangle"
1564
- ], Kn = {
1564
+ ], Gn = {
1565
1565
  type: "wave",
1566
1566
  nodeClass: "texture",
1567
1567
  label: "Wave",
@@ -1588,21 +1588,21 @@ var Un = ["bands", "rings"], Wn = [
1588
1588
  key: "waveType",
1589
1589
  label: "type",
1590
1590
  type: "select",
1591
- options: Un,
1591
+ options: Hn,
1592
1592
  default: "bands"
1593
1593
  },
1594
1594
  {
1595
1595
  key: "direction",
1596
1596
  label: "direction",
1597
1597
  type: "select",
1598
- options: Wn,
1598
+ options: Un,
1599
1599
  default: "x"
1600
1600
  },
1601
1601
  {
1602
1602
  key: "profile",
1603
1603
  label: "profile",
1604
1604
  type: "select",
1605
- options: Gn,
1605
+ options: Wn,
1606
1606
  default: "sine"
1607
1607
  },
1608
1608
  {
@@ -1655,18 +1655,18 @@ var Un = ["bands", "rings"], Wn = [
1655
1655
  ],
1656
1656
  build(e) {
1657
1657
  let t = e.inputs.coord ?? e.coord, n = {
1658
- waveType: Math.max(0, Un.indexOf(e.params.waveType)),
1659
- dir: Math.max(0, Wn.indexOf(e.params.direction)),
1660
- profile: Math.max(0, Gn.indexOf(e.params.profile)),
1658
+ waveType: Math.max(0, Hn.indexOf(e.params.waveType)),
1659
+ dir: Math.max(0, Un.indexOf(e.params.direction)),
1660
+ profile: Math.max(0, Wn.indexOf(e.params.profile)),
1661
1661
  withDistortion: Number(e.params.distortion ?? 0) > 0,
1662
1662
  detail: e.params.detail ?? 2,
1663
1663
  tileable: e.backend === "offline",
1664
1664
  scaleNum: Number(e.params.scale ?? 1),
1665
1665
  detailScaleNum: Number(e.params.detailScale ?? 1)
1666
1666
  };
1667
- return { field: Hn(t, e.uniforms.scale, e.uniforms.phase, e.uniforms.distortion, e.uniforms.detailScale, e.uniforms.detailRoughness, n) };
1667
+ return { field: Vn(t, e.uniforms.scale, e.uniforms.phase, e.uniforms.distortion, e.uniforms.detailScale, e.uniforms.detailRoughness, n) };
1668
1668
  }
1669
- }, qn = 6.283185307179586, Jn = {
1669
+ }, Kn = 6.283185307179586, qn = {
1670
1670
  type: "anisotropic-stripes",
1671
1671
  nodeClass: "texture",
1672
1672
  label: "Anisotropic Stripes",
@@ -1717,10 +1717,10 @@ var Un = ["bands", "rings"], Wn = [
1717
1717
  }
1718
1718
  ],
1719
1719
  build(e) {
1720
- let t = e.inputs.coord ?? e.coord, n = h(t.z, t.x).div(qn), r = se(q(t.y.mul(.6), n.mul(6), k(0))).mul(e.uniforms.waviness);
1721
- return { field: n.mul(e.uniforms.count).add(r).mul(qn).sin().mul(.5).add(.5).pow(e.uniforms.sharpness).mul(e.uniforms.contrast) };
1720
+ let t = e.inputs.coord ?? e.coord, n = h(t.z, t.x).div(Kn), r = R(J(t.y.mul(.6), n.mul(6), k(0))).mul(e.uniforms.waviness);
1721
+ return { field: n.mul(e.uniforms.count).add(r).mul(Kn).sin().mul(.5).add(.5).pow(e.uniforms.sharpness).mul(e.uniforms.contrast) };
1722
1722
  }
1723
- }, Yn = /* @__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("."), Xn = new Set([
1723
+ }, Jn = /* @__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("."), Yn = new Set([
1724
1724
  "sqrt",
1725
1725
  "inverse-sqrt",
1726
1726
  "absolute",
@@ -1742,13 +1742,13 @@ var Un = ["bands", "rings"], Wn = [
1742
1742
  "tanh",
1743
1743
  "radians",
1744
1744
  "degrees"
1745
- ]), Zn = new Set([
1745
+ ]), Xn = new Set([
1746
1746
  "multiply-add",
1747
1747
  "compare",
1748
1748
  "smooth-min",
1749
1749
  "smooth-max",
1750
1750
  "wrap"
1751
- ]), Qn = {
1751
+ ]), Zn = {
1752
1752
  power: ["Base", "Exponent"],
1753
1753
  logarithm: ["Value", "Base"],
1754
1754
  "multiply-add": [
@@ -1781,8 +1781,8 @@ var Un = ["bands", "rings"], Wn = [
1781
1781
  radians: ["Degrees"],
1782
1782
  degrees: ["Radians"]
1783
1783
  };
1784
- function $n(e) {
1785
- let [t, n, r] = Qn[e] ?? [
1784
+ function Qn(e) {
1785
+ let [t, n, r] = Zn[e] ?? [
1786
1786
  "A",
1787
1787
  "B",
1788
1788
  "C"
@@ -1791,17 +1791,17 @@ function $n(e) {
1791
1791
  label: t,
1792
1792
  kind: "float"
1793
1793
  }];
1794
- return Xn.has(e) || i.push({
1794
+ return Yn.has(e) || i.push({
1795
1795
  key: "b",
1796
1796
  label: n ?? "B",
1797
1797
  kind: "float"
1798
- }), Zn.has(e) && i.push({
1798
+ }), Xn.has(e) && i.push({
1799
1799
  key: "c",
1800
1800
  label: r ?? "C",
1801
1801
  kind: "float"
1802
1802
  }), i;
1803
1803
  }
1804
- var er = {
1804
+ var $n = {
1805
1805
  type: "math",
1806
1806
  nodeClass: "converter",
1807
1807
  label: "Math",
@@ -1823,7 +1823,7 @@ var er = {
1823
1823
  key: "op",
1824
1824
  label: "op",
1825
1825
  type: "select",
1826
- options: Yn,
1826
+ options: Jn,
1827
1827
  default: "mix"
1828
1828
  },
1829
1829
  {
@@ -1847,7 +1847,7 @@ var er = {
1847
1847
  ],
1848
1848
  declare(e) {
1849
1849
  return {
1850
- inputs: $n(e.op ?? "mix"),
1850
+ inputs: Qn(e.op ?? "mix"),
1851
1851
  outputs: [{
1852
1852
  key: "field",
1853
1853
  kind: "float"
@@ -1860,63 +1860,63 @@ var er = {
1860
1860
  case "add": return { field: t.add(n) };
1861
1861
  case "subtract": return { field: t.sub(n) };
1862
1862
  case "multiply": return { field: t.mul(n) };
1863
- case "divide": return { field: z(n.equal(0), k(0), t.div(n)) };
1863
+ case "divide": return { field: B(n.equal(0), k(0), t.div(n)) };
1864
1864
  case "multiply-add": return { field: t.mul(n).add(r) };
1865
- case "power": return { field: R(t, n) };
1866
- case "logarithm": return { field: z(t.greaterThan(0).and(n.greaterThan(0)), ae(t).div(ae(n)), k(0)) };
1867
- case "sqrt": return { field: Se(t) };
1868
- case "inverse-sqrt": return { field: z(t.greaterThan(0), ie(t), k(0)) };
1865
+ case "power": return { field: z(t, n) };
1866
+ case "logarithm": return { field: B(t.greaterThan(0).and(n.greaterThan(0)), ae(t).div(ae(n)), k(0)) };
1867
+ case "sqrt": return { field: xe(t) };
1868
+ case "inverse-sqrt": return { field: B(t.greaterThan(0), ie(t), k(0)) };
1869
1869
  case "absolute": return { field: f(t) };
1870
1870
  case "exponent": return { field: O(t) };
1871
1871
  case "min": return { field: F(t, n) };
1872
1872
  case "max": return { field: P(t, n) };
1873
- case "less-than": return { field: z(t.lessThan(n), k(1), k(0)) };
1874
- case "greater-than": return { field: z(t.greaterThan(n), k(1), k(0)) };
1875
- case "sign": return { field: be(t) };
1876
- case "compare": return { field: z(t.sub(n).abs().lessThanEqual(P(r, k(1e-5))), k(1), k(0)) };
1877
- case "smooth-min": return { field: tr(t, n, r) };
1878
- case "smooth-max": return { field: tr(t.negate(), n.negate(), r).negate() };
1879
- case "round": return { field: _e(t) };
1873
+ case "less-than": return { field: B(t.lessThan(n), k(1), k(0)) };
1874
+ case "greater-than": return { field: B(t.greaterThan(n), k(1), k(0)) };
1875
+ case "sign": return { field: ye(t) };
1876
+ case "compare": return { field: B(t.sub(n).abs().lessThanEqual(P(r, k(1e-5))), k(1), k(0)) };
1877
+ case "smooth-min": return { field: er(t, n, r) };
1878
+ case "smooth-max": return { field: er(t.negate(), n.negate(), r).negate() };
1879
+ case "round": return { field: ge(t) };
1880
1880
  case "floor": return { field: A(t) };
1881
1881
  case "ceil": return { field: y(t) };
1882
- case "truncate": return { field: Ee(t) };
1882
+ case "truncate": return { field: Te(t) };
1883
1883
  case "fraction": return { field: j(t) };
1884
- case "modulo": return { field: z(n.equal(0), k(0), t.sub(n.mul(Ee(t.div(n))))) };
1885
- case "floored-modulo": return { field: z(n.equal(0), k(0), t.sub(n.mul(A(t.div(n))))) };
1886
- case "wrap": return { field: nr(t, n, r) };
1887
- case "snap": return { field: z(n.equal(0), k(0), A(t.div(n)).mul(n)) };
1888
- case "pingpong": return { field: rr(t, n) };
1889
- case "sine": return { field: B(t) };
1884
+ case "modulo": return { field: B(n.equal(0), k(0), t.sub(n.mul(Te(t.div(n))))) };
1885
+ case "floored-modulo": return { field: B(n.equal(0), k(0), t.sub(n.mul(A(t.div(n))))) };
1886
+ case "wrap": return { field: tr(t, n, r) };
1887
+ case "snap": return { field: B(n.equal(0), k(0), A(t.div(n)).mul(n)) };
1888
+ case "pingpong": return { field: nr(t, n) };
1889
+ case "sine": return { field: V(t) };
1890
1890
  case "cosine": return { field: S(t) };
1891
- case "tangent": return { field: we(t) };
1892
- case "arcsine": return { field: z(t.abs().lessThanEqual(1), m(t), k(0)) };
1893
- case "arccosine": return { field: z(t.abs().lessThanEqual(1), p(t), k(0)) };
1891
+ case "tangent": return { field: Ce(t) };
1892
+ case "arcsine": return { field: B(t.abs().lessThanEqual(1), m(t), k(0)) };
1893
+ case "arccosine": return { field: B(t.abs().lessThanEqual(1), p(t), k(0)) };
1894
1894
  case "arctangent": return { field: h(t) };
1895
1895
  case "arctan2": return { field: h(t, n) };
1896
- case "sinh": return { field: xe(t) };
1896
+ case "sinh": return { field: be(t) };
1897
1897
  case "cosh": return { field: C(t) };
1898
- case "tanh": return { field: Te(t) };
1899
- case "radians": return { field: he(t) };
1898
+ case "tanh": return { field: we(t) };
1899
+ case "radians": return { field: me(t) };
1900
1900
  case "degrees": return { field: ee(t) };
1901
1901
  default: return { field: I(t, n, e.uniforms.factor) };
1902
1902
  }
1903
1903
  }
1904
1904
  };
1905
- function tr(e, t, n) {
1905
+ function er(e, t, n) {
1906
1906
  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));
1907
- return z(n.equal(0), F(e, t), i);
1907
+ return B(n.equal(0), F(e, t), i);
1908
1908
  }
1909
- function nr(e, t, n) {
1909
+ function tr(e, t, n) {
1910
1910
  let r = t.sub(n);
1911
- return z(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
1911
+ return B(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
1912
1912
  }
1913
- function rr(e, t) {
1913
+ function nr(e, t) {
1914
1914
  let n = t.mul(2);
1915
- return z(t.equal(0), k(0), j(e.sub(t).div(n)).mul(n).sub(t).abs());
1915
+ return B(t.equal(0), k(0), j(e.sub(t).div(n)).mul(n).sub(t).abs());
1916
1916
  }
1917
1917
  //#endregion
1918
1918
  //#region src/graph/nodes/converter/levels.ts
1919
- var ir = {
1919
+ var rr = {
1920
1920
  type: "levels",
1921
1921
  nodeClass: "converter",
1922
1922
  label: "Levels / Remap",
@@ -1958,7 +1958,7 @@ var ir = {
1958
1958
  let t = e.inputs.field ?? k(.5), n = e.params.invert ? t.oneMinus() : t;
1959
1959
  return { field: I(e.uniforms.min, e.uniforms.max, n) };
1960
1960
  }
1961
- }, ar = {
1961
+ }, ir = {
1962
1962
  type: "color-ramp",
1963
1963
  nodeClass: "converter",
1964
1964
  label: "Color Ramp",
@@ -2006,7 +2006,7 @@ var ir = {
2006
2006
  let t = e.inputs.field ?? k(.5), n = e.uniforms.low, r = e.uniforms.high, i = b(t.sub(n).div(r.sub(n).max(1e-5)), 0, 1);
2007
2007
  return { color: I(e.uniforms.colorA, e.uniforms.colorB, i) };
2008
2008
  }
2009
- }, or = {
2009
+ }, ar = {
2010
2010
  type: "height-blend",
2011
2011
  nodeClass: "converter",
2012
2012
  label: "Height Blend",
@@ -2064,9 +2064,9 @@ var ir = {
2064
2064
  let t = e.inputs.heightA ?? k(.5), n = e.inputs.heightB ?? k(.5), r = e.uniforms.transition, i = e.uniforms.width;
2065
2065
  e.inputs.breakup !== void 0 && (n = n.add(e.inputs.breakup.sub(.5).mul(e.uniforms.breakup)));
2066
2066
  let a = n.sub(t).add(r.mul(2).sub(1));
2067
- return { fac: V(i.negate(), i, a) };
2067
+ return { fac: H(i.negate(), i, a) };
2068
2068
  }
2069
- }, sr = {
2069
+ }, or = {
2070
2070
  type: "blend",
2071
2071
  nodeClass: "color",
2072
2072
  label: "Blend",
@@ -2129,7 +2129,7 @@ var ir = {
2129
2129
  let i = (e.inputs.mask ?? k(1)).mul(e.uniforms.opacity);
2130
2130
  return { color: I(t, r, i) };
2131
2131
  }
2132
- }, cr = {
2132
+ }, sr = {
2133
2133
  type: "invert",
2134
2134
  nodeClass: "color",
2135
2135
  label: "Invert Color",
@@ -2156,10 +2156,10 @@ var ir = {
2156
2156
  default: 1
2157
2157
  }],
2158
2158
  build(e) {
2159
- let t = e.inputs.color ?? q(0, 0, 0), n = e.inputs.fac ?? e.uniforms.fac;
2160
- return { color: I(t, q(1, 1, 1).sub(t), n) };
2159
+ let t = e.inputs.color ?? J(0, 0, 0), n = e.inputs.fac ?? e.uniforms.fac;
2160
+ return { color: I(t, J(1, 1, 1).sub(t), n) };
2161
2161
  }
2162
- }, lr = {
2162
+ }, cr = {
2163
2163
  type: "bright-contrast",
2164
2164
  nodeClass: "color",
2165
2165
  label: "Bright / Contrast",
@@ -2202,21 +2202,21 @@ var ir = {
2202
2202
  default: 0
2203
2203
  }],
2204
2204
  build(e) {
2205
- let t = e.inputs.color ?? q(0, 0, 0), n = e.inputs.contrast ?? e.uniforms.contrast, r = e.inputs.bright ?? e.uniforms.bright, i = k(1).add(n), a = r.sub(n.mul(.5));
2205
+ let t = e.inputs.color ?? J(0, 0, 0), n = e.inputs.contrast ?? e.uniforms.contrast, r = e.inputs.bright ?? e.uniforms.bright, i = k(1).add(n), a = r.sub(n.mul(.5));
2206
2206
  return { color: t.mul(i).add(a).max(0) };
2207
2207
  }
2208
- }, ur = 1e-10;
2209
- function dr(e) {
2210
- 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 = z(i.equal(0), k(0), o.div(P(i, k(ur)))), l = q(i, i, i).sub(e).div(P(o, k(ur))), 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 = z(n.equal(i), d, f);
2211
- return p = z(t.equal(i), u, p), p = p.div(6), p = z(p.lessThan(0), p.add(1), p), p = z(c.equal(0), k(0), p), q(p, c, s);
2208
+ }, lr = 1e-10;
2209
+ function ur(e) {
2210
+ 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(lr)))), l = J(i, i, i).sub(e).div(P(o, k(lr))), 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);
2211
+ 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), J(p, c, s);
2212
2212
  }
2213
- function fr(e) {
2214
- let t = e.x, n = e.y, r = e.z, i = z(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);
2215
- return u = z(a.equal(4), q(l, s, r), u), u = z(a.equal(3), q(s, c, r), u), u = z(a.equal(2), q(s, r, l), u), u = z(a.equal(1), q(c, r, s), u), u = z(a.equal(0), q(r, l, s), u), z(n.equal(0), q(r, r, r), u);
2213
+ function dr(e) {
2214
+ 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 = J(r, s, c);
2215
+ return u = B(a.equal(4), J(l, s, r), u), u = B(a.equal(3), J(s, c, r), u), u = B(a.equal(2), J(s, r, l), u), u = B(a.equal(1), J(c, r, s), u), u = B(a.equal(0), J(r, l, s), u), B(n.equal(0), J(r, r, r), u);
2216
2216
  }
2217
2217
  //#endregion
2218
2218
  //#region src/graph/nodes/color/hue-sat-val.ts
2219
- var pr = {
2219
+ var fr = {
2220
2220
  type: "hue-sat-val",
2221
2221
  nodeClass: "color",
2222
2222
  label: "Hue / Saturation",
@@ -2268,17 +2268,17 @@ var pr = {
2268
2268
  }
2269
2269
  ],
2270
2270
  build(e) {
2271
- let t = e.inputs.color ?? q(.8, .8, .8), n = dr(t);
2272
- return { color: I(t, fr(q(j(n.x.add(e.uniforms.hue).add(.5)), n.y.mul(e.uniforms.saturation).clamp(0, 1), n.z.mul(e.uniforms.value))), e.uniforms.fac) };
2271
+ let t = e.inputs.color ?? J(.8, .8, .8), n = ur(t);
2272
+ return { color: I(t, dr(J(j(n.x.add(e.uniforms.hue).add(.5)), n.y.mul(e.uniforms.saturation).clamp(0, 1), n.z.mul(e.uniforms.value))), e.uniforms.fac) };
2273
2273
  }
2274
- }, mr = (e, t, n, r, i) => z(e.equal(0), t, z(e.equal(1), n, z(e.equal(2), r, i)));
2275
- function hr(e, t) {
2276
- let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a = mr(r, t[0], t[0], t[1], t[2]), o = mr(r, t[0], t[1], t[2], t[3]), s = mr(r, t[1], t[2], t[3], t[4]), c = mr(r, t[2], t[3], t[4], t[4]), l = i.mul(i), u = l.mul(i);
2274
+ }, pr = (e, t, n, r, i) => B(e.equal(0), t, B(e.equal(1), n, B(e.equal(2), r, i)));
2275
+ function mr(e, t) {
2276
+ let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a = pr(r, t[0], t[0], t[1], t[2]), o = pr(r, t[0], t[1], t[2], t[3]), s = pr(r, t[1], t[2], t[3], t[4]), c = pr(r, t[2], t[3], t[4], t[4]), l = i.mul(i), u = l.mul(i);
2277
2277
  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);
2278
2278
  }
2279
2279
  //#endregion
2280
2280
  //#region src/graph/nodes/color/rgb-curves.ts
2281
- var gr = () => [...Ae], _r = {
2281
+ var hr = () => [...ke], gr = {
2282
2282
  type: "rgb-curves",
2283
2283
  nodeClass: "color",
2284
2284
  label: "RGB Curves",
@@ -2308,14 +2308,14 @@ var gr = () => [...Ae], _r = {
2308
2308
  label: "curves",
2309
2309
  type: "curve",
2310
2310
  default: {
2311
- C: gr(),
2312
- R: gr(),
2313
- G: gr(),
2314
- B: gr()
2311
+ C: hr(),
2312
+ R: hr(),
2313
+ G: hr(),
2314
+ B: hr()
2315
2315
  }
2316
2316
  }],
2317
2317
  build(e) {
2318
- let t = e.inputs.color ?? q(0, 0, 0), n = e.uniforms.curves, r = (e) => [
2318
+ let t = e.inputs.color ?? J(0, 0, 0), n = e.uniforms.curves, r = (e) => [
2319
2319
  0,
2320
2320
  1,
2321
2321
  2,
@@ -2326,10 +2326,10 @@ var gr = () => [...Ae], _r = {
2326
2326
  r(5),
2327
2327
  r(10),
2328
2328
  r(15)
2329
- ], c = hr(hr(t.x, i), a), l = hr(hr(t.y, i), o), u = hr(hr(t.z, i), s), d = e.inputs.fac ?? e.uniforms.fac;
2330
- return { color: I(t, q(c, l, u), d) };
2329
+ ], c = mr(mr(t.x, i), a), l = mr(mr(t.y, i), o), u = mr(mr(t.z, i), s), d = e.inputs.fac ?? e.uniforms.fac;
2330
+ return { color: I(t, J(c, l, u), d) };
2331
2331
  }
2332
- }, vr = {
2332
+ }, _r = {
2333
2333
  type: "luminance",
2334
2334
  nodeClass: "converter",
2335
2335
  label: "Luminance",
@@ -2346,7 +2346,7 @@ var gr = () => [...Ae], _r = {
2346
2346
  let t = e.inputs.color;
2347
2347
  return { field: t ? oe(t) : k(0) };
2348
2348
  }
2349
- }, yr = {
2349
+ }, vr = {
2350
2350
  type: "split-channels",
2351
2351
  nodeClass: "converter",
2352
2352
  label: "Split Channels",
@@ -2381,7 +2381,7 @@ var gr = () => [...Ae], _r = {
2381
2381
  b: k(0)
2382
2382
  };
2383
2383
  }
2384
- }, br = {
2384
+ }, yr = {
2385
2385
  type: "combine-channels",
2386
2386
  nodeClass: "converter",
2387
2387
  label: "Combine Channels",
@@ -2405,9 +2405,9 @@ var gr = () => [...Ae], _r = {
2405
2405
  }],
2406
2406
  params: [],
2407
2407
  build(e) {
2408
- return { color: q(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
2408
+ return { color: J(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
2409
2409
  }
2410
- }, xr = {
2410
+ }, br = {
2411
2411
  type: "clamp",
2412
2412
  nodeClass: "converter",
2413
2413
  label: "Clamp",
@@ -2463,7 +2463,7 @@ var gr = () => [...Ae], _r = {
2463
2463
  let t = e.inputs.value ?? k(0), n = e.inputs.min ?? e.uniforms.min, r = e.inputs.max ?? e.uniforms.max;
2464
2464
  return e.params.mode === "range" ? { field: t.clamp(F(n, r), P(n, r)) } : { field: b(t, n, r) };
2465
2465
  }
2466
- }, Sr = {
2466
+ }, xr = {
2467
2467
  type: "separate-xyz",
2468
2468
  nodeClass: "converter",
2469
2469
  label: "Separate XYZ",
@@ -2487,14 +2487,14 @@ var gr = () => [...Ae], _r = {
2487
2487
  ],
2488
2488
  params: [],
2489
2489
  build(e) {
2490
- let t = e.inputs.vector ?? q(0, 0, 0);
2490
+ let t = e.inputs.vector ?? J(0, 0, 0);
2491
2491
  return {
2492
2492
  x: t.x,
2493
2493
  y: t.y,
2494
2494
  z: t.z
2495
2495
  };
2496
2496
  }
2497
- }, Cr = {
2497
+ }, Sr = {
2498
2498
  type: "combine-xyz",
2499
2499
  nodeClass: "converter",
2500
2500
  label: "Combine XYZ",
@@ -2546,9 +2546,9 @@ var gr = () => [...Ae], _r = {
2546
2546
  }
2547
2547
  ],
2548
2548
  build(e) {
2549
- return { vector: q(e.inputs.x ?? e.uniforms.x, e.inputs.y ?? e.uniforms.y, e.inputs.z ?? e.uniforms.z) };
2549
+ return { vector: J(e.inputs.x ?? e.uniforms.x, e.inputs.y ?? e.uniforms.y, e.inputs.z ?? e.uniforms.z) };
2550
2550
  }
2551
- }, wr = {
2551
+ }, Cr = {
2552
2552
  type: "constant-field",
2553
2553
  nodeClass: "input",
2554
2554
  label: "Constant (Field)",
@@ -2569,7 +2569,7 @@ var gr = () => [...Ae], _r = {
2569
2569
  build(e) {
2570
2570
  return { field: e.uniforms.value };
2571
2571
  }
2572
- }, Tr = {
2572
+ }, wr = {
2573
2573
  type: "constant-color",
2574
2574
  nodeClass: "input",
2575
2575
  label: "Constant (Color)",
@@ -2587,7 +2587,7 @@ var gr = () => [...Ae], _r = {
2587
2587
  build(e) {
2588
2588
  return { color: e.uniforms.color };
2589
2589
  }
2590
- }, Er = {
2590
+ }, Tr = {
2591
2591
  type: "tex-coordinate",
2592
2592
  nodeClass: "input",
2593
2593
  label: "Texture Coordinate",
@@ -2616,20 +2616,20 @@ var gr = () => [...Ae], _r = {
2616
2616
  ],
2617
2617
  params: [],
2618
2618
  build(e) {
2619
- let t = q(G().x, G().y, k(0));
2619
+ let t = J(K().x, K().y, k(0));
2620
2620
  return e.backend === "offline" ? {
2621
2621
  generated: t,
2622
2622
  uv: t,
2623
2623
  object: t,
2624
2624
  normal: t
2625
2625
  } : {
2626
- generated: pe,
2626
+ generated: fe,
2627
2627
  uv: t,
2628
- object: pe,
2629
- normal: ce
2628
+ object: fe,
2629
+ normal: se
2630
2630
  };
2631
2631
  }
2632
- }, Dr = [
2632
+ }, Er = [
2633
2633
  "add",
2634
2634
  "subtract",
2635
2635
  "multiply",
@@ -2652,11 +2652,11 @@ var gr = () => [...Ae], _r = {
2652
2652
  "sine",
2653
2653
  "cosine",
2654
2654
  "tangent"
2655
- ], Or = new Set([
2655
+ ], Dr = new Set([
2656
2656
  "dot",
2657
2657
  "distance",
2658
2658
  "length"
2659
- ]), kr = [{
2659
+ ]), Or = [{
2660
2660
  key: "vector1",
2661
2661
  label: "A",
2662
2662
  kind: "vector"
@@ -2664,11 +2664,11 @@ var gr = () => [...Ae], _r = {
2664
2664
  key: "vector2",
2665
2665
  label: "B",
2666
2666
  kind: "vector"
2667
- }], Ar = {
2667
+ }], kr = {
2668
2668
  type: "vector-math",
2669
2669
  nodeClass: "vector",
2670
2670
  label: "Vector Math",
2671
- inputs: kr,
2671
+ inputs: Or,
2672
2672
  outputs: [{
2673
2673
  key: "vector",
2674
2674
  label: "Vector",
@@ -2678,7 +2678,7 @@ var gr = () => [...Ae], _r = {
2678
2678
  key: "operation",
2679
2679
  label: "op",
2680
2680
  type: "select",
2681
- options: Dr,
2681
+ options: Er,
2682
2682
  default: "add"
2683
2683
  }, {
2684
2684
  key: "scale",
@@ -2692,8 +2692,8 @@ var gr = () => [...Ae], _r = {
2692
2692
  declare(e) {
2693
2693
  let t = e.operation ?? "add";
2694
2694
  return {
2695
- inputs: kr,
2696
- outputs: Or.has(t) ? [{
2695
+ inputs: Or,
2696
+ outputs: Dr.has(t) ? [{
2697
2697
  key: "value",
2698
2698
  label: "Value",
2699
2699
  kind: "float"
@@ -2705,14 +2705,14 @@ var gr = () => [...Ae], _r = {
2705
2705
  };
2706
2706
  },
2707
2707
  build(e) {
2708
- let t = e.inputs.vector1 ?? e.coord, n = e.inputs.vector2 ?? q(0, 0, 0), r = e.uniforms.scale;
2708
+ let t = e.inputs.vector1 ?? e.coord, n = e.inputs.vector2 ?? J(0, 0, 0), r = e.uniforms.scale;
2709
2709
  switch (e.params.operation ?? "add") {
2710
2710
  case "subtract": return { vector: t.sub(n) };
2711
2711
  case "multiply": return { vector: t.mul(n) };
2712
2712
  case "divide": return { vector: t.div(n) };
2713
2713
  case "cross": return { vector: w(t, n) };
2714
2714
  case "project": return { vector: n.mul(D(t, n).div(D(n, n))) };
2715
- case "reflect": return { vector: ge(t, n.normalize()) };
2715
+ case "reflect": return { vector: he(t, n.normalize()) };
2716
2716
  case "dot": return { value: D(t, n) };
2717
2717
  case "distance": return { value: t.sub(n).length() };
2718
2718
  case "length": return { value: t.length() };
@@ -2725,13 +2725,13 @@ var gr = () => [...Ae], _r = {
2725
2725
  case "absolute": return { vector: t.abs() };
2726
2726
  case "minimum": return { vector: F(t, n) };
2727
2727
  case "maximum": return { vector: P(t, n) };
2728
- case "sine": return { vector: B(t) };
2728
+ case "sine": return { vector: V(t) };
2729
2729
  case "cosine": return { vector: S(t) };
2730
- case "tangent": return { vector: we(t) };
2730
+ case "tangent": return { vector: Ce(t) };
2731
2731
  default: return { vector: t.add(n) };
2732
2732
  }
2733
2733
  }
2734
- }, jr = 1, Mr = {
2734
+ }, Ar = 1, jr = {
2735
2735
  type: "normal-from-height",
2736
2736
  nodeClass: "vector",
2737
2737
  label: "Normal From Height",
@@ -2756,10 +2756,10 @@ var gr = () => [...Ae], _r = {
2756
2756
  build(e) {
2757
2757
  let t = e.inputs.height ?? k(.5);
2758
2758
  if (e.backend === "live") return { normal: v(t, e.uniforms.strength) };
2759
- let n = t, r = G(), i = T(n).div(T(r.x)), a = E(n).div(E(r.y)), o = e.uniforms.strength, s = K(i, a).mul(o), c = k(jr), l = s.mul(c.div(s.length().max(c)));
2760
- return { normal: de(q(l.x.negate(), l.y.negate(), k(1))).mul(.5).add(.5) };
2759
+ let n = t, r = K(), i = T(n).div(T(r.x)), a = E(n).div(E(r.y)), o = e.uniforms.strength, s = q(i, a).mul(o), c = k(Ar), l = s.mul(c.div(s.length().max(c)));
2760
+ return { normal: ue(J(l.x.negate(), l.y.negate(), k(1))).mul(.5).add(.5) };
2761
2761
  }
2762
- }, Nr = {
2762
+ }, Mr = {
2763
2763
  type: "normal-map",
2764
2764
  nodeClass: "vector",
2765
2765
  label: "Normal Map",
@@ -2786,13 +2786,13 @@ var gr = () => [...Ae], _r = {
2786
2786
  default: 1
2787
2787
  }],
2788
2788
  build(e) {
2789
- return { normal: le(e.inputs.color ?? q(.5, .5, 1), e.inputs.strength ?? e.uniforms.strength) };
2789
+ return { normal: ce(e.inputs.color ?? J(.5, .5, 1), e.inputs.strength ?? e.uniforms.strength) };
2790
2790
  }
2791
2791
  };
2792
2792
  //#endregion
2793
2793
  //#region src/tsl/blender-mapping.ts
2794
- function Pr(e) {
2795
- let t = S(e.x), n = S(e.y), r = S(e.z), i = B(e.x), a = B(e.y), o = B(e.z), s = t.mul(r), c = t.mul(o), l = i.mul(r), u = i.mul(o);
2794
+ function Nr(e) {
2795
+ let t = S(e.x), n = S(e.y), r = S(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);
2796
2796
  return {
2797
2797
  m00: n.mul(r),
2798
2798
  m10: a.mul(l).sub(c),
@@ -2805,24 +2805,24 @@ function Pr(e) {
2805
2805
  m22: n.mul(t)
2806
2806
  };
2807
2807
  }
2808
- function Fr(e, t) {
2809
- 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)));
2808
+ function Pr(e, t) {
2809
+ return J(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)));
2810
2810
  }
2811
- function Ir(e, t) {
2812
- 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)));
2811
+ function Fr(e, t) {
2812
+ return J(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)));
2813
2813
  }
2814
- function Lr(e, t, n, r, i) {
2815
- let a = Pr(n);
2816
- return i === 1 ? Ir(a, e.sub(t)).div(r) : i === 2 ? Fr(a, e.mul(r)) : i === 3 ? Fr(a, e.div(r)).normalize() : Fr(a, e.mul(r)).add(t);
2814
+ function Ir(e, t, n, r, i) {
2815
+ let a = Nr(n);
2816
+ return i === 1 ? Fr(a, e.sub(t)).div(r) : i === 2 ? Pr(a, e.mul(r)) : i === 3 ? Pr(a, e.div(r)).normalize() : Pr(a, e.mul(r)).add(t);
2817
2817
  }
2818
2818
  //#endregion
2819
2819
  //#region src/graph/nodes/vector/mapping.ts
2820
- var Rr = [
2820
+ var Lr = [
2821
2821
  "point",
2822
2822
  "texture",
2823
2823
  "vector",
2824
2824
  "normal"
2825
- ], zr = {
2825
+ ], Rr = {
2826
2826
  type: "mapping",
2827
2827
  nodeClass: "vector",
2828
2828
  label: "Mapping",
@@ -2839,7 +2839,7 @@ var Rr = [
2839
2839
  key: "mappingType",
2840
2840
  label: "type",
2841
2841
  type: "select",
2842
- options: Rr,
2842
+ options: Lr,
2843
2843
  default: "point"
2844
2844
  },
2845
2845
  {
@@ -2874,10 +2874,10 @@ var Rr = [
2874
2874
  }
2875
2875
  ],
2876
2876
  build(e) {
2877
- let t = e.inputs.vector ?? e.coord, n = Math.max(0, Rr.indexOf(e.params.mappingType));
2878
- return { vector: Lr(t, e.uniforms.location, e.uniforms.rotation, e.uniforms.scale, n) };
2877
+ let t = e.inputs.vector ?? e.coord, n = Math.max(0, Lr.indexOf(e.params.mappingType));
2878
+ return { vector: Ir(t, e.uniforms.location, e.uniforms.rotation, e.uniforms.scale, n) };
2879
2879
  }
2880
- }, Br = [
2880
+ }, zr = [
2881
2881
  {
2882
2882
  key: "baseColor",
2883
2883
  label: "base color",
@@ -2982,7 +2982,7 @@ var Rr = [
2982
2982
  step: .1,
2983
2983
  default: 1
2984
2984
  }
2985
- ], Vr = Object.fromEntries(Br.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default])), Hr = {
2985
+ ], Br = Object.fromEntries(zr.filter((e) => e.type === "float" || e.type === "int").map((e) => [e.key, e.default])), Vr = {
2986
2986
  type: "principled-bsdf",
2987
2987
  nodeClass: "shader",
2988
2988
  label: "Principled BSDF",
@@ -3067,9 +3067,9 @@ var Rr = [
3067
3067
  key: "bsdf",
3068
3068
  kind: "shader"
3069
3069
  }],
3070
- params: Br,
3070
+ params: zr,
3071
3071
  build(e) {
3072
- let t = e.uniforms, n = (n) => e.inputs[n] ?? t[n], r = (t) => Number(e.params[t] ?? Vr[t] ?? 0), i = (n) => e.inputs[n] === void 0 ? r(n) > 0 ? t[n] : void 0 : e.inputs[n], a = e.inputs.emission !== void 0 || e.inputs.emissionStrength !== void 0 || (e.params.emission ?? "#000000") !== "#000000" ? (e.inputs.emission ?? t.emission).mul(e.inputs.emissionStrength ?? t.emissionStrength) : void 0, o = i("coat"), s = i("sheen");
3072
+ let t = e.uniforms, n = (n) => e.inputs[n] ?? t[n], r = (t) => Number(e.params[t] ?? Br[t] ?? 0), i = (n) => e.inputs[n] === void 0 ? r(n) > 0 ? t[n] : void 0 : e.inputs[n], a = e.inputs.emission !== void 0 || e.inputs.emissionStrength !== void 0 || (e.params.emission ?? "#000000") !== "#000000" ? (e.inputs.emission ?? t.emission).mul(e.inputs.emissionStrength ?? t.emissionStrength) : void 0, o = i("coat"), s = i("sheen");
3073
3073
  return { bsdf: {
3074
3074
  baseColor: n("baseColor"),
3075
3075
  metallic: n("metallic"),
@@ -3087,7 +3087,7 @@ var Rr = [
3087
3087
  transmission: i("transmission")
3088
3088
  } };
3089
3089
  }
3090
- }, Ur = {
3090
+ }, Hr = {
3091
3091
  type: "emission",
3092
3092
  nodeClass: "shader",
3093
3093
  label: "Emission",
@@ -3121,20 +3121,20 @@ var Rr = [
3121
3121
  build(e) {
3122
3122
  let t = e.inputs.color ?? e.uniforms.color, n = e.inputs.strength ?? e.uniforms.strength;
3123
3123
  return { bsdf: {
3124
- baseColor: q(0),
3124
+ baseColor: J(0),
3125
3125
  roughness: k(1),
3126
3126
  metallic: k(0),
3127
3127
  emission: t.mul(n)
3128
3128
  } };
3129
3129
  }
3130
- }, Wr = {
3131
- emission: q(0, 0, 0),
3130
+ }, Ur = {
3131
+ emission: J(0, 0, 0),
3132
3132
  ambientOcclusion: k(1),
3133
3133
  alpha: k(1),
3134
3134
  coat: k(0),
3135
3135
  sheen: k(0),
3136
3136
  transmission: k(0)
3137
- }, Gr = [
3137
+ }, Wr = [
3138
3138
  "baseColor",
3139
3139
  "metallic",
3140
3140
  "roughness",
@@ -3149,21 +3149,21 @@ var Rr = [
3149
3149
  "sheenRoughness",
3150
3150
  "transmission"
3151
3151
  ];
3152
- function Kr(e, t, n) {
3152
+ function Gr(e, t, n) {
3153
3153
  let r = {};
3154
- for (let i of Gr) {
3154
+ for (let i of Wr) {
3155
3155
  let a = e[i], o = t[i];
3156
3156
  if (a === void 0 && o === void 0) continue;
3157
3157
  if (a !== void 0 && o !== void 0) {
3158
3158
  r[i] = I(a, o, n);
3159
3159
  continue;
3160
3160
  }
3161
- let s = Wr[i];
3161
+ let s = Ur[i];
3162
3162
  s === void 0 ? r[i] = a ?? o : r[i] = a === void 0 ? I(s, o, n) : I(a, s, n);
3163
3163
  }
3164
3164
  return r;
3165
3165
  }
3166
- var qr = {
3166
+ var Kr = {
3167
3167
  type: "mix-shader",
3168
3168
  nodeClass: "shader",
3169
3169
  label: "Mix Shader",
@@ -3198,9 +3198,9 @@ var qr = {
3198
3198
  default: .5
3199
3199
  }],
3200
3200
  build(e) {
3201
- return { shader: Kr(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.uniforms.fac) };
3201
+ return { shader: Gr(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.uniforms.fac) };
3202
3202
  }
3203
- }, Jr = {
3203
+ }, qr = {
3204
3204
  type: "material-output",
3205
3205
  nodeClass: "output",
3206
3206
  label: "Material Output",
@@ -3227,7 +3227,7 @@ var qr = {
3227
3227
  build() {
3228
3228
  return {};
3229
3229
  }
3230
- }, Yr = {
3230
+ }, Jr = {
3231
3231
  type: "group",
3232
3232
  nodeClass: "group",
3233
3233
  label: "Group",
@@ -3237,7 +3237,7 @@ var qr = {
3237
3237
  build() {
3238
3238
  return {};
3239
3239
  }
3240
- }, Xr = {
3240
+ }, Yr = {
3241
3241
  type: "group-input",
3242
3242
  nodeClass: "input",
3243
3243
  label: "Group Input",
@@ -3247,7 +3247,7 @@ var qr = {
3247
3247
  build() {
3248
3248
  return {};
3249
3249
  }
3250
- }, Zr = {
3250
+ }, Xr = {
3251
3251
  type: "group-output",
3252
3252
  nodeClass: "output",
3253
3253
  label: "Group Output",
@@ -3260,7 +3260,7 @@ var qr = {
3260
3260
  };
3261
3261
  //#endregion
3262
3262
  //#region src/graph/registry.ts
3263
- function Z(e, t) {
3263
+ function Q(e, t) {
3264
3264
  if (e.ports) return e.ports;
3265
3265
  let n = t.get(e.type);
3266
3266
  return n.declare ? n.declare(e.params) : {
@@ -3268,11 +3268,11 @@ function Z(e, t) {
3268
3268
  outputs: n.outputs
3269
3269
  };
3270
3270
  }
3271
- function Qr(e, t) {
3271
+ function Zr(e, t) {
3272
3272
  let n = t.get(e.type);
3273
3273
  return n.paramsFor ? n.paramsFor(e.params) : n.params;
3274
3274
  }
3275
- var $r = class {
3275
+ var Qr = class {
3276
3276
  defs = /* @__PURE__ */ new Map();
3277
3277
  register(e) {
3278
3278
  if (this.defs.has(e.type)) throw Error(`Duplicate node type: ${e.type}`);
@@ -3290,11 +3290,11 @@ var $r = class {
3290
3290
  return [...this.defs.values()];
3291
3291
  }
3292
3292
  };
3293
- function ei() {
3294
- return new $r().register(Ye).register(Xe).register(jt).register(Vt).register(Ht).register(bn).register(xn).register(Tn).register(On).register(jn).register(Fn).register(Kn).register(Jn).register(er).register(ir).register(ar).register(or).register(sr).register(cr).register(lr).register(pr).register(_r).register(vr).register(yr).register(br).register(xr).register(Sr).register(Cr).register(wr).register(Tr).register(Er).register(Ar).register(Mr).register(Nr).register(zr).register(Hr).register(Ur).register(qr).register(Jr).register(Yr).register(Xr).register(Zr);
3293
+ function $r() {
3294
+ return new Qr().register(Je).register(Ye).register(At).register(Bt).register(Vt).register(yn).register(bn).register(wn).register(Dn).register(An).register(Pn).register(Gn).register(qn).register($n).register(rr).register(ir).register(ar).register(or).register(sr).register(cr).register(fr).register(gr).register(_r).register(vr).register(yr).register(br).register(xr).register(Sr).register(Cr).register(wr).register(Tr).register(kr).register(jr).register(Mr).register(Rr).register(Vr).register(Hr).register(Kr).register(qr).register(Jr).register(Yr).register(Xr);
3295
3295
  }
3296
- var ti = ei(), ni = 2048;
3297
- function ri(e, t, n) {
3296
+ var ei = $r(), ti = 2048;
3297
+ function ni(e, t, n) {
3298
3298
  let r = new Map(t.nodes.map((e) => [e.id, e])), i = /* @__PURE__ */ new Set(), a = [e];
3299
3299
  for (; a.length;) {
3300
3300
  let e = a.pop();
@@ -3308,11 +3308,11 @@ function ri(e, t, n) {
3308
3308
  }
3309
3309
  return !1;
3310
3310
  }
3311
- function ii(e, t) {
3311
+ function ri(e, t) {
3312
3312
  let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map(), o = (e) => {
3313
3313
  let t = a.get(e);
3314
3314
  return t || (t = new Map(e.nodes.map((e) => [e.id, e])), a.set(e, t)), t;
3315
- }, s = (e) => e.nodes.find((e) => e.type === Pe)?.id, c = (e, t, r, i) => {
3315
+ }, s = (e) => e.nodes.find((e) => e.type === Ne)?.id, c = (e, t, r, i) => {
3316
3316
  if (t === s(e)) {
3317
3317
  i(r);
3318
3318
  return;
@@ -3336,7 +3336,7 @@ function ii(e, t) {
3336
3336
  i.add(a);
3337
3337
  let o = e.subgraph;
3338
3338
  if (!o) return;
3339
- let s = o.nodes.find((e) => e.type === Fe), l = s && o.edges.find((e) => e.toNode === s.id && e.toInput === t);
3339
+ let s = o.nodes.find((e) => e.type === Pe), l = s && o.edges.find((e) => e.toNode === s.id && e.toInput === t);
3340
3340
  l && c(o, l.fromNode, l.fromOutput, (t) => {
3341
3341
  for (let i of n.edges) i.toNode === e.id && i.toInput === t && c(n, i.fromNode, i.fromOutput, r);
3342
3342
  });
@@ -3347,25 +3347,25 @@ function ii(e, t) {
3347
3347
  };
3348
3348
  return d(e, () => {}), n;
3349
3349
  }
3350
- function ai(e, t) {
3351
- return t === "float" ? q(e) : e;
3350
+ function ii(e, t) {
3351
+ return t === "float" ? J(e) : e;
3352
3352
  }
3353
- function oi(e, t) {
3354
- let n = H(e, G());
3353
+ function ai(e, t) {
3354
+ let n = U(e, K());
3355
3355
  return t === "float" ? n.r : n.xyz;
3356
3356
  }
3357
- function si(e) {
3358
- let t = e.nodes.find((e) => e.type === Ie)?.params?.outputResolution, n = typeof t == "string" ? Number(t) : typeof t == "number" ? t : NaN;
3357
+ function oi(e) {
3358
+ let t = e.nodes.find((e) => e.type === Fe)?.params?.outputResolution, n = typeof t == "string" ? Number(t) : typeof t == "number" ? t : NaN;
3359
3359
  return Number.isFinite(n) && n > 0 ? n : 1024;
3360
3360
  }
3361
- function ci(e, t, n) {
3361
+ function si(e, t, n) {
3362
3362
  if (n.backend === "live" || !n.allocCache || !t.bakeTileable) return 1;
3363
3363
  let r = e.params.tileSize, i = typeof r == "string" && r !== "off" ? Number(r) : NaN;
3364
3364
  if (!Number.isFinite(i) || i <= 0) return 1;
3365
3365
  let a = n.outputResolution ?? 1024, o = Math.max(1, Math.round(Number(e.params.scale) || 1));
3366
3366
  return Math.max(1, Math.min(Math.round(a / i), o));
3367
3367
  }
3368
- function li(e, t, n, r, i, a) {
3368
+ function ci(e, t, n, r, i, a) {
3369
3369
  if (r.backend === "live" || !r.allocCache || !t.bakeTileable || n.vector !== void 0 || n.field === void 0) return;
3370
3370
  let o = e.params.tileSize, s = typeof o == "string" && o !== "off" ? Number(o) : NaN;
3371
3371
  if (!Number.isFinite(s) || s <= 0) return;
@@ -3373,40 +3373,40 @@ function li(e, t, n, r, i, a) {
3373
3373
  return i.push({
3374
3374
  cacheId: c,
3375
3375
  kind: "float",
3376
- colorNode: ai(n.field, "float"),
3376
+ colorNode: ii(n.field, "float"),
3377
3377
  sizing: { size: s }
3378
- }), { field: H(l, G().mul(k(a))).r };
3378
+ }), { field: U(l, K().mul(k(a))).r };
3379
3379
  }
3380
- function ui(e) {
3380
+ function li(e) {
3381
3381
  let t = 0;
3382
- for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t += ui(n.subgraph));
3382
+ for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t += li(n.subgraph));
3383
3383
  return t;
3384
3384
  }
3385
- function di(e, t, n) {
3385
+ function ui(e, t, n) {
3386
3386
  let r = {
3387
3387
  ...n,
3388
- outputResolution: n.outputResolution ?? si(e)
3389
- }, i = r.backend === "live" ? me : q(G().x, G().y, k(0)), a = r.soloNodeId ? { id: r.soloNodeId } : void 0, o = [], { outputs: s, uniforms: c } = pi(e, t, r, i, o, r.allocCache ? ii(e, t) : /* @__PURE__ */ new Set(), void 0, a);
3388
+ outputResolution: n.outputResolution ?? oi(e)
3389
+ }, i = r.backend === "live" ? pe : J(K().x, K().y, k(0)), a = r.soloNodeId ? { id: r.soloNodeId } : void 0, o = [], { outputs: s, uniforms: c } = fi(e, t, r, i, o, r.allocCache ? ri(e, t) : /* @__PURE__ */ new Set(), void 0, a);
3390
3390
  return {
3391
- bundle: a && a.value !== void 0 && a.kind && a.kind !== "shader" ? fi(a.value, a.kind) : Si(e, t, s),
3391
+ bundle: a && a.value !== void 0 && a.kind && a.kind !== "shader" ? di(a.value, a.kind) : xi(e, t, s),
3392
3392
  uniforms: c,
3393
3393
  cachePlan: o
3394
3394
  };
3395
3395
  }
3396
- function fi(e, t) {
3396
+ function di(e, t) {
3397
3397
  return {
3398
- baseColor: t === "float" ? q(e) : e,
3398
+ baseColor: t === "float" ? J(e) : e,
3399
3399
  roughness: k(1),
3400
3400
  metallic: k(0)
3401
3401
  };
3402
3402
  }
3403
- function pi(e, t, n, r, i, a, o, s) {
3404
- wi(e, t, o !== void 0);
3405
- let c = Ci(e), l = new Map(e.nodes.map((e) => [e.id, e])), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map();
3403
+ function fi(e, t, n, r, i, a, o, s) {
3404
+ Ci(e, t, o !== void 0);
3405
+ let c = Si(e), l = new Map(e.nodes.map((e) => [e.id, e])), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map();
3406
3406
  for (let f of c) {
3407
3407
  let c = l.get(f);
3408
3408
  if (!c) continue;
3409
- let p = Z(c, t);
3409
+ let p = Q(c, t);
3410
3410
  if (c.type === "group-input") {
3411
3411
  let e = {};
3412
3412
  for (let t of p.outputs) e[t.key] = o?.[t.key];
@@ -3414,14 +3414,14 @@ function pi(e, t, n, r, i, a, o, s) {
3414
3414
  continue;
3415
3415
  }
3416
3416
  if (c.type === "group") {
3417
- let o = mi(c, t, n, r, i, a, vi(c, e, u, l, t), s);
3417
+ let o = pi(c, t, n, r, i, a, _i(c, e, u, l, t), s);
3418
3418
  u.set(f, o.outputs);
3419
3419
  for (let [e, t] of o.uniforms) d.set(e, t);
3420
3420
  continue;
3421
3421
  }
3422
- let m = vi(c, e, u, l, t), h = t.get(c.type), g = xi(h, c);
3422
+ let m = _i(c, e, u, l, t), h = t.get(c.type), g = bi(h, c);
3423
3423
  d.set(f, g);
3424
- let _ = ci(c, h, n), v = {
3424
+ let _ = si(c, h, n), v = {
3425
3425
  inputs: m,
3426
3426
  uniforms: g,
3427
3427
  params: c.params,
@@ -3429,10 +3429,10 @@ function pi(e, t, n, r, i, a, o, s) {
3429
3429
  backend: n.backend,
3430
3430
  tileRepeat: _
3431
3431
  }, y = h.build(v);
3432
- u.set(f, li(c, h, y, n, i, _) ?? y);
3432
+ u.set(f, ci(c, h, y, n, i, _) ?? y);
3433
3433
  }
3434
3434
  if (s && s.value === void 0) {
3435
- let e = l.get(s.id), n = e ? Z(e, t).outputs[0] : void 0;
3435
+ let e = l.get(s.id), n = e ? Q(e, t).outputs[0] : void 0;
3436
3436
  e && n && (s.value = u.get(s.id)?.[n.key], s.kind = n.kind);
3437
3437
  }
3438
3438
  return {
@@ -3440,28 +3440,28 @@ function pi(e, t, n, r, i, a, o, s) {
3440
3440
  uniforms: d
3441
3441
  };
3442
3442
  }
3443
- function mi(e, t, n, r, i, a, o, s) {
3443
+ function pi(e, t, n, r, i, a, o, s) {
3444
3444
  let c = e.subgraph;
3445
3445
  if (!c) return {
3446
3446
  outputs: {},
3447
3447
  uniforms: /* @__PURE__ */ new Map()
3448
3448
  };
3449
- let { outputs: l, uniforms: u } = pi(c, t, n, r, i, a, o, s), d = c.nodes.find((e) => e.type === Fe), f = {};
3449
+ let { outputs: l, uniforms: u } = fi(c, t, n, r, i, a, o, s), d = c.nodes.find((e) => e.type === Pe), f = {};
3450
3450
  if (!d) return {
3451
3451
  outputs: f,
3452
3452
  uniforms: u
3453
3453
  };
3454
3454
  let p = new Map(c.nodes.map((e) => [e.id, e]));
3455
- for (let r of Z(d, t).inputs) {
3456
- let o = c.edges.find((e) => e.toNode === d.id && e.toInput === r.key), u = o ? yi(o, r.kind, l, p, t) : void 0;
3455
+ for (let r of Q(d, t).inputs) {
3456
+ let o = c.edges.find((e) => e.toNode === d.id && e.toInput === r.key), u = o ? vi(o, r.kind, l, p, t) : void 0;
3457
3457
  if (n.allocCache && u !== void 0 && r.kind !== "shader" && !s) {
3458
- let s = `${e.id}/${r.key}`, l = o && ri(o.fromNode, c, t) || a.has(s) ? { minSize: ni } : void 0, d = n.allocCache(s, r.kind, l);
3458
+ let s = `${e.id}/${r.key}`, l = o && ni(o.fromNode, c, t) || a.has(s) ? { minSize: ti } : void 0, d = n.allocCache(s, r.kind, l);
3459
3459
  i.push({
3460
3460
  cacheId: s,
3461
3461
  kind: r.kind,
3462
- colorNode: ai(u, r.kind),
3462
+ colorNode: ii(u, r.kind),
3463
3463
  sizing: l
3464
- }), f[r.key] = oi(d, r.kind);
3464
+ }), f[r.key] = ai(d, r.kind);
3465
3465
  } else f[r.key] = u;
3466
3466
  }
3467
3467
  return {
@@ -3469,7 +3469,7 @@ function mi(e, t, n, r, i, a, o, s) {
3469
3469
  uniforms: u
3470
3470
  };
3471
3471
  }
3472
- function hi() {
3472
+ function mi() {
3473
3473
  return new c({
3474
3474
  metalness: 0,
3475
3475
  roughness: .9,
@@ -3479,39 +3479,39 @@ function hi() {
3479
3479
  polygonOffsetUnits: 1
3480
3480
  });
3481
3481
  }
3482
- function gi(e, t) {
3482
+ function hi(e, t) {
3483
3483
  let n = g("vertexAo", "float");
3484
3484
  e.aoNode = t.ambientOcclusion ? t.ambientOcclusion.mul(n) : n, t.baseColor && (e.colorNode = t.baseColor), t.emission && (e.emissiveNode = t.emission), t.roughness && (e.roughnessNode = t.roughness), t.metallic && (e.metalnessNode = t.metallic), t.normal && (e.normalNode = t.normal), t.ior && (e.iorNode = t.ior), t.alpha && (e.opacityNode = t.alpha, e.transparent = !0), t.coat && (e.clearcoatNode = t.coat), t.coatRoughness && (e.clearcoatRoughnessNode = t.coatRoughness), t.sheen && (e.sheenNode = t.sheen), t.sheenRoughness && (e.sheenRoughnessNode = t.sheenRoughness), t.transmission && (e.transmissionNode = t.transmission);
3485
3485
  }
3486
- function _i(e, t, n) {
3487
- let { bundle: r, uniforms: i } = di(e, t, n), a = hi();
3488
- return gi(a, r), {
3486
+ function gi(e, t, n) {
3487
+ let { bundle: r, uniforms: i } = ui(e, t, n), a = mi();
3488
+ return hi(a, r), {
3489
3489
  material: a,
3490
3490
  uniforms: i
3491
3491
  };
3492
3492
  }
3493
- function vi(e, t, n, r, i) {
3493
+ function _i(e, t, n, r, i) {
3494
3494
  let a = {};
3495
- for (let o of Z(e, i).inputs) {
3495
+ for (let o of Q(e, i).inputs) {
3496
3496
  let s = t.edges.find((t) => t.toNode === e.id && t.toInput === o.key);
3497
- a[o.key] = s ? yi(s, o.kind, n, r, i) : void 0;
3497
+ a[o.key] = s ? vi(s, o.kind, n, r, i) : void 0;
3498
3498
  }
3499
3499
  return a;
3500
3500
  }
3501
- function yi(e, t, n, r, i) {
3501
+ function vi(e, t, n, r, i) {
3502
3502
  let a = n.get(e.fromNode)?.[e.fromOutput];
3503
3503
  if (a === void 0) return;
3504
- let o = r.get(e.fromNode), s = o ? Z(o, i).outputs.find((t) => t.key === e.fromOutput)?.kind : void 0;
3504
+ let o = r.get(e.fromNode), s = o ? Q(o, i).outputs.find((t) => t.key === e.fromOutput)?.kind : void 0;
3505
3505
  if (s && s !== t) {
3506
- let e = ze(s, t);
3507
- e && (a = bi(a, e));
3506
+ let e = Re(s, t);
3507
+ e && (a = yi(a, e));
3508
3508
  }
3509
3509
  return a;
3510
3510
  }
3511
- function bi(e, t) {
3511
+ function yi(e, t) {
3512
3512
  switch (t) {
3513
3513
  case "float-to-vector":
3514
- case "float-to-color": return q(e);
3514
+ case "float-to-color": return J(e);
3515
3515
  case "vector-to-float": return e.x.add(e.y).add(e.z).div(3);
3516
3516
  case "color-to-float": return oe(e);
3517
3517
  case "identity":
@@ -3519,32 +3519,32 @@ function bi(e, t) {
3519
3519
  case "color-to-vector": return e;
3520
3520
  }
3521
3521
  }
3522
- function xi(t, n) {
3522
+ function bi(t, n) {
3523
3523
  let r = {};
3524
3524
  for (let i of t.params) {
3525
3525
  let t = n.params[i.key] ?? i.default;
3526
- if (i.type === "color") r[i.key] = W(new e.Color(t));
3526
+ if (i.type === "color") r[i.key] = G(new e.Color(t));
3527
3527
  else if (i.type === "vec3") {
3528
3528
  let n = t ?? {
3529
3529
  x: 0,
3530
3530
  y: 0,
3531
3531
  z: 0
3532
3532
  };
3533
- r[i.key] = W(new e.Vector3(n.x, n.y, n.z));
3533
+ r[i.key] = G(new e.Vector3(n.x, n.y, n.z));
3534
3534
  } else if (i.type === "float" || i.type === "int") {
3535
3535
  let e = Number(t);
3536
- r[i.key] = W(Number.isFinite(e) ? e : Number(i.default) || 0);
3537
- } else i.type === "curve" && (r[i.key] = De(Me(t), "float"));
3536
+ r[i.key] = G(Number.isFinite(e) ? e : Number(i.default) || 0);
3537
+ } else i.type === "curve" && (r[i.key] = Ee(je(t), "float"));
3538
3538
  }
3539
3539
  return r;
3540
3540
  }
3541
- function Si(e, t, n) {
3542
- let r = e.nodes.find((e) => e.type === Ie);
3541
+ function xi(e, t, n) {
3542
+ let r = e.nodes.find((e) => e.type === Fe);
3543
3543
  if (!r) return {};
3544
3544
  let i = e.edges.find((e) => e.toNode === r.id && e.toInput === "surface");
3545
- return i ? yi(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
3545
+ return i ? vi(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
3546
3546
  }
3547
- function Ci(e) {
3547
+ function Si(e) {
3548
3548
  let t = /* @__PURE__ */ new Map();
3549
3549
  for (let n of e.nodes) t.set(n.id, 0);
3550
3550
  let n = /* @__PURE__ */ new Map();
@@ -3561,18 +3561,18 @@ function Ci(e) {
3561
3561
  if (i.length !== e.nodes.length) throw Error("Material graph has a cycle");
3562
3562
  return i;
3563
3563
  }
3564
- function wi(e, t, n = !1) {
3565
- let r = n ? Fe : Ie, i = e.nodes.filter((e) => e.type === r);
3564
+ function Ci(e, t, n = !1) {
3565
+ let r = n ? Pe : Fe, i = e.nodes.filter((e) => e.type === r);
3566
3566
  if (i.length !== 1) throw Error(`Expected exactly one ${r} node, found ${i.length}`);
3567
3567
  let a = new Map(e.nodes.map((e) => [e.id, e])), o = /* @__PURE__ */ new Set();
3568
3568
  for (let n of e.edges) {
3569
3569
  let e = a.get(n.fromNode), r = a.get(n.toNode);
3570
3570
  if (!e) throw Error(`Edge from unknown node '${n.fromNode}'`);
3571
3571
  if (!r) throw Error(`Edge to unknown node '${n.toNode}'`);
3572
- let i = Z(e, t).outputs.find((e) => e.key === n.fromOutput), s = Z(r, t).inputs.find((e) => e.key === n.toInput);
3572
+ let i = Q(e, t).outputs.find((e) => e.key === n.fromOutput), s = Q(r, t).inputs.find((e) => e.key === n.toInput);
3573
3573
  if (!i) throw Error(`Node '${e.type}' has no output '${n.fromOutput}'`);
3574
3574
  if (!s) throw Error(`Node '${r.type}' has no input '${n.toInput}'`);
3575
- if (i.kind !== s.kind && !ze(i.kind, s.kind)) throw Error(`Type mismatch (no coercion): ${e.type}.${n.fromOutput} (${i.kind}) -> ${r.type}.${n.toInput} (${s.kind})`);
3575
+ if (i.kind !== s.kind && !Re(i.kind, s.kind)) throw Error(`Type mismatch (no coercion): ${e.type}.${n.fromOutput} (${i.kind}) -> ${r.type}.${n.toInput} (${s.kind})`);
3576
3576
  let c = `${n.toNode}/${n.toInput}`;
3577
3577
  if (o.has(c)) throw Error(`Multiple connections into ${r.type}.${n.toInput}`);
3578
3578
  o.add(c);
@@ -3580,36 +3580,36 @@ function wi(e, t, n = !1) {
3580
3580
  }
3581
3581
  //#endregion
3582
3582
  //#region src/document.ts
3583
- var Ti = 2;
3584
- function Ei(e) {
3583
+ var wi = 2;
3584
+ function Ti(e) {
3585
3585
  return structuredClone(e);
3586
3586
  }
3587
- function Di() {
3588
- return Ei(ke);
3587
+ function Ei() {
3588
+ return Ti(Oe);
3589
3589
  }
3590
- function Oi(e) {
3590
+ function Di(e) {
3591
3591
  return {
3592
- ...Ei(e),
3592
+ ...Ti(e),
3593
3593
  version: e.version ?? 2
3594
3594
  };
3595
3595
  }
3596
- function ki(e, t) {
3596
+ function Oi(e, t) {
3597
3597
  return e.nodes.find((e) => e.id === t);
3598
3598
  }
3599
- function Ai(e, t) {
3599
+ function ki(e, t) {
3600
3600
  return e.find((e) => e.key === t);
3601
3601
  }
3602
- function ji(e) {
3602
+ function Ai(e) {
3603
3603
  return e.type === "float" || e.type === "color" || e.type === "vec3" || e.type === "curve" ? "param" : "structural";
3604
3604
  }
3605
- var Mi = class {
3605
+ var ji = class {
3606
3606
  registry;
3607
3607
  doc;
3608
3608
  listeners = /* @__PURE__ */ new Set();
3609
3609
  lastError_ = null;
3610
3610
  soloNode_ = null;
3611
- constructor(e = Di(), t = ti) {
3612
- this.registry = t, this.doc = Oi(e), this.validate(this.doc);
3611
+ constructor(e = Ei(), t = ei) {
3612
+ this.registry = t, this.doc = Di(e), this.validate(this.doc);
3613
3613
  }
3614
3614
  get document() {
3615
3615
  return this.doc;
@@ -3625,7 +3625,7 @@ var Mi = class {
3625
3625
  }
3626
3626
  compileBundle(e) {
3627
3627
  try {
3628
- let t = di(this.doc, this.registry, e);
3628
+ let t = ui(this.doc, this.registry, e);
3629
3629
  return this.lastError_ = null, t;
3630
3630
  } catch (e) {
3631
3631
  throw this.lastError_ = e instanceof Error ? e.message : String(e), e;
@@ -3635,17 +3635,17 @@ var Mi = class {
3635
3635
  return this.listeners.add(e), () => this.listeners.delete(e);
3636
3636
  }
3637
3637
  setDocument(e) {
3638
- let t = Oi(e);
3638
+ let t = Di(e);
3639
3639
  this.validate(t), this.doc = t, this.emit({ kind: "structural" });
3640
3640
  }
3641
3641
  getDocument() {
3642
- return Ei(this.doc);
3642
+ return Ti(this.doc);
3643
3643
  }
3644
3644
  setSoloNode(e) {
3645
3645
  e !== this.soloNode_ && (this.soloNode_ = e, this.emit({ kind: "structural" }));
3646
3646
  }
3647
3647
  setOutputResolution(e) {
3648
- let t = this.doc.nodes.find((e) => e.type === Ie);
3648
+ let t = this.doc.nodes.find((e) => e.type === Fe);
3649
3649
  if (!t) return;
3650
3650
  let n = String(e);
3651
3651
  t.params.outputResolution !== n && (t.params.outputResolution = n, this.emit({ kind: "structural" }));
@@ -3654,10 +3654,10 @@ var Mi = class {
3654
3654
  this.setOutputResolution(e.resolution ?? e.size ?? 1024);
3655
3655
  }
3656
3656
  setNodeParam(e, t, n) {
3657
- let r = ki(this.doc, e);
3657
+ let r = Oi(this.doc, e);
3658
3658
  if (!r) return !1;
3659
- let i = this.registry.get(r.type), a = Ai(Qr(r, this.registry), t) ?? Ai(i.params, t);
3660
- return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n, ji(a) === "param" ? this.emit({
3659
+ let i = this.registry.get(r.type), a = ki(Zr(r, this.registry), t) ?? ki(i.params, t);
3660
+ return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n, Ai(a) === "param" ? this.emit({
3661
3661
  kind: "param",
3662
3662
  nodeId: e,
3663
3663
  key: t,
@@ -3672,71 +3672,80 @@ var Mi = class {
3672
3672
  return n;
3673
3673
  }
3674
3674
  validate(e) {
3675
- di(e, this.registry, { backend: "live" }), this.lastError_ = null;
3675
+ ui(e, this.registry, { backend: "live" }), this.lastError_ = null;
3676
3676
  }
3677
3677
  emit(e) {
3678
3678
  for (let t of this.listeners) t(e);
3679
3679
  }
3680
- }, Ni = [
3680
+ }, Mi = [
3681
3681
  "roughness",
3682
3682
  "metallic",
3683
3683
  "ambientOcclusion"
3684
- ], Pi = ["baseColor", "emission"];
3685
- function Fi(e, t) {
3686
- return Ni.includes(t) ? q(e) : Pi.includes(t) ? ve(e) : e;
3684
+ ], Ni = ["baseColor", "emission"];
3685
+ function Pi(e, t) {
3686
+ return Mi.includes(t) ? J(e) : Ni.includes(t) ? _e(e) : e;
3687
3687
  }
3688
- var Q = 2, Ii = new l(new s()), Li = new s(), $ = new u(Q, Q);
3689
- $.texture.colorSpace = n, $.texture.minFilter = $.texture.magFilter = t, $.texture.wrapS = $.texture.wrapT = i;
3690
- var Ri = W(K(1 / Q, 1 / Q));
3691
- function zi(e) {
3692
- let t = (Q - 1) / 2, n = q(0, 0, 0);
3693
- for (let r = 0; r < Q; r++) for (let i = 0; i < Q; i++) {
3694
- let a = K(i - t, r - t).mul(Ri), o = H($.texture, G().add(a)).xyz;
3695
- e && (o = o.mul(2).sub(1)), n = n.add(o);
3696
- }
3697
- return n = n.div(Q * Q), e ? de(n).mul(.5).add(.5) : n;
3688
+ var $ = 2, Fi = new l(new s()), Ii = new s();
3689
+ function Li(e, t, n) {
3690
+ let r = ($ - 1) / 2, i = J(0, 0, 0);
3691
+ for (let a = 0; a < $; a++) for (let o = 0; o < $; o++) {
3692
+ let s = q(o - r, a - r).mul(t), c = U(e, K().add(s)).xyz;
3693
+ n && (c = c.mul(2).sub(1)), i = i.add(c);
3694
+ }
3695
+ return i = i.div($ * $), n ? ue(i).mul(.5).add(.5) : i;
3698
3696
  }
3699
- var Bi = new s();
3700
- Bi.colorNode = zi(!1);
3701
- var Vi = new s();
3702
- Vi.colorNode = zi(!0);
3703
- var Hi = new l(Bi), Ui = new l(Vi);
3704
- function Wi() {
3697
+ var Ri = /* @__PURE__ */ new Map();
3698
+ function zi(e, r) {
3699
+ let a = `${e}x${r}`, o = Ri.get(a);
3700
+ if (o) return o;
3701
+ let c = new u(e, r);
3702
+ c.texture.colorSpace = n, c.texture.minFilter = c.texture.magFilter = t, c.texture.wrapS = c.texture.wrapT = i;
3703
+ let d = q(1 / e, 1 / r), f = (e) => {
3704
+ let t = new s();
3705
+ return t.colorNode = Li(c.texture, d, e), new l(t);
3706
+ }, p = {
3707
+ ssRT: c,
3708
+ downColorQuad: f(!1),
3709
+ downNormalQuad: f(!0)
3710
+ };
3711
+ return Ri.set(a, p), p;
3712
+ }
3713
+ function Bi() {
3705
3714
  return new s();
3706
3715
  }
3707
- var Gi = new a(), Ki = new r(-1, 1, 1, -1, 0, 1), qi = [];
3708
- async function Ji(e, t) {
3709
- for (; qi.length < t.length;) qi.push(new l());
3710
- Gi.clear();
3711
- for (let e = 0; e < t.length; e++) qi[e].material = t[e], Gi.add(qi[e]);
3712
- let n = e.getRenderTarget();
3713
- e.setRenderTarget($), await e.compileAsync(Gi, Ki), e.setRenderTarget(n);
3716
+ var Vi = new a(), Hi = new r(-1, 1, 1, -1, 0, 1), Ui = [];
3717
+ async function Wi(e, t, n) {
3718
+ for (; Ui.length < t.length;) Ui.push(new l());
3719
+ Vi.clear();
3720
+ for (let e = 0; e < t.length; e++) Ui[e].material = t[e], Vi.add(Ui[e]);
3721
+ let r = e.getRenderTarget();
3722
+ e.setRenderTarget(zi(n * $, n * $).ssRT), await e.compileAsync(Vi, Hi), e.setRenderTarget(r);
3714
3723
  }
3715
- function Yi(e, t, n) {
3716
- Ii.material = t;
3724
+ function Gi(e, t, n) {
3725
+ Fi.material = t;
3717
3726
  let r = e.getRenderTarget();
3718
- e.setRenderTarget(n), Ii.render(e), e.setRenderTarget(r);
3727
+ e.setRenderTarget(n), Fi.render(e), e.setRenderTarget(r);
3719
3728
  }
3720
- function Xi(e, t, n, r = !1) {
3721
- let i = n.width, a = n.height;
3722
- ($.width !== i * Q || $.height !== a * Q) && $.setSize(i * Q, a * Q), Ri.value.set(1 / (i * Q), 1 / (a * Q)), Ii.material = t;
3723
- let o = e.getRenderTarget();
3724
- e.setRenderTarget($), Ii.render(e), e.setRenderTarget(n), (r ? Ui : Hi).render(e), e.setRenderTarget(o);
3729
+ function Ki(e, t, n, r = !1) {
3730
+ let { ssRT: i, downColorQuad: a, downNormalQuad: o } = zi(n.width * $, n.height * $);
3731
+ Fi.material = t;
3732
+ let s = e.getRenderTarget();
3733
+ e.setRenderTarget(i), Fi.render(e), e.setRenderTarget(n), (r ? o : a).render(e), e.setRenderTarget(s);
3725
3734
  }
3726
- function Zi(e, t, n, r = !1) {
3727
- Li.colorNode = t, Li.needsUpdate = !0, Xi(e, Li, n, r);
3735
+ function qi(e, t, n, r = !1) {
3736
+ Ii.colorNode = t, Ii.needsUpdate = !0, Ki(e, Ii, n, r);
3728
3737
  }
3729
3738
  //#endregion
3730
3739
  //#region src/graph/bake-service.ts
3731
- var Qi = 1024, $i = 8, ea = 4096;
3732
- function ta(e, t) {
3740
+ var Ji = 1024, Yi = 8, Xi = 4096;
3741
+ function Zi(e, t) {
3733
3742
  let n = t?.size ?? Math.max(e, t?.minSize ?? 0);
3734
- return Math.min(n, ea);
3743
+ return Math.min(n, Xi);
3735
3744
  }
3736
- function na(e) {
3745
+ function Qi(e) {
3737
3746
  return e?.minSize != null;
3738
3747
  }
3739
- var ra = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator.userAgent) && !/firefox|fxios/i.test(navigator.userAgent), ia = [
3748
+ var $i = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator.userAgent) && !/firefox|fxios/i.test(navigator.userAgent), ea = [
3740
3749
  "baseColor",
3741
3750
  "roughness",
3742
3751
  "metallic",
@@ -3744,15 +3753,15 @@ var ra = typeof navigator < "u" && /chrome|chromium|crios|edg\//i.test(navigator
3744
3753
  "normal",
3745
3754
  "emission"
3746
3755
  ];
3747
- function aa(t, n) {
3756
+ function ta(t, n) {
3748
3757
  let r = new u(n, n), i = r.texture;
3749
- return i.colorSpace = t !== "height" && Pi.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 = $i, r;
3758
+ return i.colorSpace = t !== "height" && Ni.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 = Yi, r;
3750
3759
  }
3751
- function oa(t, n = !1) {
3760
+ function na(t, n = !1) {
3752
3761
  let r = new u(t, t, { type: e.HalfFloatType }), i = r.texture;
3753
3762
  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;
3754
3763
  }
3755
- var sa = class {
3764
+ var ra = class {
3756
3765
  channels;
3757
3766
  targets = /* @__PURE__ */ new Map();
3758
3767
  mats = /* @__PURE__ */ new Map();
@@ -3777,29 +3786,33 @@ var sa = class {
3777
3786
  }
3778
3787
  target(e) {
3779
3788
  let t = this.targets.get(e);
3780
- return t || (t = aa(e, this.size), this.targets.set(e, t)), t;
3789
+ return t || (t = ta(e, this.size), this.targets.set(e, t)), t;
3781
3790
  }
3782
3791
  channelMaterial(e) {
3783
3792
  let t = this.mats.get(e);
3784
- return t || (t = Wi(), this.mats.set(e, t)), t;
3793
+ return t || (t = Bi(), this.mats.set(e, t)), t;
3785
3794
  }
3786
3795
  cacheTarget(e, t = this.size, n = !1) {
3787
3796
  let r = this.cacheTargets.get(e);
3788
- 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 = oa(t, n), this.cacheTargets.set(e, r)), r;
3797
+ 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 = na(t, n), this.cacheTargets.set(e, r)), r;
3789
3798
  }
3790
3799
  cacheMaterial(e) {
3791
3800
  let t = this.cacheMats.get(e);
3792
- return t || (t = Wi(), this.cacheMats.set(e, t)), t;
3801
+ return t || (t = Bi(), this.cacheMats.set(e, t)), t;
3793
3802
  }
3794
3803
  cacheTexture(e, t, n = !1) {
3795
3804
  return this.cacheTarget(e, t, n).texture;
3796
3805
  }
3806
+ pruneCaches(e) {
3807
+ for (let [t, n] of this.cacheTargets) e.has(t) || (n.dispose(), this.cacheTargets.delete(t));
3808
+ for (let [t, n] of this.cacheMats) e.has(t) || (n.dispose(), this.cacheMats.delete(t));
3809
+ }
3797
3810
  firstTarget() {
3798
3811
  for (let e of this.targets.values()) return e;
3799
3812
  return this.heightTarget;
3800
3813
  }
3801
3814
  ensureHeightTarget() {
3802
- return this.heightTarget ||= aa("height", this.size), this.heightTarget;
3815
+ return this.heightTarget ||= ta("height", this.size), this.heightTarget;
3803
3816
  }
3804
3817
  texture(e) {
3805
3818
  return this.targets.get(e)?.texture ?? null;
@@ -3822,7 +3835,7 @@ var sa = class {
3822
3835
  for (let e of this.cacheMats.values()) e.dispose();
3823
3836
  this.cacheMats.clear(), this.cachePlan = [], this.heightTarget?.dispose(), this.heightTarget = null;
3824
3837
  }
3825
- }, ca = class {
3838
+ }, ia = class {
3826
3839
  renderer = null;
3827
3840
  compileGateDepth = 0;
3828
3841
  get rendererBusy() {
@@ -3874,8 +3887,8 @@ var sa = class {
3874
3887
  });
3875
3888
  return this.queue = n.then(() => void 0, () => void 0), n;
3876
3889
  }
3877
- createTextureSet(e = ia, t = Qi) {
3878
- return new sa(t, e);
3890
+ createTextureSet(e = ea, t = Ji) {
3891
+ return new ra(t, e);
3879
3892
  }
3880
3893
  bakeInto(e, t, n = {}) {
3881
3894
  return this.enqueue(n.label ?? "surface", async () => {
@@ -3884,15 +3897,15 @@ var sa = class {
3884
3897
  let i = performance.now(), { bundle: a, uniforms: o, cachePlan: s } = t.compileBundle({
3885
3898
  backend: "offline",
3886
3899
  soloNodeId: n.soloNodeId,
3887
- allocCache: (t, n, r) => e.cacheTexture(t, ta(e.size, r), na(r))
3888
- }), c = performance.now() - i, l = ui(t.document);
3889
- e.uniforms = o, e.cachePlan = s;
3900
+ allocCache: (t, n, r) => e.cacheTexture(t, Zi(e.size, r), Qi(r))
3901
+ }), c = performance.now() - i, l = li(t.document);
3902
+ e.uniforms = o, e.cachePlan = s, n.soloNodeId || e.pruneCaches(new Set(s.map((e) => e.cacheId)));
3890
3903
  let u = n.channels ?? e.channels, d = /* @__PURE__ */ new Set(), f = [];
3891
3904
  for (let t of u) {
3892
3905
  let n = a[t];
3893
3906
  if (!n) continue;
3894
3907
  let r = e.channelMaterial(t);
3895
- r.colorNode = Fi(n, t), r.needsUpdate = !0, f.push({
3908
+ r.colorNode = Pi(n, t), r.needsUpdate = !0, f.push({
3896
3909
  mat: r,
3897
3910
  target: e.target(t),
3898
3911
  isNormal: t === "normal"
@@ -3900,7 +3913,7 @@ var sa = class {
3900
3913
  }
3901
3914
  if (e.hasHeight = a.height !== void 0, e.hasHeight) {
3902
3915
  let t = e.channelMaterial("height");
3903
- t.colorNode = q(a.height), t.needsUpdate = !0, f.push({
3916
+ t.colorNode = J(a.height), t.needsUpdate = !0, f.push({
3904
3917
  mat: t,
3905
3918
  target: e.ensureHeightTarget(),
3906
3919
  isNormal: !1
@@ -3918,25 +3931,25 @@ var sa = class {
3918
3931
  this.emitReport(p);
3919
3932
  for (let t of s) {
3920
3933
  let n = e.cacheMaterial(t.cacheId);
3921
- n.colorNode = t.colorNode, n.needsUpdate = !0, Yi(r, n, e.cacheTarget(t.cacheId, ta(e.size, t.sizing), na(t.sizing)));
3934
+ n.colorNode = t.colorNode, n.needsUpdate = !0, Gi(r, n, e.cacheTarget(t.cacheId, Zi(e.size, t.sizing), Qi(t.sizing)));
3922
3935
  }
3923
3936
  let m = 0;
3924
- if (ra) {
3937
+ if ($i) {
3925
3938
  this.emitReport({
3926
3939
  ...p,
3927
3940
  phase: "shaders"
3928
3941
  });
3929
- let e = performance.now();
3942
+ let t = performance.now();
3930
3943
  this.compileGateDepth += 1;
3931
3944
  try {
3932
- await Ji(r, f.map((e) => e.mat));
3945
+ await Wi(r, f.map((e) => e.mat), e.size);
3933
3946
  } finally {
3934
3947
  --this.compileGateDepth;
3935
3948
  }
3936
- m = performance.now() - e;
3949
+ m = performance.now() - t;
3937
3950
  }
3938
3951
  let h = performance.now();
3939
- for (let e of f) Xi(r, e.mat, e.target, e.isNormal);
3952
+ for (let e of f) Ki(r, e.mat, e.target, e.isNormal);
3940
3953
  let g = performance.now() - h, _ = [...d].sort().join(",") + (e.hasHeight ? "|h" : ""), v = _ !== e.signature;
3941
3954
  e.present = d, e.signature = _;
3942
3955
  let y = performance.now();
@@ -3975,9 +3988,9 @@ var sa = class {
3975
3988
  };
3976
3989
  this.emitReport(i);
3977
3990
  let a = performance.now();
3978
- for (let t of e.cachePlan) Yi(n, e.cacheMaterial(t.cacheId), e.cacheTarget(t.cacheId, ta(e.size, t.sizing), na(t.sizing)));
3979
- for (let t of e.present) Xi(n, e.channelMaterial(t), e.target(t), t === "normal");
3980
- e.hasHeight && e.heightTarget && Xi(n, e.channelMaterial("height"), e.heightTarget, !1);
3991
+ for (let t of e.cachePlan) Gi(n, e.cacheMaterial(t.cacheId), e.cacheTarget(t.cacheId, Zi(e.size, t.sizing), Qi(t.sizing)));
3992
+ for (let t of e.present) Ki(n, e.channelMaterial(t), e.target(t), t === "normal");
3993
+ e.hasHeight && e.heightTarget && Ki(n, e.channelMaterial("height"), e.heightTarget, !1);
3981
3994
  let o = performance.now() - a, s = performance.now();
3982
3995
  await this.gpuSync(e);
3983
3996
  let c = performance.now() - s;
@@ -3999,21 +4012,23 @@ var sa = class {
3999
4012
  if (!r) return null;
4000
4013
  let { bundle: i, cachePlan: a } = e.compileBundle({
4001
4014
  backend: "offline",
4002
- allocCache: (e, t, r) => this.scratchCache(e, n, ta(n, r), na(r)).rt.texture
4015
+ allocCache: (e, t, r) => this.scratchCache(e, n, Zi(n, r), Qi(r)).rt.texture
4003
4016
  }), o = i[t];
4004
4017
  if (!o) return null;
4018
+ let s = new Set(a.map((e) => e.cacheId));
4019
+ for (let [e, t] of this.scratchCaches) s.has(e) || (t.rt.dispose(), t.mat.dispose(), this.scratchCaches.delete(e));
4005
4020
  for (let e of a) {
4006
- let t = this.scratchCache(e.cacheId, n, ta(n, e.sizing), na(e.sizing));
4007
- t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0, Yi(r, t.mat, t.rt);
4021
+ let t = this.scratchCache(e.cacheId, n, Zi(n, e.sizing), Qi(e.sizing));
4022
+ t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0, Gi(r, t.mat, t.rt);
4008
4023
  }
4009
- let s = this.scratchTarget(n);
4010
- Zi(r, Fi(o, t), s, t === "normal");
4011
- let c = await r.readRenderTargetPixelsAsync(s, 0, 0, n, n), l = new Uint8ClampedArray(n * n * 4), u = n * 4;
4024
+ let c = this.scratchTarget(n);
4025
+ qi(r, Pi(o, t), c, t === "normal");
4026
+ let l = await r.readRenderTargetPixelsAsync(c, 0, 0, n, n), u = new Uint8ClampedArray(n * n * 4), d = n * 4;
4012
4027
  for (let e = 0; e < n; e++) {
4013
- let t = (n - 1 - e) * u;
4014
- l.set(c.subarray(t, t + u), e * u);
4028
+ let t = (n - 1 - e) * d;
4029
+ u.set(l.subarray(t, t + d), e * d);
4015
4030
  }
4016
- return new ImageData(l, n, n);
4031
+ return new ImageData(u, n, n);
4017
4032
  });
4018
4033
  }
4019
4034
  scratchTarget(e) {
@@ -4026,59 +4041,59 @@ var sa = class {
4026
4041
  }
4027
4042
  let i = this.scratchCaches.get(e);
4028
4043
  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 = {
4029
- rt: oa(n, r),
4030
- mat: Wi()
4044
+ rt: na(n, r),
4045
+ mat: Bi()
4031
4046
  }, this.scratchCaches.set(e, i)), i;
4032
4047
  }
4033
- }, la = new ca();
4048
+ }, aa = new ia();
4034
4049
  //#endregion
4035
4050
  //#region src/tsl/triplanar.ts
4036
- function ua(e) {
4037
- let t = R(ue.abs(), e);
4038
- return t.div(t.dot(q(1, 1, 1)).max(1e-4));
4051
+ function oa(e) {
4052
+ let t = z(le.abs(), e);
4053
+ return t.div(t.dot(J(1, 1, 1)).max(1e-4));
4039
4054
  }
4040
- function da(e, t, n) {
4055
+ function sa(e, t, n) {
4041
4056
  return d(() => {
4042
- let r = me.mul(t), i = ua(n), a = H(e, r.yz).mul(i.x), o = H(e, r.zx).mul(i.y), s = H(e, r.xy).mul(i.z);
4057
+ let r = pe.mul(t), i = oa(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);
4043
4058
  return a.add(o).add(s);
4044
4059
  })();
4045
4060
  }
4046
4061
  //#endregion
4047
4062
  //#region src/tsl/triplanar-normal.ts
4048
- function fa(e, t, n) {
4063
+ function ca(e, t, n) {
4049
4064
  return d(() => {
4050
- let r = me.mul(t), i = ua(n), a = ue.sign(), o = H(e, r.yz).xyz.mul(2).sub(1), s = H(e, r.zx).xyz.mul(2).sub(1), c = H(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));
4065
+ let r = pe.mul(t), i = oa(n), a = le.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 = J(o.x, o.y, o.z.mul(a.x)), u = J(s.x, s.y, s.z.mul(a.y)), d = J(c.x, c.y, c.z.mul(a.z));
4051
4066
  return l.zxy.mul(i.x).add(u.yzx.mul(i.y)).add(d.xyz.mul(i.z)).normalize();
4052
4067
  })();
4053
4068
  }
4054
4069
  //#endregion
4055
4070
  //#region src/tsl/parallax.ts
4056
- var pa = .3;
4057
- function ma(e, t, n, r) {
4071
+ var la = .3;
4072
+ function ua(e, t, n, r) {
4058
4073
  return d(() => {
4059
- let i = fe.normalize(), a = (t) => H(e, t).x, o = 1 / r, s = i.xy.div(i.z.abs().max(pa)).mul(n).mul(o), c = t.toVar(), l = _(!1).toVar(), u = t, d = k(1).sub(a(u));
4074
+ let i = de.normalize(), a = (t) => U(e, t).x, o = 1 / r, s = i.xy.div(i.z.abs().max(la)).mul(n).mul(o), c = t.toVar(), l = _(!1).toVar(), u = t, d = k(1).sub(a(u));
4060
4075
  for (let e = 0; e < r; e++) {
4061
- 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 = ye(f.div(f.sub(p).max(1e-5))), h = I(t, u, m);
4062
- c.assign(z(l.not().and(i), h, c)), l.assign(l.or(i)), u = t, d = n;
4076
+ 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 = ve(f.div(f.sub(p).max(1e-5))), h = I(t, u, m);
4077
+ c.assign(B(l.not().and(i), h, c)), l.assign(l.or(i)), u = t, d = n;
4063
4078
  }
4064
4079
  return c;
4065
4080
  })();
4066
4081
  }
4067
4082
  //#endregion
4068
4083
  //#region src/graph/textured-surface.ts
4069
- var ha = 12, ga = class {
4084
+ var da = 12, fa = class {
4070
4085
  graph;
4071
4086
  service;
4072
4087
  source;
4073
- offlineMat = hi();
4088
+ offlineMat = mi();
4074
4089
  liveUniforms = /* @__PURE__ */ new Map();
4075
4090
  material_;
4076
- scaleUniform = W(1.2);
4077
- sharpnessUniform = W(8);
4078
- roughnessFactor = W(1);
4079
- metalnessFactor = W(1);
4080
- colorTint = W(new e.Color(1, 1, 1));
4081
- parallaxScale = W(0);
4091
+ scaleUniform = G(1.2);
4092
+ sharpnessUniform = G(8);
4093
+ roughnessFactor = G(1);
4094
+ metalnessFactor = G(1);
4095
+ colorTint = G(new e.Color(1, 1, 1));
4096
+ parallaxScale = G(0);
4082
4097
  lastBakeMs = 0;
4083
4098
  set;
4084
4099
  backend = "offline";
@@ -4090,9 +4105,12 @@ var ha = 12, ga = class {
4090
4105
  pendingKind = "none";
4091
4106
  flushRequested = !1;
4092
4107
  listeners = /* @__PURE__ */ new Set();
4108
+ textureListeners = /* @__PURE__ */ new Set();
4093
4109
  lastError_ = null;
4110
+ processingDepth = 0;
4111
+ idleWaiters = [];
4094
4112
  constructor(e, t, n) {
4095
- 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));
4113
+ this.graph = e, this.service = t, this.source = n, this.set = t.createTextureSet(ea, this.surfaceBakeSize()), this.material_ = this.buildLive(), this.graph.onChange((e) => this.onGraphChange(e));
4096
4114
  }
4097
4115
  get material() {
4098
4116
  return this.material_;
@@ -4100,6 +4118,22 @@ var ha = 12, ga = class {
4100
4118
  get lastError() {
4101
4119
  return this.lastError_;
4102
4120
  }
4121
+ get busy() {
4122
+ return this.processingDepth > 0;
4123
+ }
4124
+ whenIdle() {
4125
+ return this.processingDepth === 0 ? Promise.resolve() : new Promise((e) => this.idleWaiters.push(e));
4126
+ }
4127
+ enterProcessing() {
4128
+ this.processingDepth += 1;
4129
+ }
4130
+ exitProcessing() {
4131
+ if (--this.processingDepth, this.processingDepth === 0) {
4132
+ let e = this.idleWaiters;
4133
+ this.idleWaiters = [];
4134
+ for (let t of e) t();
4135
+ }
4136
+ }
4103
4137
  getLastBakeMs() {
4104
4138
  return this.backend === "offline" ? this.lastBakeMs : 0;
4105
4139
  }
@@ -4109,6 +4143,21 @@ var ha = 12, ga = class {
4109
4143
  notify() {
4110
4144
  for (let e of this.listeners) e();
4111
4145
  }
4146
+ onTexturesUpdated(e) {
4147
+ return this.textureListeners.add(e), () => this.textureListeners.delete(e);
4148
+ }
4149
+ notifyTexturesUpdated() {
4150
+ for (let e of this.textureListeners) e();
4151
+ }
4152
+ getChannelTexture(e) {
4153
+ return this.set.texture(e);
4154
+ }
4155
+ getHeightTexture() {
4156
+ return this.set.heightTarget?.texture ?? null;
4157
+ }
4158
+ presentChannels() {
4159
+ return new Set(this.set.present);
4160
+ }
4112
4161
  refresh() {
4113
4162
  return this.rebuild();
4114
4163
  }
@@ -4170,7 +4219,7 @@ var ha = 12, ga = class {
4170
4219
  let e = n.value;
4171
4220
  t.value.set(e.x, e.y, e.z);
4172
4221
  } else if (n.paramType === "curve") {
4173
- let e = Me(n.value), r = t.array;
4222
+ let e = je(n.value), r = t.array;
4174
4223
  for (let t = 0; t < e.length; t++) r[t] = e[t];
4175
4224
  } else t.value = Number(n.value);
4176
4225
  }
@@ -4200,35 +4249,46 @@ var ha = 12, ga = class {
4200
4249
  }
4201
4250
  }
4202
4251
  async rerenderOffline() {
4203
- if (!(this.backend !== "offline" || !this.service.hasRenderer)) try {
4204
- await this.service.rerenderInto(this.set, this.source), this.lastError_ = this.graph.lastError;
4205
- } catch (e) {
4206
- this.lastError_ = e instanceof Error ? e.message : String(e), console.warn("[textured-surface] re-render failed:", this.lastError_);
4252
+ if (!(this.backend !== "offline" || !this.service.hasRenderer)) {
4253
+ this.enterProcessing();
4254
+ try {
4255
+ await this.service.rerenderInto(this.set, this.source), this.lastError_ = this.graph.lastError, this.notifyTexturesUpdated();
4256
+ } catch (e) {
4257
+ this.lastError_ = e instanceof Error ? e.message : String(e), console.warn("[textured-surface] re-render failed:", this.lastError_);
4258
+ } finally {
4259
+ this.exitProcessing();
4260
+ }
4207
4261
  }
4208
4262
  }
4209
4263
  surfaceBakeSize() {
4210
- return Math.max(64, Math.round(si(this.graph.document) / 64) * 64);
4264
+ return Math.max(64, Math.round(oi(this.graph.document) / 64) * 64);
4211
4265
  }
4212
4266
  async rebuild() {
4267
+ this.enterProcessing();
4268
+ let e = this.material_;
4213
4269
  try {
4214
- if (this.backend === "offline" && this.service.hasRenderer) {
4215
- let e = this.surfaceBakeSize();
4216
- this.flushRequested && (this.flushRequested = !1, this.set.flushCaches()), this.set.resize(e);
4217
- let t = this.graph.soloNode ?? void 0, n = performance.now(), r = await this.service.bakeInto(this.set, this.graph, {
4218
- soloNodeId: t,
4219
- label: "surface",
4220
- source: this.source
4221
- });
4222
- this.lastBakeMs = performance.now() - n, (r || !this.wiredOnce) && (this.wire(this.set.present), this.wiredOnce = !0), this.material_ = this.offlineMat;
4223
- } else this.material_ = this.buildLive();
4224
- this.lastError_ = this.graph.lastError;
4225
- } catch (e) {
4226
- this.lastError_ = e instanceof Error ? e.message : String(e), console.warn("[textured-surface] rebuild failed:", this.lastError_);
4270
+ try {
4271
+ if (this.backend === "offline" && this.service.hasRenderer) {
4272
+ let e = this.surfaceBakeSize();
4273
+ this.flushRequested && (this.flushRequested = !1, this.set.flushCaches()), this.set.resize(e);
4274
+ let t = this.graph.soloNode ?? void 0, n = performance.now(), r = await this.service.bakeInto(this.set, this.graph, {
4275
+ soloNodeId: t,
4276
+ label: "surface",
4277
+ source: this.source
4278
+ });
4279
+ this.lastBakeMs = performance.now() - n, (r || !this.wiredOnce) && (this.wire(this.set.present), this.wiredOnce = !0), this.material_ = this.offlineMat;
4280
+ } else this.material_ = this.buildLive();
4281
+ this.lastError_ = this.graph.lastError;
4282
+ } catch (e) {
4283
+ this.lastError_ = e instanceof Error ? e.message : String(e), console.warn("[textured-surface] rebuild failed:", this.lastError_);
4284
+ }
4285
+ this.notify(), this.notifyTexturesUpdated(), e !== this.material_ && e !== this.offlineMat && e.dispose();
4286
+ } finally {
4287
+ this.exitProcessing();
4227
4288
  }
4228
- this.notify();
4229
4289
  }
4230
4290
  buildLive() {
4231
- let e = this.graph.soloNode ?? void 0, { material: t, uniforms: n } = _i(this.graph.document, this.graph.getRegistry(), {
4291
+ let e = this.graph.soloNode ?? void 0, { material: t, uniforms: n } = gi(this.graph.document, this.graph.getRegistry(), {
4232
4292
  backend: "live",
4233
4293
  soloNodeId: e
4234
4294
  });
@@ -4236,9 +4296,9 @@ var ha = 12, ga = class {
4236
4296
  }
4237
4297
  wire(e) {
4238
4298
  this.lastPresent = e;
4239
- let t = this.offlineMat, n = this.scaleUniform, r = this.sharpnessUniform, i = this.set.hasHeight && !this.triplanar && this.parallaxScale.value > 0, a = G(), o = i ? ma(this.set.heightTarget.texture, a, this.parallaxScale, ha) : void 0, s = a.dFdx(), c = a.dFdy(), l = (e) => i ? H(e, o).grad(s, c) : H(e), u = (e) => this.triplanar ? da(this.set.texture(e), n, r) : l(this.set.texture(e)), d = e.has("normal") ? this.triplanar ? fa(this.set.texture("normal"), n, r) : le(l(this.set.texture("normal")).xyz, k(1)) : ue;
4299
+ let t = this.offlineMat, n = this.scaleUniform, r = this.sharpnessUniform, i = this.set.hasHeight && !this.triplanar && this.parallaxScale.value > 0, a = K(), o = i ? ua(this.set.heightTarget.texture, a, this.parallaxScale, da) : void 0, s = a.dFdx(), c = a.dFdy(), l = (e) => i ? U(e, o).grad(s, c) : U(e), u = (e) => this.triplanar ? sa(this.set.texture(e), n, r) : l(this.set.texture(e)), d = e.has("normal") ? this.triplanar ? ca(this.set.texture("normal"), n, r) : ce(l(this.set.texture("normal")).xyz, k(1)) : le;
4240
4300
  if (this.debugNormals) {
4241
- t.colorNode = q(0, 0, 0), t.emissiveNode = d.normalize().mul(.5).add(.5), t.roughnessNode = t.metalnessNode = t.aoNode = t.normalNode = null, t.needsUpdate = !0;
4301
+ t.colorNode = J(0, 0, 0), t.emissiveNode = d.normalize().mul(.5).add(.5), t.roughnessNode = t.metalnessNode = t.aoNode = t.normalNode = null, t.needsUpdate = !0;
4242
4302
  return;
4243
4303
  }
4244
4304
  t.colorNode = e.has("baseColor") ? u("baseColor").mul(this.colorTint) : null, t.roughnessNode = e.has("roughness") ? u("roughness").r.mul(this.roughnessFactor) : null, t.metalnessNode = e.has("metallic") ? u("metallic").r.mul(this.metalnessFactor) : null;
@@ -4246,14 +4306,14 @@ var ha = 12, ga = class {
4246
4306
  t.aoNode = e.has("ambientOcclusion") ? u("ambientOcclusion").r.mul(f) : f, t.normalNode = e.has("normal") ? d : null, t.emissiveNode = e.has("emission") ? u("emission") : null, t.needsUpdate = !0;
4247
4307
  }
4248
4308
  dispose() {
4249
- this.set.dispose(), this.offlineMat.dispose();
4309
+ this.set.dispose(), this.offlineMat.dispose(), this.material_ !== this.offlineMat && this.material_.dispose();
4250
4310
  }
4251
- }, _a = class {
4311
+ }, pa = class {
4252
4312
  graph;
4253
4313
  surface;
4254
4314
  service;
4255
4315
  constructor(e = {}) {
4256
- this.service = e.bakeService ?? la, this.graph = new Mi(e.document, e.registry ?? ti), this.surface = new ga(this.graph, this.service, e.source);
4316
+ this.service = e.bakeService ?? aa, this.graph = new ji(e.document, e.registry ?? ei), this.surface = new fa(this.graph, this.service, e.source);
4257
4317
  }
4258
4318
  get material() {
4259
4319
  return this.surface.material;
@@ -4261,6 +4321,12 @@ var ha = 12, ga = class {
4261
4321
  get lastError() {
4262
4322
  return this.surface.lastError ?? this.graph.lastError;
4263
4323
  }
4324
+ get busy() {
4325
+ return this.surface.busy;
4326
+ }
4327
+ whenIdle() {
4328
+ return this.surface.whenIdle();
4329
+ }
4264
4330
  setRenderer(e) {
4265
4331
  return this.service.attachRenderer(e), this;
4266
4332
  }
@@ -4303,37 +4369,37 @@ var ha = 12, ga = class {
4303
4369
  };
4304
4370
  //#endregion
4305
4371
  //#region src/topology.ts
4306
- function va(e) {
4307
- return Array.isArray(e) ? `[${e.map(va).join(",")}]` : e && typeof e == "object" ? `{${Object.entries(e).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => `${e}:${va(t)}`).join(",")}}` : JSON.stringify(e);
4372
+ function ma(e) {
4373
+ return Array.isArray(e) ? `[${e.map(ma).join(",")}]` : e && typeof e == "object" ? `{${Object.entries(e).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => `${e}:${ma(t)}`).join(",")}}` : JSON.stringify(e);
4308
4374
  }
4309
- function ya(e, t) {
4375
+ function ha(e, t) {
4310
4376
  let n = t.get(e.type), r = n.paramsFor ? n.paramsFor(e.params) : n.params, i = {};
4311
4377
  for (let t of r) (t.type === "int" || t.type === "bool" || t.type === "select" || t.bakeStructural) && (i[t.key] = e.params[t.key]);
4312
4378
  return i;
4313
4379
  }
4314
- function ba(e, t) {
4380
+ function ga(e, t) {
4315
4381
  return {
4316
4382
  id: e.id,
4317
4383
  type: e.type,
4318
4384
  enabled: e.enabled,
4319
- ports: Z(e, t),
4320
- params: ya(e, t),
4321
- subgraph: e.subgraph ? xa(e.subgraph, t) : null
4385
+ ports: Q(e, t),
4386
+ params: ha(e, t),
4387
+ subgraph: e.subgraph ? _a(e.subgraph, t) : null
4322
4388
  };
4323
4389
  }
4324
- function xa(e, t) {
4390
+ function _a(e, t) {
4325
4391
  return {
4326
4392
  version: e.version,
4327
- nodes: e.nodes.map((e) => ba(e, t)).sort((e, t) => String(e.id).localeCompare(String(t.id))),
4328
- edges: [...e.edges].sort((e, t) => va(e).localeCompare(va(t)))
4393
+ nodes: e.nodes.map((e) => ga(e, t)).sort((e, t) => String(e.id).localeCompare(String(t.id))),
4394
+ edges: [...e.edges].sort((e, t) => ma(e).localeCompare(ma(t)))
4329
4395
  };
4330
4396
  }
4331
- function Sa(e, t) {
4332
- return va(xa(e, t));
4397
+ function va(e, t) {
4398
+ return ma(_a(e, t));
4333
4399
  }
4334
4400
  //#endregion
4335
4401
  //#region src/graph/tiling-test.ts
4336
- function Ca(e) {
4402
+ function ya(e) {
4337
4403
  return {
4338
4404
  version: 2,
4339
4405
  nodes: [
@@ -4386,7 +4452,7 @@ function Ca(e) {
4386
4452
  }]
4387
4453
  };
4388
4454
  }
4389
- function wa(e, t) {
4455
+ function ba(e, t) {
4390
4456
  let n = (n, r) => e.data[(r * t + n) * 4], r = 0, i = 0;
4391
4457
  for (let e = 0; e < t; e++) {
4392
4458
  r += Math.abs(n(t - 1, e) - n(0, e));
@@ -4406,10 +4472,10 @@ function wa(e, t) {
4406
4472
  ratioV: a / Math.max(o, .001)
4407
4473
  };
4408
4474
  }
4409
- async function Ta(e, t, n = {}) {
4475
+ async function xa(e, t, n = {}) {
4410
4476
  let r = n.size ?? 256, i = n.threshold ?? 3, a = n.channel ?? "baseColor", o = t.get("tileable-noise").params.find((e) => e.key === "noiseType"), s = n.types ?? o?.options ?? [], c = [];
4411
4477
  for (let o of s) {
4412
- let s = new Mi(Ca(o), t), l = await e.readImage(s, a, r);
4478
+ let s = new ji(ya(o), t), l = await e.readImage(s, a, r);
4413
4479
  if (!l) {
4414
4480
  c.push({
4415
4481
  type: o,
@@ -4424,7 +4490,7 @@ async function Ta(e, t, n = {}) {
4424
4490
  continue;
4425
4491
  }
4426
4492
  n.onTile && await n.onTile(o, l);
4427
- let u = wa(l, r);
4493
+ let u = ba(l, r);
4428
4494
  c.push({
4429
4495
  type: o,
4430
4496
  ...u,
@@ -4434,4 +4500,4 @@ async function Ta(e, t, n = {}) {
4434
4500
  return c;
4435
4501
  }
4436
4502
  //#endregion
4437
- export { sa as BakedTextureSet, Re as COERCION_MATRIX, je as CURVE_CHANNELS, Ae as CURVE_IDENTITY, Pe as GROUP_INPUT_TYPE, Fe as GROUP_OUTPUT_TYPE, Ne as GROUP_TYPE, Ti as MATERIAL_DOCUMENT_VERSION, Ie as MATERIAL_OUTPUT_TYPE, ca as MaterialBakeService, _a as MaterialGraphRuntime, Mi as MaterialGraphSession, $r as NodeRegistry, Le as PBR_SOCKETS, ia as SURFACE_CHANNELS, ga as TexturedSurface, la as bakeService, Ei as cloneMaterialDocument, ze as coercionFor, _i as compileGraph, di as compileSockets, ui as countGraphNodes, Di as createDefaultMaterialDocument, ei as createDefaultRegistry, Sa as createMaterialTopologyKey, Me as curveToArray, ti as defaultRegistry, Oi as migrateMaterialDocument, hi as newSurfaceMaterial, Qr as nodeParamDefs, Z as nodePorts, si as readOutputResolution, Ta as runTilingTest };
4503
+ export { ra as BakedTextureSet, Le as COERCION_MATRIX, Ae as CURVE_CHANNELS, ke as CURVE_IDENTITY, Ne as GROUP_INPUT_TYPE, Pe as GROUP_OUTPUT_TYPE, Me as GROUP_TYPE, wi as MATERIAL_DOCUMENT_VERSION, Fe as MATERIAL_OUTPUT_TYPE, ia as MaterialBakeService, pa as MaterialGraphRuntime, ji as MaterialGraphSession, Qr as NodeRegistry, Ie as PBR_SOCKETS, ea as SURFACE_CHANNELS, fa as TexturedSurface, aa as bakeService, Ti as cloneMaterialDocument, Re as coercionFor, gi as compileGraph, ui as compileSockets, li as countGraphNodes, Ei as createDefaultMaterialDocument, $r as createDefaultRegistry, va as createMaterialTopologyKey, je as curveToArray, ei as defaultRegistry, Di as migrateMaterialDocument, mi as newSurfaceMaterial, Zr as nodeParamDefs, Q as nodePorts, oi as readOutputResolution, xa as runTilingTest };