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/graph/bake-service.d.ts +1 -0
- package/dist/graph/channel-baker.d.ts +1 -1
- package/dist/graph/textured-surface.d.ts +13 -1
- package/dist/index.js +741 -675
- package/dist/runtime.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as e from "three";
|
|
2
2
|
import { NearestFilter as t, NoColorSpace as n, OrthographicCamera as r, RepeatWrapping as i, Scene as a, 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
|
|
5
|
-
var
|
|
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
|
-
},
|
|
32
|
+
}, ke = [
|
|
33
33
|
0,
|
|
34
34
|
.25,
|
|
35
35
|
.5,
|
|
36
36
|
.75,
|
|
37
37
|
1
|
|
38
|
-
],
|
|
38
|
+
], Ae = [
|
|
39
39
|
"C",
|
|
40
40
|
"R",
|
|
41
41
|
"G",
|
|
42
42
|
"B"
|
|
43
43
|
];
|
|
44
|
-
function
|
|
45
|
-
let t = (e) => Array.from({ length: 5 }, (t, n) => e?.[n] ??
|
|
44
|
+
function 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
|
|
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
|
-
],
|
|
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
|
|
79
|
-
return
|
|
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
|
|
84
|
-
function
|
|
85
|
-
let r = 3735928584, i =
|
|
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(
|
|
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
|
|
89
|
-
function
|
|
90
|
-
let i = e.bitAnd(
|
|
91
|
-
return
|
|
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
|
|
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
|
|
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 =
|
|
99
|
-
return
|
|
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
|
|
111
|
-
function
|
|
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(
|
|
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
|
|
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:
|
|
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
|
-
},
|
|
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 =
|
|
205
|
-
return { coord: t.add(
|
|
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
|
-
},
|
|
208
|
-
let n = A(e.xyxy).add(
|
|
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,
|
|
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
|
|
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 =
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
251
|
-
return rt(
|
|
250
|
+
function it(e, t, n, r) {
|
|
251
|
+
return nt(rt(e, n), rt(t, r), M(0)).x;
|
|
252
252
|
}
|
|
253
|
-
function
|
|
254
|
-
return rt(
|
|
253
|
+
function at(e, t, n, r) {
|
|
254
|
+
return nt(rt(e, n), rt(t, r), M(0));
|
|
255
255
|
}
|
|
256
|
-
function
|
|
257
|
-
return rt(
|
|
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
|
|
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 =
|
|
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
|
|
268
|
-
function
|
|
269
|
-
let r = A(e), i = e.sub(r), a = M(r.x), o = M(r.y), s =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
287
|
-
let n = k(.1), r =
|
|
288
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
302
|
-
let r =
|
|
303
|
-
return
|
|
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
|
|
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(
|
|
311
|
-
for (let e = 0; e <
|
|
312
|
-
let a =
|
|
313
|
-
c.addAssign(
|
|
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
|
|
321
|
-
let r =
|
|
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 =
|
|
324
|
-
return b(D(O.mul(O),
|
|
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
|
|
329
|
-
function
|
|
330
|
-
let r = A(e), i = j(e).sub(.5), a =
|
|
331
|
-
return b(
|
|
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
|
|
336
|
-
let r =
|
|
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
|
|
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
|
-
],
|
|
354
|
+
], X = [
|
|
355
355
|
"octaves",
|
|
356
356
|
"gain",
|
|
357
357
|
"lacunarity",
|
|
358
358
|
"antialias",
|
|
359
359
|
"tileSize"
|
|
360
|
-
],
|
|
361
|
-
"perlin-fbm": ["aspect", ...
|
|
362
|
-
value: ["aspect", ...
|
|
363
|
-
worley:
|
|
364
|
-
"voronoi-smooth":
|
|
365
|
-
stone:
|
|
366
|
-
paper:
|
|
367
|
-
wool:
|
|
368
|
-
simplex:
|
|
369
|
-
wavelet:
|
|
370
|
-
erosion:
|
|
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
|
-
},
|
|
379
|
-
value:
|
|
380
|
-
worley:
|
|
381
|
-
"voronoi-smooth":
|
|
382
|
-
stone:
|
|
383
|
-
paper:
|
|
384
|
-
wool:
|
|
385
|
-
wavelet:
|
|
386
|
-
erosion:
|
|
387
|
-
},
|
|
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
|
-
}],
|
|
390
|
+
}], kt = [{
|
|
391
391
|
key: "field",
|
|
392
392
|
kind: "float"
|
|
393
393
|
}, {
|
|
394
394
|
key: "vector",
|
|
395
395
|
kind: "vector"
|
|
396
|
-
}],
|
|
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:
|
|
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" ?
|
|
519
|
+
outputs: e.noiseType === "curl" ? kt : Ot
|
|
520
520
|
};
|
|
521
521
|
},
|
|
522
522
|
paramsFor(e) {
|
|
523
|
-
let t =
|
|
523
|
+
let t = Et[e.noiseType ?? "perlin-fbm"] ?? [], n = new Set([
|
|
524
524
|
"noiseType",
|
|
525
525
|
"scale",
|
|
526
526
|
...t
|
|
527
527
|
]);
|
|
528
|
-
return
|
|
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:
|
|
533
|
-
let s =
|
|
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 =
|
|
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:
|
|
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:
|
|
547
|
+
return { field: bt(s, u, e.uniforms.gaborFreq, t, e.uniforms.gaborOrient) };
|
|
548
548
|
}
|
|
549
|
-
let p =
|
|
550
|
-
return p ? { field:
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
567
|
-
return k(.9).mul(k(1.125).mul(
|
|
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
|
|
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 =
|
|
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
|
|
580
|
-
let t =
|
|
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
|
|
583
|
+
var Rt = d(([e, t]) => {
|
|
584
584
|
let n = A(e).toVar(), r = e.sub(n);
|
|
585
|
-
n.x.assign(A(
|
|
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(
|
|
588
|
-
let a =
|
|
589
|
-
return o = k(.5).sub(o.mul(t)), o =
|
|
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
|
|
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,
|
|
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
|
|
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 =
|
|
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:
|
|
633
|
-
case "ign": return { field:
|
|
634
|
-
case "golden-ign": return { field:
|
|
635
|
-
case "scratches": return { field:
|
|
636
|
-
default: return { field:
|
|
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
|
-
},
|
|
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 =
|
|
672
|
-
return { coord: t.add(
|
|
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 =
|
|
675
|
-
return { coord:
|
|
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
|
-
},
|
|
678
|
-
function
|
|
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
|
|
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
|
|
684
|
+
function Wt(e, t) {
|
|
685
685
|
return e.sub(M(A(k(e).div(t))).mul(M(t)));
|
|
686
686
|
}
|
|
687
|
-
function
|
|
688
|
-
return typeof r == "number" && r <= 0 ?
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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" ?
|
|
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
|
|
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 =
|
|
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 _ =
|
|
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" ?
|
|
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
|
|
721
|
-
function
|
|
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 =
|
|
724
|
-
for (let e = -1; e <=
|
|
725
|
-
let s =
|
|
726
|
-
g.assign(
|
|
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
|
|
734
|
-
function
|
|
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) =>
|
|
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
|
|
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
|
|
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
|
|
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] =
|
|
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 =
|
|
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] +
|
|
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
|
|
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) =>
|
|
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
|
|
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) =>
|
|
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
|
|
819
|
+
var pn = [
|
|
820
820
|
"euclidean",
|
|
821
821
|
"manhattan",
|
|
822
822
|
"chebychev",
|
|
823
823
|
"minkowski"
|
|
824
|
-
],
|
|
824
|
+
], mn = [
|
|
825
825
|
"f1",
|
|
826
826
|
"f2",
|
|
827
827
|
"smooth-f1",
|
|
828
828
|
"distance-to-edge"
|
|
829
|
-
],
|
|
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
|
-
],
|
|
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
|
-
}],
|
|
853
|
+
}], _n = [{
|
|
854
854
|
key: "coord",
|
|
855
855
|
kind: "vector"
|
|
856
856
|
}];
|
|
857
|
-
function
|
|
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
|
|
865
|
+
var yn = {
|
|
866
866
|
type: "voronoi",
|
|
867
867
|
nodeClass: "texture",
|
|
868
868
|
label: "Voronoi",
|
|
869
|
-
inputs:
|
|
870
|
-
outputs:
|
|
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:
|
|
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:
|
|
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:
|
|
935
|
-
outputs: (e.feature ?? "f1") === "distance-to-edge" ?
|
|
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"),
|
|
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,
|
|
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 =
|
|
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 =
|
|
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:
|
|
955
|
-
random:
|
|
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:
|
|
962
|
-
random:
|
|
961
|
+
distance: sn(f, r, p),
|
|
962
|
+
random: Qt(f, r, n, i, p).x
|
|
963
963
|
};
|
|
964
964
|
case "f2": return {
|
|
965
|
-
distance:
|
|
966
|
-
color:
|
|
967
|
-
position:
|
|
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:
|
|
971
|
-
color:
|
|
972
|
-
position:
|
|
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:
|
|
976
|
-
color:
|
|
977
|
-
position:
|
|
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
|
-
},
|
|
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:
|
|
1036
|
-
fac:
|
|
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
|
-
},
|
|
1040
|
-
function
|
|
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 =
|
|
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 =
|
|
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 =
|
|
1047
|
-
c.assign(
|
|
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
|
|
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
|
|
1057
|
+
function Cn(e, t, n, r, i) {
|
|
1058
1058
|
let a = t, o = n, s = d(() => {
|
|
1059
|
-
let t =
|
|
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 =
|
|
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(
|
|
1064
|
-
s.assign(
|
|
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 =
|
|
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(
|
|
1072
|
-
d.assign(F(d,
|
|
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
|
|
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
|
|
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 } =
|
|
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 } =
|
|
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
|
-
},
|
|
1226
|
-
function
|
|
1225
|
+
}, Tn = Math.PI;
|
|
1226
|
+
function En(e, t, n) {
|
|
1227
1227
|
let r = t, i = d(() => {
|
|
1228
|
-
let t =
|
|
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 =
|
|
1233
|
-
s.assign(
|
|
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
|
|
1236
|
+
return De(s, c, l, u);
|
|
1237
1237
|
})();
|
|
1238
1238
|
return {
|
|
1239
|
-
coord:
|
|
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
|
|
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 } =
|
|
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
|
-
},
|
|
1342
|
-
function
|
|
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(
|
|
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 =
|
|
1347
|
-
s =
|
|
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(
|
|
1350
|
-
s =
|
|
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 =
|
|
1353
|
-
return
|
|
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
|
|
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 } =
|
|
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
|
-
},
|
|
1438
|
-
function
|
|
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(
|
|
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
|
|
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
|
-
],
|
|
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:
|
|
1503
|
+
options: Nn,
|
|
1504
1504
|
default: "linear"
|
|
1505
1505
|
}],
|
|
1506
1506
|
build(e) {
|
|
1507
|
-
return { field:
|
|
1507
|
+
return { field: Mn((e.inputs.coord ?? e.coord).mul(e.uniforms.scale), Math.max(0, Nn.indexOf(e.params.gradientType))) };
|
|
1508
1508
|
}
|
|
1509
|
-
},
|
|
1510
|
-
function
|
|
1511
|
-
if (t === 0) return k(.5).add(
|
|
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(
|
|
1513
|
+
let t = e.div(Z);
|
|
1514
1514
|
return t.sub(A(t));
|
|
1515
1515
|
}
|
|
1516
|
-
let n = e.div(
|
|
1516
|
+
let n = e.div(Z);
|
|
1517
1517
|
return n.sub(A(n.add(.5))).abs().mul(2);
|
|
1518
1518
|
}
|
|
1519
|
-
function
|
|
1520
|
-
let a = Math.max(1, Math.round(i.scaleNum *
|
|
1521
|
-
if (s = i.dir === 0 ? e.x.mul(a *
|
|
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 =
|
|
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
|
|
1527
|
+
return Rn(s, i.profile);
|
|
1528
1528
|
}
|
|
1529
|
-
function
|
|
1530
|
-
let o = (e) => e.sub(
|
|
1531
|
-
s = a.dir === 0 ?
|
|
1532
|
-
let c = s.length().mul(t).mul(
|
|
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 =
|
|
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
|
|
1537
|
+
return Rn(c, a.profile);
|
|
1538
1538
|
}
|
|
1539
|
-
function
|
|
1540
|
-
if (o.tileable) return o.waveType === 0 ?
|
|
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(
|
|
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(
|
|
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 =
|
|
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
|
|
1551
|
+
return Rn(c, o.profile);
|
|
1552
1552
|
}
|
|
1553
1553
|
//#endregion
|
|
1554
1554
|
//#region src/graph/nodes/texture/wave.ts
|
|
1555
|
-
var
|
|
1555
|
+
var Hn = ["bands", "rings"], Un = [
|
|
1556
1556
|
"x",
|
|
1557
1557
|
"y",
|
|
1558
1558
|
"z",
|
|
1559
1559
|
"diagonal"
|
|
1560
|
-
],
|
|
1560
|
+
], Wn = [
|
|
1561
1561
|
"sine",
|
|
1562
1562
|
"saw",
|
|
1563
1563
|
"triangle"
|
|
1564
|
-
],
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
1659
|
-
dir: Math.max(0,
|
|
1660
|
-
profile: Math.max(0,
|
|
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:
|
|
1667
|
+
return { field: Vn(t, e.uniforms.scale, e.uniforms.phase, e.uniforms.distortion, e.uniforms.detailScale, e.uniforms.detailRoughness, n) };
|
|
1668
1668
|
}
|
|
1669
|
-
},
|
|
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(
|
|
1721
|
-
return { field: n.mul(e.uniforms.count).add(r).mul(
|
|
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
|
-
},
|
|
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
|
-
]),
|
|
1745
|
+
]), Xn = new Set([
|
|
1746
1746
|
"multiply-add",
|
|
1747
1747
|
"compare",
|
|
1748
1748
|
"smooth-min",
|
|
1749
1749
|
"smooth-max",
|
|
1750
1750
|
"wrap"
|
|
1751
|
-
]),
|
|
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
|
|
1785
|
-
let [t, n, r] =
|
|
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
|
|
1794
|
+
return Yn.has(e) || i.push({
|
|
1795
1795
|
key: "b",
|
|
1796
1796
|
label: n ?? "B",
|
|
1797
1797
|
kind: "float"
|
|
1798
|
-
}),
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1866
|
-
case "logarithm": return { field:
|
|
1867
|
-
case "sqrt": return { field:
|
|
1868
|
-
case "inverse-sqrt": return { field:
|
|
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:
|
|
1874
|
-
case "greater-than": return { field:
|
|
1875
|
-
case "sign": return { field:
|
|
1876
|
-
case "compare": return { field:
|
|
1877
|
-
case "smooth-min": return { field:
|
|
1878
|
-
case "smooth-max": return { field:
|
|
1879
|
-
case "round": return { field:
|
|
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:
|
|
1882
|
+
case "truncate": return { field: Te(t) };
|
|
1883
1883
|
case "fraction": return { field: j(t) };
|
|
1884
|
-
case "modulo": return { field:
|
|
1885
|
-
case "floored-modulo": return { field:
|
|
1886
|
-
case "wrap": return { field:
|
|
1887
|
-
case "snap": return { field:
|
|
1888
|
-
case "pingpong": return { field:
|
|
1889
|
-
case "sine": return { field:
|
|
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:
|
|
1892
|
-
case "arcsine": return { field:
|
|
1893
|
-
case "arccosine": return { field:
|
|
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:
|
|
1896
|
+
case "sinh": return { field: be(t) };
|
|
1897
1897
|
case "cosh": return { field: C(t) };
|
|
1898
|
-
case "tanh": return { field:
|
|
1899
|
-
case "radians": return { field:
|
|
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
|
|
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
|
|
1907
|
+
return B(n.equal(0), F(e, t), i);
|
|
1908
1908
|
}
|
|
1909
|
-
function
|
|
1909
|
+
function tr(e, t, n) {
|
|
1910
1910
|
let r = t.sub(n);
|
|
1911
|
-
return
|
|
1911
|
+
return B(r.equal(0), n, e.sub(r.mul(A(e.sub(n).div(r)))));
|
|
1912
1912
|
}
|
|
1913
|
-
function
|
|
1913
|
+
function nr(e, t) {
|
|
1914
1914
|
let n = t.mul(2);
|
|
1915
|
-
return
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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:
|
|
2067
|
+
return { fac: H(i.negate(), i, a) };
|
|
2068
2068
|
}
|
|
2069
|
-
},
|
|
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
|
-
},
|
|
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 ??
|
|
2160
|
-
return { color: I(t,
|
|
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
|
-
},
|
|
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 ??
|
|
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
|
-
},
|
|
2209
|
-
function
|
|
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 =
|
|
2211
|
-
return p =
|
|
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
|
|
2214
|
-
let t = e.x, n = e.y, r = e.z, i =
|
|
2215
|
-
return 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
|
|
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 ??
|
|
2272
|
-
return { color: I(t,
|
|
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
|
-
},
|
|
2275
|
-
function
|
|
2276
|
-
let n = e.clamp(0, 1).mul(4), r = A(n).clamp(0, 3), i = n.sub(r), a =
|
|
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
|
|
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:
|
|
2312
|
-
R:
|
|
2313
|
-
G:
|
|
2314
|
-
B:
|
|
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 ??
|
|
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 =
|
|
2330
|
-
return { color: I(t,
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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:
|
|
2408
|
+
return { color: J(e.inputs.r ?? k(0), e.inputs.g ?? k(0), e.inputs.b ?? k(0)) };
|
|
2409
2409
|
}
|
|
2410
|
-
},
|
|
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
|
-
},
|
|
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 ??
|
|
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
|
-
},
|
|
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:
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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 =
|
|
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:
|
|
2626
|
+
generated: fe,
|
|
2627
2627
|
uv: t,
|
|
2628
|
-
object:
|
|
2629
|
-
normal:
|
|
2628
|
+
object: fe,
|
|
2629
|
+
normal: se
|
|
2630
2630
|
};
|
|
2631
2631
|
}
|
|
2632
|
-
},
|
|
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
|
-
],
|
|
2655
|
+
], Dr = new Set([
|
|
2656
2656
|
"dot",
|
|
2657
2657
|
"distance",
|
|
2658
2658
|
"length"
|
|
2659
|
-
]),
|
|
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
|
-
}],
|
|
2667
|
+
}], kr = {
|
|
2668
2668
|
type: "vector-math",
|
|
2669
2669
|
nodeClass: "vector",
|
|
2670
2670
|
label: "Vector Math",
|
|
2671
|
-
inputs:
|
|
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:
|
|
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:
|
|
2696
|
-
outputs:
|
|
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 ??
|
|
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:
|
|
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:
|
|
2728
|
+
case "sine": return { vector: V(t) };
|
|
2729
2729
|
case "cosine": return { vector: S(t) };
|
|
2730
|
-
case "tangent": return { vector:
|
|
2730
|
+
case "tangent": return { vector: Ce(t) };
|
|
2731
2731
|
default: return { vector: t.add(n) };
|
|
2732
2732
|
}
|
|
2733
2733
|
}
|
|
2734
|
-
},
|
|
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 =
|
|
2760
|
-
return { normal:
|
|
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
|
-
},
|
|
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:
|
|
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
|
|
2795
|
-
let t = S(e.x), n = S(e.y), r = S(e.z), i =
|
|
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
|
|
2809
|
-
return
|
|
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
|
|
2812
|
-
return
|
|
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
|
|
2815
|
-
let a =
|
|
2816
|
-
return i === 1 ?
|
|
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
|
|
2820
|
+
var Lr = [
|
|
2821
2821
|
"point",
|
|
2822
2822
|
"texture",
|
|
2823
2823
|
"vector",
|
|
2824
2824
|
"normal"
|
|
2825
|
-
],
|
|
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:
|
|
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,
|
|
2878
|
-
return { vector:
|
|
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
|
-
},
|
|
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
|
-
],
|
|
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:
|
|
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] ??
|
|
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
|
-
},
|
|
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:
|
|
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
|
-
},
|
|
3131
|
-
emission:
|
|
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
|
-
},
|
|
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
|
|
3152
|
+
function Gr(e, t, n) {
|
|
3153
3153
|
let r = {};
|
|
3154
|
-
for (let i of
|
|
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 =
|
|
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
|
|
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:
|
|
3201
|
+
return { shader: Gr(e.inputs.shaderA ?? {}, e.inputs.shaderB ?? {}, e.inputs.fac ?? e.uniforms.fac) };
|
|
3202
3202
|
}
|
|
3203
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
|
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
|
|
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
|
|
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
|
|
3294
|
-
return new
|
|
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
|
|
3297
|
-
function
|
|
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
|
|
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 ===
|
|
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 ===
|
|
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
|
|
3351
|
-
return t === "float" ?
|
|
3350
|
+
function ii(e, t) {
|
|
3351
|
+
return t === "float" ? J(e) : e;
|
|
3352
3352
|
}
|
|
3353
|
-
function
|
|
3354
|
-
let n =
|
|
3353
|
+
function ai(e, t) {
|
|
3354
|
+
let n = U(e, K());
|
|
3355
3355
|
return t === "float" ? n.r : n.xyz;
|
|
3356
3356
|
}
|
|
3357
|
-
function
|
|
3358
|
-
let t = e.nodes.find((e) => e.type ===
|
|
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
|
|
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
|
|
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:
|
|
3376
|
+
colorNode: ii(n.field, "float"),
|
|
3377
3377
|
sizing: { size: s }
|
|
3378
|
-
}), { field:
|
|
3378
|
+
}), { field: U(l, K().mul(k(a))).r };
|
|
3379
3379
|
}
|
|
3380
|
-
function
|
|
3380
|
+
function li(e) {
|
|
3381
3381
|
let t = 0;
|
|
3382
|
-
for (let n of e.nodes) t += 1, n.type === "group" && n.subgraph && (t +=
|
|
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
|
|
3385
|
+
function ui(e, t, n) {
|
|
3386
3386
|
let r = {
|
|
3387
3387
|
...n,
|
|
3388
|
-
outputResolution: n.outputResolution ??
|
|
3389
|
-
}, i = r.backend === "live" ?
|
|
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" ?
|
|
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
|
|
3396
|
+
function di(e, t) {
|
|
3397
3397
|
return {
|
|
3398
|
-
baseColor: t === "float" ?
|
|
3398
|
+
baseColor: t === "float" ? J(e) : e,
|
|
3399
3399
|
roughness: k(1),
|
|
3400
3400
|
metallic: k(0)
|
|
3401
3401
|
};
|
|
3402
3402
|
}
|
|
3403
|
-
function
|
|
3404
|
-
|
|
3405
|
-
let c =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 _ =
|
|
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,
|
|
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 ?
|
|
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
|
|
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 } =
|
|
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
|
|
3456
|
-
let o = c.edges.find((e) => e.toNode === d.id && e.toInput === r.key), u = o ?
|
|
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 &&
|
|
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:
|
|
3462
|
+
colorNode: ii(u, r.kind),
|
|
3463
3463
|
sizing: l
|
|
3464
|
-
}), f[r.key] =
|
|
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
|
|
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
|
|
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
|
|
3487
|
-
let { bundle: r, uniforms: i } =
|
|
3488
|
-
return
|
|
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
|
|
3493
|
+
function _i(e, t, n, r, i) {
|
|
3494
3494
|
let a = {};
|
|
3495
|
-
for (let o of
|
|
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 ?
|
|
3497
|
+
a[o.key] = s ? vi(s, o.kind, n, r, i) : void 0;
|
|
3498
3498
|
}
|
|
3499
3499
|
return a;
|
|
3500
3500
|
}
|
|
3501
|
-
function
|
|
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 ?
|
|
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 =
|
|
3507
|
-
e && (a =
|
|
3506
|
+
let e = Re(s, t);
|
|
3507
|
+
e && (a = yi(a, e));
|
|
3508
3508
|
}
|
|
3509
3509
|
return a;
|
|
3510
3510
|
}
|
|
3511
|
-
function
|
|
3511
|
+
function yi(e, t) {
|
|
3512
3512
|
switch (t) {
|
|
3513
3513
|
case "float-to-vector":
|
|
3514
|
-
case "float-to-color": return
|
|
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
|
|
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] =
|
|
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] =
|
|
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] =
|
|
3537
|
-
} else i.type === "curve" && (r[i.key] =
|
|
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
|
|
3542
|
-
let r = e.nodes.find((e) => e.type ===
|
|
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 ?
|
|
3545
|
+
return i ? vi(i, "shader", n, new Map(e.nodes.map((e) => [e.id, e])), t) ?? {} : {};
|
|
3546
3546
|
}
|
|
3547
|
-
function
|
|
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
|
|
3565
|
-
let r = n ?
|
|
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 =
|
|
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 && !
|
|
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
|
|
3584
|
-
function
|
|
3583
|
+
var wi = 2;
|
|
3584
|
+
function Ti(e) {
|
|
3585
3585
|
return structuredClone(e);
|
|
3586
3586
|
}
|
|
3587
|
-
function
|
|
3588
|
-
return
|
|
3587
|
+
function Ei() {
|
|
3588
|
+
return Ti(Oe);
|
|
3589
3589
|
}
|
|
3590
|
-
function
|
|
3590
|
+
function Di(e) {
|
|
3591
3591
|
return {
|
|
3592
|
-
...
|
|
3592
|
+
...Ti(e),
|
|
3593
3593
|
version: e.version ?? 2
|
|
3594
3594
|
};
|
|
3595
3595
|
}
|
|
3596
|
-
function
|
|
3596
|
+
function Oi(e, t) {
|
|
3597
3597
|
return e.nodes.find((e) => e.id === t);
|
|
3598
3598
|
}
|
|
3599
|
-
function
|
|
3599
|
+
function ki(e, t) {
|
|
3600
3600
|
return e.find((e) => e.key === t);
|
|
3601
3601
|
}
|
|
3602
|
-
function
|
|
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
|
|
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 =
|
|
3612
|
-
this.registry = t, 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 =
|
|
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 =
|
|
3638
|
+
let t = Di(e);
|
|
3639
3639
|
this.validate(t), this.doc = t, this.emit({ kind: "structural" });
|
|
3640
3640
|
}
|
|
3641
3641
|
getDocument() {
|
|
3642
|
-
return
|
|
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 ===
|
|
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 =
|
|
3657
|
+
let r = Oi(this.doc, e);
|
|
3658
3658
|
if (!r) return !1;
|
|
3659
|
-
let i = this.registry.get(r.type), a =
|
|
3660
|
-
return a ? Object.is(r.params[t], n) ? !0 : (r.params[t] = n,
|
|
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
|
-
|
|
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
|
-
},
|
|
3680
|
+
}, Mi = [
|
|
3681
3681
|
"roughness",
|
|
3682
3682
|
"metallic",
|
|
3683
3683
|
"ambientOcclusion"
|
|
3684
|
-
],
|
|
3685
|
-
function
|
|
3686
|
-
return
|
|
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
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
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
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
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
|
|
3708
|
-
async function
|
|
3709
|
-
for (;
|
|
3710
|
-
|
|
3711
|
-
for (let e = 0; e < t.length; e++)
|
|
3712
|
-
let
|
|
3713
|
-
e.setRenderTarget($), await e.compileAsync(
|
|
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
|
|
3716
|
-
|
|
3724
|
+
function Gi(e, t, n) {
|
|
3725
|
+
Fi.material = t;
|
|
3717
3726
|
let r = e.getRenderTarget();
|
|
3718
|
-
e.setRenderTarget(n),
|
|
3727
|
+
e.setRenderTarget(n), Fi.render(e), e.setRenderTarget(r);
|
|
3719
3728
|
}
|
|
3720
|
-
function
|
|
3721
|
-
let i = n.width
|
|
3722
|
-
|
|
3723
|
-
let
|
|
3724
|
-
e.setRenderTarget(
|
|
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
|
|
3727
|
-
|
|
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
|
|
3732
|
-
function
|
|
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,
|
|
3743
|
+
return Math.min(n, Xi);
|
|
3735
3744
|
}
|
|
3736
|
-
function
|
|
3745
|
+
function Qi(e) {
|
|
3737
3746
|
return e?.minSize != null;
|
|
3738
3747
|
}
|
|
3739
|
-
var
|
|
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
|
|
3756
|
+
function ta(t, n) {
|
|
3748
3757
|
let r = new u(n, n), i = r.texture;
|
|
3749
|
-
return i.colorSpace = t !== "height" &&
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 ||=
|
|
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
|
-
},
|
|
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 =
|
|
3878
|
-
return new
|
|
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,
|
|
3888
|
-
}), c = performance.now() - i, l =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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 (
|
|
3937
|
+
if ($i) {
|
|
3925
3938
|
this.emitReport({
|
|
3926
3939
|
...p,
|
|
3927
3940
|
phase: "shaders"
|
|
3928
3941
|
});
|
|
3929
|
-
let
|
|
3942
|
+
let t = performance.now();
|
|
3930
3943
|
this.compileGateDepth += 1;
|
|
3931
3944
|
try {
|
|
3932
|
-
await
|
|
3945
|
+
await Wi(r, f.map((e) => e.mat), e.size);
|
|
3933
3946
|
} finally {
|
|
3934
3947
|
--this.compileGateDepth;
|
|
3935
3948
|
}
|
|
3936
|
-
m = performance.now() -
|
|
3949
|
+
m = performance.now() - t;
|
|
3937
3950
|
}
|
|
3938
3951
|
let h = performance.now();
|
|
3939
|
-
for (let e of f)
|
|
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)
|
|
3979
|
-
for (let t of e.present)
|
|
3980
|
-
e.hasHeight && e.heightTarget &&
|
|
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,
|
|
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,
|
|
4007
|
-
t.mat.colorNode = e.colorNode, t.mat.needsUpdate = !0,
|
|
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
|
|
4010
|
-
|
|
4011
|
-
let
|
|
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) *
|
|
4014
|
-
|
|
4028
|
+
let t = (n - 1 - e) * d;
|
|
4029
|
+
u.set(l.subarray(t, t + d), e * d);
|
|
4015
4030
|
}
|
|
4016
|
-
return new ImageData(
|
|
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:
|
|
4030
|
-
mat:
|
|
4044
|
+
rt: na(n, r),
|
|
4045
|
+
mat: Bi()
|
|
4031
4046
|
}, this.scratchCaches.set(e, i)), i;
|
|
4032
4047
|
}
|
|
4033
|
-
},
|
|
4048
|
+
}, aa = new ia();
|
|
4034
4049
|
//#endregion
|
|
4035
4050
|
//#region src/tsl/triplanar.ts
|
|
4036
|
-
function
|
|
4037
|
-
let t =
|
|
4038
|
-
return t.div(t.dot(
|
|
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
|
|
4055
|
+
function sa(e, t, n) {
|
|
4041
4056
|
return d(() => {
|
|
4042
|
-
let r =
|
|
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
|
|
4063
|
+
function ca(e, t, n) {
|
|
4049
4064
|
return d(() => {
|
|
4050
|
-
let r =
|
|
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
|
|
4057
|
-
function
|
|
4071
|
+
var la = .3;
|
|
4072
|
+
function ua(e, t, n, r) {
|
|
4058
4073
|
return d(() => {
|
|
4059
|
-
let i =
|
|
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 =
|
|
4062
|
-
c.assign(
|
|
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
|
|
4084
|
+
var da = 12, fa = class {
|
|
4070
4085
|
graph;
|
|
4071
4086
|
service;
|
|
4072
4087
|
source;
|
|
4073
|
-
offlineMat =
|
|
4088
|
+
offlineMat = mi();
|
|
4074
4089
|
liveUniforms = /* @__PURE__ */ new Map();
|
|
4075
4090
|
material_;
|
|
4076
|
-
scaleUniform =
|
|
4077
|
-
sharpnessUniform =
|
|
4078
|
-
roughnessFactor =
|
|
4079
|
-
metalnessFactor =
|
|
4080
|
-
colorTint =
|
|
4081
|
-
parallaxScale =
|
|
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(
|
|
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 =
|
|
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))
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
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(
|
|
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
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
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 } =
|
|
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 =
|
|
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 =
|
|
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
|
-
},
|
|
4311
|
+
}, pa = class {
|
|
4252
4312
|
graph;
|
|
4253
4313
|
surface;
|
|
4254
4314
|
service;
|
|
4255
4315
|
constructor(e = {}) {
|
|
4256
|
-
this.service = e.bakeService ??
|
|
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
|
|
4307
|
-
return Array.isArray(e) ? `[${e.map(
|
|
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
|
|
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
|
|
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:
|
|
4320
|
-
params:
|
|
4321
|
-
subgraph: e.subgraph ?
|
|
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
|
|
4390
|
+
function _a(e, t) {
|
|
4325
4391
|
return {
|
|
4326
4392
|
version: e.version,
|
|
4327
|
-
nodes: e.nodes.map((e) =>
|
|
4328
|
-
edges: [...e.edges].sort((e, 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
|
|
4332
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 {
|
|
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 };
|