fastnoiselite-builder 0.2.0 → 0.3.0
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/tsl/index.js
CHANGED
|
@@ -1,29 +1,40 @@
|
|
|
1
1
|
import { wgslFn as L } from "three/tsl";
|
|
2
|
-
import { P as
|
|
3
|
-
import { k as
|
|
2
|
+
import { P as G, b as X, c as Y, G as Ie, i as Se, R as $e, f as ke, C as M, e as C, A as ce, D as h, F as _, j as w, N as f, T as m } from "../ANoiseBuilder-BWuN_IAo.js";
|
|
3
|
+
import { k as Da } from "../ANoiseBuilder-BWuN_IAo.js";
|
|
4
|
+
function A(d, e) {
|
|
5
|
+
if (!e) return d;
|
|
6
|
+
const l = new Set(
|
|
7
|
+
[...d.matchAll(/\bfn\s+(\w+)\s*\(/g)].map((t) => t[1])
|
|
8
|
+
), i = new Set(
|
|
9
|
+
[...d.matchAll(/\bconst\s+(\w+)\s*:/g)].map((t) => t[1])
|
|
10
|
+
), a = /* @__PURE__ */ new Set([...l, ...i]);
|
|
11
|
+
if (a.size === 0) return d;
|
|
12
|
+
const r = [...a].sort((t, o) => o.length - t.length), s = new RegExp(`\\b(${r.join("|")})\\b`, "g");
|
|
13
|
+
return d.replace(s, `${e}_$1`);
|
|
14
|
+
}
|
|
4
15
|
function E() {
|
|
5
|
-
return `const PRIME_X: i32 = ${
|
|
6
|
-
const PRIME_Y: i32 = ${
|
|
7
|
-
const PRIME_Z: i32 = ${
|
|
16
|
+
return `const PRIME_X: i32 = ${G};
|
|
17
|
+
const PRIME_Y: i32 = ${X};
|
|
18
|
+
const PRIME_Z: i32 = ${Y};`;
|
|
8
19
|
}
|
|
9
|
-
function
|
|
10
|
-
const
|
|
20
|
+
function W(d, e) {
|
|
21
|
+
const l = Array.from(e).map((i) => {
|
|
11
22
|
const a = i.toString();
|
|
12
23
|
return a.includes(".") || a.includes("e") ? a : a + ".0";
|
|
13
24
|
}).join(", ");
|
|
14
|
-
return `const ${d}: array<f32, ${e.length}> = array<f32, ${e.length}>(${
|
|
15
|
-
}
|
|
16
|
-
function W() {
|
|
17
|
-
return Y("GRADIENTS_2D", Ne);
|
|
25
|
+
return `const ${d}: array<f32, ${e.length}> = array<f32, ${e.length}>(${l});`;
|
|
18
26
|
}
|
|
19
27
|
function j() {
|
|
20
|
-
return
|
|
28
|
+
return W("GRADIENTS_2D", Ie);
|
|
21
29
|
}
|
|
22
|
-
function
|
|
23
|
-
return
|
|
30
|
+
function V() {
|
|
31
|
+
return W("GRADIENTS_3D", Se);
|
|
24
32
|
}
|
|
25
33
|
function ue() {
|
|
26
|
-
return
|
|
34
|
+
return W("RAND_VECS_2D", $e);
|
|
35
|
+
}
|
|
36
|
+
function Re() {
|
|
37
|
+
return W("RAND_VECS_3D", ke);
|
|
27
38
|
}
|
|
28
39
|
function N() {
|
|
29
40
|
return `fn imul(a: i32, b: i32) -> i32 {
|
|
@@ -40,7 +51,7 @@ function S() {
|
|
|
40
51
|
return i32(u32(seed ^ xPrimed ^ yPrimed ^ zPrimed) * 0x27d4eb2du);
|
|
41
52
|
}`;
|
|
42
53
|
}
|
|
43
|
-
function
|
|
54
|
+
function q() {
|
|
44
55
|
return `fn valCoordR2(seed: i32, xPrimed: i32, yPrimed: i32) -> f32 {
|
|
45
56
|
var uh = u32(hashR2(seed, xPrimed, yPrimed));
|
|
46
57
|
uh = uh * uh;
|
|
@@ -48,7 +59,7 @@ function O() {
|
|
|
48
59
|
return f32(i32(uh)) * (1.0 / 2147483648.0);
|
|
49
60
|
}`;
|
|
50
61
|
}
|
|
51
|
-
function
|
|
62
|
+
function J() {
|
|
52
63
|
return `fn valCoordR3(seed: i32, xPrimed: i32, yPrimed: i32, zPrimed: i32) -> f32 {
|
|
53
64
|
var uh = u32(hashR3(seed, xPrimed, yPrimed, zPrimed));
|
|
54
65
|
uh = uh * uh;
|
|
@@ -56,7 +67,7 @@ function q() {
|
|
|
56
67
|
return f32(i32(uh)) * (1.0 / 2147483648.0);
|
|
57
68
|
}`;
|
|
58
69
|
}
|
|
59
|
-
function
|
|
70
|
+
function F() {
|
|
60
71
|
return `fn gradCoordR2(seed: i32, xPrimed: i32, yPrimed: i32, xd: f32, yd: f32) -> f32 {
|
|
61
72
|
var hash = hashR2(seed, xPrimed, yPrimed);
|
|
62
73
|
hash = hash ^ (hash >> 15u);
|
|
@@ -66,7 +77,7 @@ function V() {
|
|
|
66
77
|
return xd * xg + yd * yg;
|
|
67
78
|
}`;
|
|
68
79
|
}
|
|
69
|
-
function
|
|
80
|
+
function T() {
|
|
70
81
|
return `fn gradCoordR3(seed: i32, xPrimed: i32, yPrimed: i32, zPrimed: i32, xd: f32, yd: f32, zd: f32) -> f32 {
|
|
71
82
|
var hash = hashR3(seed, xPrimed, yPrimed, zPrimed);
|
|
72
83
|
hash = hash ^ (hash >> 15u);
|
|
@@ -77,34 +88,34 @@ function F() {
|
|
|
77
88
|
return xd * xg + yd * yg + zd * zg;
|
|
78
89
|
}`;
|
|
79
90
|
}
|
|
80
|
-
function
|
|
91
|
+
function Q() {
|
|
81
92
|
return `fn interpHermite(t: f32) -> f32 {
|
|
82
93
|
return t * t * (3.0 - 2.0 * t);
|
|
83
94
|
}`;
|
|
84
95
|
}
|
|
85
|
-
function
|
|
96
|
+
function U() {
|
|
86
97
|
return `fn interpQuintic(t: f32) -> f32 {
|
|
87
98
|
return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);
|
|
88
99
|
}`;
|
|
89
100
|
}
|
|
90
|
-
function
|
|
101
|
+
function K() {
|
|
91
102
|
return `fn cubicLerp(a: f32, b: f32, c: f32, d: f32, t: f32) -> f32 {
|
|
92
103
|
let p = d - c - (a - b);
|
|
93
104
|
return t * t * t * p + t * t * (a - b - p) + t * (c - a) + b;
|
|
94
105
|
}`;
|
|
95
106
|
}
|
|
96
|
-
function
|
|
107
|
+
function ee() {
|
|
97
108
|
return `fn pingPong(t_in: f32) -> f32 {
|
|
98
109
|
var t = t_in - trunc(t_in * 0.5) * 2.0;
|
|
99
110
|
return select(2.0 - t, t, t < 1.0);
|
|
100
111
|
}`;
|
|
101
112
|
}
|
|
102
|
-
function
|
|
113
|
+
function be() {
|
|
103
114
|
return `
|
|
104
115
|
${E()}
|
|
105
116
|
${I()}
|
|
106
|
-
${
|
|
107
|
-
${
|
|
117
|
+
${q()}
|
|
118
|
+
${Q()}
|
|
108
119
|
|
|
109
120
|
fn value2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
110
121
|
let x0i = i32(floor(x));
|
|
@@ -125,12 +136,12 @@ fn value2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
125
136
|
}
|
|
126
137
|
`;
|
|
127
138
|
}
|
|
128
|
-
function
|
|
139
|
+
function Le() {
|
|
129
140
|
return `
|
|
130
141
|
${E()}
|
|
131
142
|
${S()}
|
|
132
|
-
${q()}
|
|
133
143
|
${J()}
|
|
144
|
+
${Q()}
|
|
134
145
|
|
|
135
146
|
fn value3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
136
147
|
let x0i = i32(floor(x));
|
|
@@ -160,8 +171,8 @@ fn value3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
160
171
|
}
|
|
161
172
|
`;
|
|
162
173
|
}
|
|
163
|
-
const
|
|
164
|
-
function
|
|
174
|
+
const we = ["primes", "hashR2", "valCoordR2", "interpHermite"], Ae = ["primes", "hashR3", "valCoordR3", "interpHermite"];
|
|
175
|
+
function Ge() {
|
|
165
176
|
return `
|
|
166
177
|
fn value2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
167
178
|
let x0i = i32(floor(x));
|
|
@@ -182,7 +193,7 @@ fn value2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
182
193
|
}
|
|
183
194
|
`;
|
|
184
195
|
}
|
|
185
|
-
function
|
|
196
|
+
function Xe() {
|
|
186
197
|
return `
|
|
187
198
|
fn value3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
188
199
|
let x0i = i32(floor(x));
|
|
@@ -212,14 +223,14 @@ fn value3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
212
223
|
}
|
|
213
224
|
`;
|
|
214
225
|
}
|
|
215
|
-
const
|
|
216
|
-
function
|
|
226
|
+
const Ye = ["primes", "gradients2D", "hashR2", "gradCoordR2", "interpQuintic"], We = ["primes", "gradients3D", "hashR3", "gradCoordR3", "interpQuintic"];
|
|
227
|
+
function je() {
|
|
217
228
|
return `
|
|
218
229
|
${E()}
|
|
219
|
-
${
|
|
230
|
+
${j()}
|
|
220
231
|
${I()}
|
|
221
|
-
${
|
|
222
|
-
${
|
|
232
|
+
${F()}
|
|
233
|
+
${U()}
|
|
223
234
|
|
|
224
235
|
fn perlin2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
225
236
|
let x0i = i32(floor(x));
|
|
@@ -253,13 +264,13 @@ fn perlin2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
253
264
|
}
|
|
254
265
|
`;
|
|
255
266
|
}
|
|
256
|
-
function
|
|
267
|
+
function Ve() {
|
|
257
268
|
return `
|
|
258
269
|
${E()}
|
|
259
|
-
${
|
|
270
|
+
${V()}
|
|
260
271
|
${S()}
|
|
261
|
-
${
|
|
262
|
-
${
|
|
272
|
+
${T()}
|
|
273
|
+
${U()}
|
|
263
274
|
|
|
264
275
|
fn perlin3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
265
276
|
let x0i = i32(floor(x));
|
|
@@ -312,7 +323,7 @@ fn perlin3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
312
323
|
}
|
|
313
324
|
`;
|
|
314
325
|
}
|
|
315
|
-
function
|
|
326
|
+
function Fe() {
|
|
316
327
|
return `fn perlin2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
317
328
|
let x0i = i32(floor(x));
|
|
318
329
|
let y0i = i32(floor(y));
|
|
@@ -344,7 +355,7 @@ function Ve() {
|
|
|
344
355
|
return mix(xf0, xf1, ys) * 1.4247691104677813;
|
|
345
356
|
}`;
|
|
346
357
|
}
|
|
347
|
-
function
|
|
358
|
+
function Te() {
|
|
348
359
|
return `fn perlin3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
349
360
|
let x0i = i32(floor(x));
|
|
350
361
|
let y0i = i32(floor(y));
|
|
@@ -395,16 +406,16 @@ function Fe() {
|
|
|
395
406
|
return mix(yf0, yf1, zs) * 0.964921414852142333984375;
|
|
396
407
|
}`;
|
|
397
408
|
}
|
|
398
|
-
const
|
|
399
|
-
function
|
|
409
|
+
const _e = G << 1 | 0, ve = X << 1 | 0, Ze = Y << 1 | 0, Be = ["primes", "primesDouble", "imul", "hashR2", "valCoordR2", "cubicLerp"], He = ["primes", "primesDouble", "imul", "hashR3", "valCoordR3", "cubicLerp"];
|
|
410
|
+
function Oe() {
|
|
400
411
|
return `
|
|
401
412
|
${E()}
|
|
402
|
-
const PRIME_X_2: i32 = ${
|
|
403
|
-
const PRIME_Y_2: i32 = ${
|
|
413
|
+
const PRIME_X_2: i32 = ${_e};
|
|
414
|
+
const PRIME_Y_2: i32 = ${ve};
|
|
404
415
|
${N()}
|
|
405
416
|
${I()}
|
|
406
|
-
${
|
|
407
|
-
${
|
|
417
|
+
${q()}
|
|
418
|
+
${K()}
|
|
408
419
|
|
|
409
420
|
fn valuecubic2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
410
421
|
let fx1 = floor(x);
|
|
@@ -434,16 +445,16 @@ fn valuecubic2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
434
445
|
}
|
|
435
446
|
`;
|
|
436
447
|
}
|
|
437
|
-
function
|
|
448
|
+
function qe() {
|
|
438
449
|
return `
|
|
439
450
|
${E()}
|
|
440
|
-
const PRIME_X_2: i32 = ${
|
|
441
|
-
const PRIME_Y_2: i32 = ${
|
|
442
|
-
const PRIME_Z_2: i32 = ${
|
|
451
|
+
const PRIME_X_2: i32 = ${_e};
|
|
452
|
+
const PRIME_Y_2: i32 = ${ve};
|
|
453
|
+
const PRIME_Z_2: i32 = ${Ze};
|
|
443
454
|
${N()}
|
|
444
455
|
${S()}
|
|
445
|
-
${
|
|
446
|
-
${
|
|
456
|
+
${J()}
|
|
457
|
+
${K()}
|
|
447
458
|
|
|
448
459
|
fn valuecubic3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
449
460
|
let fx1 = floor(x);
|
|
@@ -500,7 +511,7 @@ fn valuecubic3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
500
511
|
}
|
|
501
512
|
`;
|
|
502
513
|
}
|
|
503
|
-
function
|
|
514
|
+
function Je() {
|
|
504
515
|
return `
|
|
505
516
|
fn valuecubic2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
506
517
|
let fx1 = floor(x);
|
|
@@ -530,7 +541,7 @@ fn valuecubic2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
530
541
|
}
|
|
531
542
|
`;
|
|
532
543
|
}
|
|
533
|
-
function
|
|
544
|
+
function Qe() {
|
|
534
545
|
return `
|
|
535
546
|
fn valuecubic3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
536
547
|
let fx1 = floor(x);
|
|
@@ -587,30 +598,30 @@ fn valuecubic3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
587
598
|
}
|
|
588
599
|
`;
|
|
589
600
|
}
|
|
590
|
-
const
|
|
591
|
-
function
|
|
601
|
+
const ae = ["primes", "gradients2D", "imul", "hashR2", "gradCoordR2"], ie = ["primes", "gradients3D", "imul", "hashR3", "gradCoordR3"];
|
|
602
|
+
function re() {
|
|
592
603
|
return `
|
|
593
604
|
${E()}
|
|
594
|
-
${
|
|
605
|
+
${j()}
|
|
595
606
|
${N()}
|
|
596
607
|
${I()}
|
|
597
|
-
${
|
|
608
|
+
${F()}
|
|
598
609
|
|
|
599
|
-
${
|
|
610
|
+
${H()}
|
|
600
611
|
`;
|
|
601
612
|
}
|
|
602
|
-
function
|
|
613
|
+
function se() {
|
|
603
614
|
return `
|
|
604
615
|
${E()}
|
|
605
|
-
${
|
|
616
|
+
${V()}
|
|
606
617
|
${N()}
|
|
607
618
|
${S()}
|
|
608
|
-
${
|
|
619
|
+
${T()}
|
|
609
620
|
|
|
610
|
-
${
|
|
621
|
+
${O()}
|
|
611
622
|
`;
|
|
612
623
|
}
|
|
613
|
-
function
|
|
624
|
+
function H() {
|
|
614
625
|
return `fn opensimplex2_2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
615
626
|
let G2: f32 = 0.21132486540518713;
|
|
616
627
|
|
|
@@ -664,7 +675,7 @@ function B() {
|
|
|
664
675
|
return (n0 + n1 + n2) * 99.83685446303647;
|
|
665
676
|
}`;
|
|
666
677
|
}
|
|
667
|
-
function
|
|
678
|
+
function O() {
|
|
668
679
|
return `fn opensimplex2_3d(seed_in: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
669
680
|
var seed = seed_in;
|
|
670
681
|
var i = i32(floor(x + 0.5));
|
|
@@ -740,16 +751,16 @@ function H() {
|
|
|
740
751
|
return value * 32.69428253173828125;
|
|
741
752
|
}`;
|
|
742
753
|
}
|
|
743
|
-
const
|
|
744
|
-
function
|
|
754
|
+
const ze = G << 1 | 0, pe = X << 1 | 0, Ue = Y << 1 | 0;
|
|
755
|
+
function Ke() {
|
|
745
756
|
return `
|
|
746
757
|
${E()}
|
|
747
|
-
const PRIME_X_2: i32 = ${
|
|
748
|
-
const PRIME_Y_2: i32 = ${
|
|
749
|
-
${
|
|
758
|
+
const PRIME_X_2: i32 = ${ze};
|
|
759
|
+
const PRIME_Y_2: i32 = ${pe};
|
|
760
|
+
${j()}
|
|
750
761
|
${N()}
|
|
751
762
|
${I()}
|
|
752
|
-
${
|
|
763
|
+
${F()}
|
|
753
764
|
|
|
754
765
|
fn opensimplex2s_2d(seed_in: i32, x: f32, y: f32) -> f32 {
|
|
755
766
|
let seed = seed_in;
|
|
@@ -851,16 +862,16 @@ fn opensimplex2s_2d(seed_in: i32, x: f32, y: f32) -> f32 {
|
|
|
851
862
|
}
|
|
852
863
|
`;
|
|
853
864
|
}
|
|
854
|
-
function
|
|
865
|
+
function ea() {
|
|
855
866
|
return `
|
|
856
867
|
${E()}
|
|
857
|
-
const PRIME_X_2: i32 = ${
|
|
858
|
-
const PRIME_Y_2: i32 = ${
|
|
859
|
-
const PRIME_Z_2: i32 = ${
|
|
860
|
-
${
|
|
868
|
+
const PRIME_X_2: i32 = ${ze};
|
|
869
|
+
const PRIME_Y_2: i32 = ${pe};
|
|
870
|
+
const PRIME_Z_2: i32 = ${Ue};
|
|
871
|
+
${V()}
|
|
861
872
|
${N()}
|
|
862
873
|
${S()}
|
|
863
|
-
${
|
|
874
|
+
${T()}
|
|
864
875
|
|
|
865
876
|
fn opensimplex2s_3d(seed_in: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
866
877
|
let seed = seed_in;
|
|
@@ -1019,8 +1030,8 @@ fn opensimplex2s_3d(seed_in: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
1019
1030
|
}
|
|
1020
1031
|
`;
|
|
1021
1032
|
}
|
|
1022
|
-
const
|
|
1023
|
-
function
|
|
1033
|
+
const aa = ["primes", "primesDouble", "gradients2D", "imul", "hashR2", "gradCoordR2"], ia = ["primes", "primesDouble", "gradients3D", "imul", "hashR3", "gradCoordR3"];
|
|
1034
|
+
function ra() {
|
|
1024
1035
|
return `
|
|
1025
1036
|
fn opensimplex2s_2d(seed_in: i32, x: f32, y: f32) -> f32 {
|
|
1026
1037
|
let seed = seed_in;
|
|
@@ -1122,7 +1133,7 @@ fn opensimplex2s_2d(seed_in: i32, x: f32, y: f32) -> f32 {
|
|
|
1122
1133
|
}
|
|
1123
1134
|
`;
|
|
1124
1135
|
}
|
|
1125
|
-
function
|
|
1136
|
+
function sa() {
|
|
1126
1137
|
return `
|
|
1127
1138
|
fn opensimplex2s_3d(seed_in: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
1128
1139
|
let seed = seed_in;
|
|
@@ -1281,8 +1292,8 @@ fn opensimplex2s_3d(seed_in: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
|
1281
1292
|
}
|
|
1282
1293
|
`;
|
|
1283
1294
|
}
|
|
1284
|
-
const
|
|
1285
|
-
function
|
|
1295
|
+
const me = 0.43701595, he = 0.39614353;
|
|
1296
|
+
function Ee(d) {
|
|
1286
1297
|
switch (d) {
|
|
1287
1298
|
case M.Euclidean:
|
|
1288
1299
|
case M.EuclideanSq:
|
|
@@ -1293,7 +1304,7 @@ function he(d) {
|
|
|
1293
1304
|
return "return abs(vecX) + abs(vecY) + vecX * vecX + vecY * vecY;";
|
|
1294
1305
|
}
|
|
1295
1306
|
}
|
|
1296
|
-
function
|
|
1307
|
+
function Me(d) {
|
|
1297
1308
|
switch (d) {
|
|
1298
1309
|
case M.Euclidean:
|
|
1299
1310
|
case M.EuclideanSq:
|
|
@@ -1304,7 +1315,7 @@ function Ee(d) {
|
|
|
1304
1315
|
return "return abs(vecX) + abs(vecY) + abs(vecZ) + vecX * vecX + vecY * vecY + vecZ * vecZ;";
|
|
1305
1316
|
}
|
|
1306
1317
|
}
|
|
1307
|
-
function
|
|
1318
|
+
function Z(d) {
|
|
1308
1319
|
switch (d) {
|
|
1309
1320
|
case C.CellValue:
|
|
1310
1321
|
return "return f32(closestHash) * (1.0 / 2147483648.0);";
|
|
@@ -1322,24 +1333,24 @@ function T(d) {
|
|
|
1322
1333
|
return "return d0 / d1 - 1.0;";
|
|
1323
1334
|
}
|
|
1324
1335
|
}
|
|
1325
|
-
function
|
|
1326
|
-
const i =
|
|
1336
|
+
function ta(d, e, l) {
|
|
1337
|
+
const i = me * l, r = d === M.Euclidean && e !== C.CellValue ? `
|
|
1327
1338
|
distance0 = sqrt(distance0);
|
|
1328
1339
|
distance1 = sqrt(distance1);` : "";
|
|
1329
1340
|
return `
|
|
1330
1341
|
${E()}
|
|
1331
1342
|
${N()}
|
|
1332
1343
|
${I()}
|
|
1333
|
-
${
|
|
1344
|
+
${ue()}
|
|
1334
1345
|
|
|
1335
1346
|
const CELL_JITTER_2D: f32 = ${i};
|
|
1336
1347
|
|
|
1337
1348
|
fn cellDist2d(vecX: f32, vecY: f32) -> f32 {
|
|
1338
|
-
${
|
|
1349
|
+
${Ee(d)}
|
|
1339
1350
|
}
|
|
1340
1351
|
|
|
1341
1352
|
fn cellReturn2d(d0: f32, d1: f32, closestHash: i32) -> f32 {
|
|
1342
|
-
${
|
|
1353
|
+
${Z(e)}
|
|
1343
1354
|
}
|
|
1344
1355
|
|
|
1345
1356
|
fn cellular2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
@@ -1380,24 +1391,24 @@ ${r}
|
|
|
1380
1391
|
}
|
|
1381
1392
|
`;
|
|
1382
1393
|
}
|
|
1383
|
-
function
|
|
1384
|
-
const i =
|
|
1394
|
+
function la(d, e, l) {
|
|
1395
|
+
const i = he * l, r = d === M.Euclidean && e !== C.CellValue ? `
|
|
1385
1396
|
distance0 = sqrt(distance0);
|
|
1386
1397
|
distance1 = sqrt(distance1);` : "";
|
|
1387
1398
|
return `
|
|
1388
1399
|
${E()}
|
|
1389
1400
|
${N()}
|
|
1390
1401
|
${S()}
|
|
1391
|
-
${
|
|
1402
|
+
${Re()}
|
|
1392
1403
|
|
|
1393
1404
|
const CELL_JITTER_3D: f32 = ${i};
|
|
1394
1405
|
|
|
1395
1406
|
fn cellDist3d(vecX: f32, vecY: f32, vecZ: f32) -> f32 {
|
|
1396
|
-
${
|
|
1407
|
+
${Me(d)}
|
|
1397
1408
|
}
|
|
1398
1409
|
|
|
1399
1410
|
fn cellReturn3d(d0: f32, d1: f32, closestHash: i32) -> f32 {
|
|
1400
|
-
${
|
|
1411
|
+
${Z(e)}
|
|
1401
1412
|
}
|
|
1402
1413
|
|
|
1403
1414
|
fn cellular3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
@@ -1446,20 +1457,20 @@ ${r}
|
|
|
1446
1457
|
}
|
|
1447
1458
|
`;
|
|
1448
1459
|
}
|
|
1449
|
-
const
|
|
1450
|
-
function
|
|
1451
|
-
const i =
|
|
1460
|
+
const da = ["primes", "imul", "hashR2", "randVecs2D"], oa = ["primes", "imul", "hashR3", "randVecs3D"];
|
|
1461
|
+
function xa(d, e, l) {
|
|
1462
|
+
const i = me * l, r = d === M.Euclidean && e !== C.CellValue ? `
|
|
1452
1463
|
distance0 = sqrt(distance0);
|
|
1453
1464
|
distance1 = sqrt(distance1);` : "";
|
|
1454
1465
|
return `
|
|
1455
1466
|
const CELL_JITTER_2D: f32 = ${i};
|
|
1456
1467
|
|
|
1457
1468
|
fn cellDist2d(vecX: f32, vecY: f32) -> f32 {
|
|
1458
|
-
${
|
|
1469
|
+
${Ee(d)}
|
|
1459
1470
|
}
|
|
1460
1471
|
|
|
1461
1472
|
fn cellReturn2d(d0: f32, d1: f32, closestHash: i32) -> f32 {
|
|
1462
|
-
${
|
|
1473
|
+
${Z(e)}
|
|
1463
1474
|
}
|
|
1464
1475
|
|
|
1465
1476
|
fn cellular2d(seed: i32, x: f32, y: f32) -> f32 {
|
|
@@ -1500,19 +1511,19 @@ ${r}
|
|
|
1500
1511
|
}
|
|
1501
1512
|
`;
|
|
1502
1513
|
}
|
|
1503
|
-
function
|
|
1504
|
-
const i =
|
|
1514
|
+
function na(d, e, l) {
|
|
1515
|
+
const i = he * l, r = d === M.Euclidean && e !== C.CellValue ? `
|
|
1505
1516
|
distance0 = sqrt(distance0);
|
|
1506
1517
|
distance1 = sqrt(distance1);` : "";
|
|
1507
1518
|
return `
|
|
1508
1519
|
const CELL_JITTER_3D: f32 = ${i};
|
|
1509
1520
|
|
|
1510
1521
|
fn cellDist3d(vecX: f32, vecY: f32, vecZ: f32) -> f32 {
|
|
1511
|
-
${
|
|
1522
|
+
${Me(d)}
|
|
1512
1523
|
}
|
|
1513
1524
|
|
|
1514
1525
|
fn cellReturn3d(d0: f32, d1: f32, closestHash: i32) -> f32 {
|
|
1515
|
-
${
|
|
1526
|
+
${Z(e)}
|
|
1516
1527
|
}
|
|
1517
1528
|
|
|
1518
1529
|
fn cellular3d(seed: i32, x: f32, y: f32, z: f32) -> f32 {
|
|
@@ -1561,16 +1572,16 @@ ${r}
|
|
|
1561
1572
|
}
|
|
1562
1573
|
`;
|
|
1563
1574
|
}
|
|
1564
|
-
function k(d, e,
|
|
1575
|
+
function k(d, e, l, i, a, r, s, t) {
|
|
1565
1576
|
return `
|
|
1566
1577
|
${d}
|
|
1567
1578
|
|
|
1568
1579
|
fn noise(x: f32, y: f32) -> f32 {
|
|
1569
1580
|
var sum: f32 = 0.0;
|
|
1570
|
-
var amp: f32 = ${
|
|
1581
|
+
var amp: f32 = ${t};
|
|
1571
1582
|
var px = x;
|
|
1572
1583
|
var py = y;
|
|
1573
|
-
var s: i32 = ${
|
|
1584
|
+
var s: i32 = ${l | 0};
|
|
1574
1585
|
|
|
1575
1586
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1576
1587
|
let n = ${e}(s, px, py);
|
|
@@ -1587,17 +1598,17 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
1587
1598
|
}
|
|
1588
1599
|
`;
|
|
1589
1600
|
}
|
|
1590
|
-
function b(d, e,
|
|
1601
|
+
function b(d, e, l, i, a, r, s, t) {
|
|
1591
1602
|
return `
|
|
1592
1603
|
${d}
|
|
1593
1604
|
|
|
1594
1605
|
fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
1595
1606
|
var sum: f32 = 0.0;
|
|
1596
|
-
var amp: f32 = ${
|
|
1607
|
+
var amp: f32 = ${t};
|
|
1597
1608
|
var px = x;
|
|
1598
1609
|
var py = y;
|
|
1599
1610
|
var pz = z;
|
|
1600
|
-
var s: i32 = ${
|
|
1611
|
+
var s: i32 = ${l | 0};
|
|
1601
1612
|
|
|
1602
1613
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1603
1614
|
let n = ${e}(s, px, py, pz);
|
|
@@ -1615,16 +1626,16 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
1615
1626
|
}
|
|
1616
1627
|
`;
|
|
1617
1628
|
}
|
|
1618
|
-
function
|
|
1629
|
+
function te(d, e, l, i, a, r, s, t) {
|
|
1619
1630
|
return `
|
|
1620
1631
|
${d}
|
|
1621
1632
|
|
|
1622
1633
|
fn noise(x: f32, y: f32) -> f32 {
|
|
1623
1634
|
var sum: f32 = 0.0;
|
|
1624
|
-
var amp: f32 = ${
|
|
1635
|
+
var amp: f32 = ${t};
|
|
1625
1636
|
var px = x;
|
|
1626
1637
|
var py = y;
|
|
1627
|
-
var s: i32 = ${
|
|
1638
|
+
var s: i32 = ${l | 0};
|
|
1628
1639
|
|
|
1629
1640
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1630
1641
|
var n = ${e}(s, px, py);
|
|
@@ -1642,17 +1653,17 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
1642
1653
|
}
|
|
1643
1654
|
`;
|
|
1644
1655
|
}
|
|
1645
|
-
function
|
|
1656
|
+
function le(d, e, l, i, a, r, s, t) {
|
|
1646
1657
|
return `
|
|
1647
1658
|
${d}
|
|
1648
1659
|
|
|
1649
1660
|
fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
1650
1661
|
var sum: f32 = 0.0;
|
|
1651
|
-
var amp: f32 = ${
|
|
1662
|
+
var amp: f32 = ${t};
|
|
1652
1663
|
var px = x;
|
|
1653
1664
|
var py = y;
|
|
1654
1665
|
var pz = z;
|
|
1655
|
-
var s: i32 = ${
|
|
1666
|
+
var s: i32 = ${l | 0};
|
|
1656
1667
|
|
|
1657
1668
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1658
1669
|
var n = ${e}(s, px, py, pz);
|
|
@@ -1671,17 +1682,17 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
1671
1682
|
}
|
|
1672
1683
|
`;
|
|
1673
1684
|
}
|
|
1674
|
-
function
|
|
1685
|
+
function ya(d, e, l, i, a, r, s, t, o) {
|
|
1675
1686
|
return `
|
|
1676
1687
|
${d}
|
|
1677
|
-
${
|
|
1688
|
+
${ee()}
|
|
1678
1689
|
|
|
1679
1690
|
fn noise(x: f32, y: f32) -> f32 {
|
|
1680
1691
|
var sum: f32 = 0.0;
|
|
1681
|
-
var amp: f32 = ${
|
|
1692
|
+
var amp: f32 = ${t};
|
|
1682
1693
|
var px = x;
|
|
1683
1694
|
var py = y;
|
|
1684
|
-
var s: i32 = ${
|
|
1695
|
+
var s: i32 = ${l | 0};
|
|
1685
1696
|
|
|
1686
1697
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1687
1698
|
let n = pingPong((${e}(s, px, py) + 1.0) * ${o});
|
|
@@ -1698,18 +1709,18 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
1698
1709
|
}
|
|
1699
1710
|
`;
|
|
1700
1711
|
}
|
|
1701
|
-
function
|
|
1712
|
+
function fa(d, e, l, i, a, r, s, t, o) {
|
|
1702
1713
|
return `
|
|
1703
1714
|
${d}
|
|
1704
|
-
${
|
|
1715
|
+
${ee()}
|
|
1705
1716
|
|
|
1706
1717
|
fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
1707
1718
|
var sum: f32 = 0.0;
|
|
1708
|
-
var amp: f32 = ${
|
|
1719
|
+
var amp: f32 = ${t};
|
|
1709
1720
|
var px = x;
|
|
1710
1721
|
var py = y;
|
|
1711
1722
|
var pz = z;
|
|
1712
|
-
var s: i32 = ${
|
|
1723
|
+
var s: i32 = ${l | 0};
|
|
1713
1724
|
|
|
1714
1725
|
for (var i: i32 = 0; i < ${i}; i++) {
|
|
1715
1726
|
let n = pingPong((${e}(s, px, py, pz) + 1.0) * ${o});
|
|
@@ -1727,27 +1738,27 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
1727
1738
|
}
|
|
1728
1739
|
`;
|
|
1729
1740
|
}
|
|
1730
|
-
const
|
|
1741
|
+
const ca = {
|
|
1731
1742
|
primes: E,
|
|
1732
|
-
primesDouble: () => `const PRIME_X_2: i32 = ${
|
|
1733
|
-
const PRIME_Y_2: i32 = ${
|
|
1734
|
-
const PRIME_Z_2: i32 = ${
|
|
1743
|
+
primesDouble: () => `const PRIME_X_2: i32 = ${G << 1 | 0};
|
|
1744
|
+
const PRIME_Y_2: i32 = ${X << 1 | 0};
|
|
1745
|
+
const PRIME_Z_2: i32 = ${Y << 1 | 0};`,
|
|
1735
1746
|
imul: N,
|
|
1736
1747
|
hashR2: I,
|
|
1737
1748
|
hashR3: S,
|
|
1738
|
-
gradients2D:
|
|
1739
|
-
gradients3D:
|
|
1740
|
-
randVecs2D:
|
|
1741
|
-
randVecs3D:
|
|
1742
|
-
valCoordR2:
|
|
1743
|
-
valCoordR3:
|
|
1744
|
-
gradCoordR2:
|
|
1745
|
-
gradCoordR3:
|
|
1746
|
-
interpHermite:
|
|
1747
|
-
interpQuintic:
|
|
1748
|
-
cubicLerp:
|
|
1749
|
-
pingPong:
|
|
1750
|
-
},
|
|
1749
|
+
gradients2D: j,
|
|
1750
|
+
gradients3D: V,
|
|
1751
|
+
randVecs2D: ue,
|
|
1752
|
+
randVecs3D: Re,
|
|
1753
|
+
valCoordR2: q,
|
|
1754
|
+
valCoordR3: J,
|
|
1755
|
+
gradCoordR2: F,
|
|
1756
|
+
gradCoordR3: T,
|
|
1757
|
+
interpHermite: Q,
|
|
1758
|
+
interpQuintic: U,
|
|
1759
|
+
cubicLerp: K,
|
|
1760
|
+
pingPong: ee
|
|
1761
|
+
}, ua = {
|
|
1751
1762
|
primesDouble: ["primes"],
|
|
1752
1763
|
hashR2: ["primes"],
|
|
1753
1764
|
hashR3: ["primes"],
|
|
@@ -1756,37 +1767,37 @@ const PRIME_Z_2: i32 = ${X << 1 | 0};`,
|
|
|
1756
1767
|
gradCoordR2: ["hashR2", "primes", "gradients2D"],
|
|
1757
1768
|
gradCoordR3: ["hashR3", "primes", "gradients3D"]
|
|
1758
1769
|
};
|
|
1759
|
-
function
|
|
1770
|
+
function Pe(...d) {
|
|
1760
1771
|
const e = /* @__PURE__ */ new Set();
|
|
1761
|
-
function
|
|
1772
|
+
function l(a) {
|
|
1762
1773
|
if (e.has(a)) return;
|
|
1763
|
-
const r =
|
|
1774
|
+
const r = ua[a];
|
|
1764
1775
|
if (r)
|
|
1765
|
-
for (const s of r)
|
|
1776
|
+
for (const s of r) l(s);
|
|
1766
1777
|
e.add(a);
|
|
1767
1778
|
}
|
|
1768
1779
|
for (const a of d)
|
|
1769
|
-
for (const r of a)
|
|
1780
|
+
for (const r of a) l(r);
|
|
1770
1781
|
const i = [];
|
|
1771
1782
|
for (const a of e)
|
|
1772
|
-
i.push(
|
|
1783
|
+
i.push(ca[a]());
|
|
1773
1784
|
return i.join(`
|
|
1774
1785
|
`);
|
|
1775
1786
|
}
|
|
1776
|
-
const
|
|
1787
|
+
const de = [
|
|
1777
1788
|
"primes",
|
|
1778
1789
|
"imul",
|
|
1779
1790
|
"hashR2",
|
|
1780
1791
|
"randVecs2D",
|
|
1781
1792
|
"interpHermite"
|
|
1782
|
-
],
|
|
1793
|
+
], oe = [
|
|
1783
1794
|
"primes",
|
|
1784
1795
|
"imul",
|
|
1785
1796
|
"hashR3",
|
|
1786
1797
|
"randVecs3D",
|
|
1787
1798
|
"interpHermite"
|
|
1788
1799
|
];
|
|
1789
|
-
function
|
|
1800
|
+
function xe() {
|
|
1790
1801
|
return `
|
|
1791
1802
|
fn basicgrid_warp2d(seed: i32, x: f32, y: f32) -> vec2<f32> {
|
|
1792
1803
|
let x0i = i32(floor(x));
|
|
@@ -1818,7 +1829,7 @@ fn basicgrid_warp2d(seed: i32, x: f32, y: f32) -> vec2<f32> {
|
|
|
1818
1829
|
);
|
|
1819
1830
|
}`;
|
|
1820
1831
|
}
|
|
1821
|
-
function
|
|
1832
|
+
function ne() {
|
|
1822
1833
|
return `
|
|
1823
1834
|
fn basicgrid_warp3d(seed: i32, x: f32, y: f32, z: f32) -> vec3<f32> {
|
|
1824
1835
|
let x0i = i32(floor(x));
|
|
@@ -1877,30 +1888,30 @@ fn basicgrid_warp3d(seed: i32, x: f32, y: f32, z: f32) -> vec3<f32> {
|
|
|
1877
1888
|
);
|
|
1878
1889
|
}`;
|
|
1879
1890
|
}
|
|
1880
|
-
const
|
|
1891
|
+
const Ce = 1.7320508075688772, Ra = 0.5 * (Ce - 1), P = (3 - Ce) / 6, _a = [
|
|
1881
1892
|
"primes",
|
|
1882
1893
|
"imul",
|
|
1883
1894
|
"hashR2",
|
|
1884
1895
|
"randVecs2D"
|
|
1885
|
-
],
|
|
1896
|
+
], va = [
|
|
1886
1897
|
"primes",
|
|
1887
1898
|
"imul",
|
|
1888
1899
|
"hashR2",
|
|
1889
1900
|
"randVecs2D",
|
|
1890
1901
|
"gradients2D"
|
|
1891
|
-
],
|
|
1902
|
+
], za = [
|
|
1892
1903
|
"primes",
|
|
1893
1904
|
"imul",
|
|
1894
1905
|
"hashR3",
|
|
1895
1906
|
"randVecs3D"
|
|
1896
|
-
],
|
|
1907
|
+
], pa = [
|
|
1897
1908
|
"primes",
|
|
1898
1909
|
"imul",
|
|
1899
1910
|
"hashR3",
|
|
1900
1911
|
"randVecs3D",
|
|
1901
1912
|
"gradients3D"
|
|
1902
1913
|
];
|
|
1903
|
-
function
|
|
1914
|
+
function ye(d, e) {
|
|
1904
1915
|
return `
|
|
1905
1916
|
fn os2_warp2d_contrib(seed: i32, ip: i32, jp: i32, dx: f32, dy: f32, a_in: f32) -> vec3<f32> {
|
|
1906
1917
|
if (a_in <= 0.0) { return vec3<f32>(0.0, 0.0, 0.0); }
|
|
@@ -1922,7 +1933,7 @@ fn os2_warp2d_contrib(seed: i32, ip: i32, jp: i32, dx: f32, dy: f32, a_in: f32)
|
|
|
1922
1933
|
}
|
|
1923
1934
|
|
|
1924
1935
|
fn os2_warp2d(seed: i32, cx: f32, cy: f32) -> vec2<f32> {
|
|
1925
|
-
let t0 = (cx + cy) * ${
|
|
1936
|
+
let t0 = (cx + cy) * ${Ra};
|
|
1926
1937
|
let x = (cx + t0) * ${d};
|
|
1927
1938
|
let y = (cy + t0) * ${d};
|
|
1928
1939
|
|
|
@@ -1969,7 +1980,7 @@ fn os2_warp2d(seed: i32, cx: f32, cy: f32) -> vec2<f32> {
|
|
|
1969
1980
|
);
|
|
1970
1981
|
}`;
|
|
1971
1982
|
}
|
|
1972
|
-
function
|
|
1983
|
+
function fe(d) {
|
|
1973
1984
|
return `
|
|
1974
1985
|
fn os2_warp3d_contrib(s: i32, ip: i32, jp: i32, kp: i32, dx: f32, dy: f32, dz: f32, a_in: f32) -> vec3<f32> {
|
|
1975
1986
|
if (a_in <= 0.0) { return vec3<f32>(0.0, 0.0, 0.0); }
|
|
@@ -2085,7 +2096,7 @@ fn os2_warp3d(seed_in: i32, x_in: f32, y_in: f32, z_in: f32) -> vec3<f32> {
|
|
|
2085
2096
|
return vec3<f32>(vx, vy, vz);
|
|
2086
2097
|
}`;
|
|
2087
2098
|
}
|
|
2088
|
-
class
|
|
2099
|
+
class Ma extends ce {
|
|
2089
2100
|
buildTSL2D() {
|
|
2090
2101
|
const { domainWarpType: e } = this.config;
|
|
2091
2102
|
return e === h.None ? this.buildNoWarp2D() : this.buildWithWarp2D();
|
|
@@ -2094,7 +2105,7 @@ class Ea extends fe {
|
|
|
2094
2105
|
* Original path: no domain warp
|
|
2095
2106
|
*/
|
|
2096
2107
|
buildNoWarp2D() {
|
|
2097
|
-
const { seed: e, fractalType:
|
|
2108
|
+
const { seed: e, fractalType: l } = this.config, i = this.getBaseNoiseWGSL2D();
|
|
2098
2109
|
let a, r;
|
|
2099
2110
|
i.needsSkew ? (a = `${i.wgsl}
|
|
2100
2111
|
|
|
@@ -2103,16 +2114,16 @@ fn ${i.fnName}_skewed(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
2103
2114
|
let t = (x + y) * F2;
|
|
2104
2115
|
return ${i.fnName}(seed, x + t, y + t);
|
|
2105
2116
|
}`, r = `${i.fnName}_skewed`) : (a = i.wgsl, r = i.fnName);
|
|
2106
|
-
let s,
|
|
2107
|
-
if (
|
|
2108
|
-
|
|
2117
|
+
let s, t;
|
|
2118
|
+
if (l === _.None)
|
|
2119
|
+
t = `${r}_entry_core`, s = `${a}
|
|
2109
2120
|
|
|
2110
|
-
fn ${
|
|
2121
|
+
fn ${t}(x: f32, y: f32) -> f32 {
|
|
2111
2122
|
return ${r}(${e | 0}, x, y);
|
|
2112
2123
|
}`;
|
|
2113
2124
|
else {
|
|
2114
2125
|
const x = this.calculateFractalBounding();
|
|
2115
|
-
switch (
|
|
2126
|
+
switch (l) {
|
|
2116
2127
|
case _.FBm:
|
|
2117
2128
|
s = k(
|
|
2118
2129
|
a,
|
|
@@ -2126,7 +2137,7 @@ fn ${l}(x: f32, y: f32) -> f32 {
|
|
|
2126
2137
|
);
|
|
2127
2138
|
break;
|
|
2128
2139
|
case _.Ridged:
|
|
2129
|
-
s =
|
|
2140
|
+
s = te(
|
|
2130
2141
|
a,
|
|
2131
2142
|
r,
|
|
2132
2143
|
e,
|
|
@@ -2138,7 +2149,7 @@ fn ${l}(x: f32, y: f32) -> f32 {
|
|
|
2138
2149
|
);
|
|
2139
2150
|
break;
|
|
2140
2151
|
case _.PingPong:
|
|
2141
|
-
s =
|
|
2152
|
+
s = ya(
|
|
2142
2153
|
a,
|
|
2143
2154
|
r,
|
|
2144
2155
|
e,
|
|
@@ -2162,13 +2173,13 @@ fn ${l}(x: f32, y: f32) -> f32 {
|
|
|
2162
2173
|
x
|
|
2163
2174
|
);
|
|
2164
2175
|
}
|
|
2165
|
-
|
|
2176
|
+
t = "noise";
|
|
2166
2177
|
}
|
|
2167
2178
|
const o = `fn noise_entry(x_in: f32, y_in: f32) -> f32 {
|
|
2168
|
-
return ${
|
|
2179
|
+
return ${t}(x_in * ${this.config.frequency}, y_in * ${this.config.frequency});
|
|
2169
2180
|
}
|
|
2170
2181
|
${s}`;
|
|
2171
|
-
return L(o);
|
|
2182
|
+
return L(A(o, this._prefix));
|
|
2172
2183
|
}
|
|
2173
2184
|
/**
|
|
2174
2185
|
* Warp-enabled path: single wgslFn with deduplicated helpers
|
|
@@ -2176,16 +2187,16 @@ ${s}`;
|
|
|
2176
2187
|
buildWithWarp2D() {
|
|
2177
2188
|
const {
|
|
2178
2189
|
seed: e,
|
|
2179
|
-
fractalType:
|
|
2190
|
+
fractalType: l,
|
|
2180
2191
|
frequency: i,
|
|
2181
2192
|
domainWarpFrequency: a,
|
|
2182
2193
|
domainWarpFractalType: r,
|
|
2183
2194
|
domainWarpFractalOctaves: s,
|
|
2184
|
-
domainWarpFractalLacunarity:
|
|
2195
|
+
domainWarpFractalLacunarity: t,
|
|
2185
2196
|
domainWarpFractalGain: o
|
|
2186
2197
|
} = this.config, x = this.calculateWarpFractalBounding(), z = this.config.domainWarpAmplitude * x, n = this.getWarpAmplitudeMultiplier(), y = this.getBaseNoiseWGSLCore2D(), c = this.getWarpWGSL2D(), p = [y.helpers, c.helpers];
|
|
2187
|
-
|
|
2188
|
-
const R =
|
|
2198
|
+
l === _.PingPong && p.push(["pingPong"]);
|
|
2199
|
+
const R = Pe(...p);
|
|
2189
2200
|
let v = y.fnName, u = y.core;
|
|
2190
2201
|
y.needsSkew && (u += `
|
|
2191
2202
|
|
|
@@ -2198,7 +2209,7 @@ fn ${y.fnName}_skewed(seed: i32, x: f32, y: f32) -> f32 {
|
|
|
2198
2209
|
u,
|
|
2199
2210
|
v,
|
|
2200
2211
|
e,
|
|
2201
|
-
|
|
2212
|
+
l
|
|
2202
2213
|
), $ = `fn noise_entry(x_in: f32, y_in: f32) -> f32 {
|
|
2203
2214
|
var x = x_in;
|
|
2204
2215
|
var y = y_in;
|
|
@@ -2207,7 +2218,7 @@ ${this.buildWarpDispatch2D(
|
|
|
2207
2218
|
a,
|
|
2208
2219
|
r,
|
|
2209
2220
|
s,
|
|
2210
|
-
|
|
2221
|
+
t,
|
|
2211
2222
|
o,
|
|
2212
2223
|
z,
|
|
2213
2224
|
n,
|
|
@@ -2218,11 +2229,11 @@ ${this.buildWarpDispatch2D(
|
|
|
2218
2229
|
${R}
|
|
2219
2230
|
${c.core}
|
|
2220
2231
|
${D.wgsl}`;
|
|
2221
|
-
return L(
|
|
2232
|
+
return L(A($, this._prefix));
|
|
2222
2233
|
}
|
|
2223
|
-
buildWarpDispatch2D(e,
|
|
2234
|
+
buildWarpDispatch2D(e, l, i, a, r, s, t, o, x) {
|
|
2224
2235
|
if (i === w.None) {
|
|
2225
|
-
const y =
|
|
2236
|
+
const y = t * o;
|
|
2226
2237
|
return ` // Domain warp
|
|
2227
2238
|
{
|
|
2228
2239
|
let warp_d = ${x}(${e | 0}, x, y);
|
|
@@ -2234,7 +2245,7 @@ ${D.wgsl}`;
|
|
|
2234
2245
|
let n = ` // Fractal domain warp
|
|
2235
2246
|
`;
|
|
2236
2247
|
if (z) {
|
|
2237
|
-
let y =
|
|
2248
|
+
let y = t;
|
|
2238
2249
|
for (let c = 0; c < a; c++) {
|
|
2239
2250
|
const p = e + c | 0, R = y * o;
|
|
2240
2251
|
n += ` {
|
|
@@ -2248,7 +2259,7 @@ ${D.wgsl}`;
|
|
|
2248
2259
|
n += ` var dx: f32 = 0.0;
|
|
2249
2260
|
var dy: f32 = 0.0;
|
|
2250
2261
|
`;
|
|
2251
|
-
let y =
|
|
2262
|
+
let y = t;
|
|
2252
2263
|
for (let c = 0; c < a; c++) {
|
|
2253
2264
|
const p = e + c | 0, R = y * o;
|
|
2254
2265
|
n += ` {
|
|
@@ -2264,18 +2275,18 @@ ${D.wgsl}`;
|
|
|
2264
2275
|
}
|
|
2265
2276
|
return n;
|
|
2266
2277
|
}
|
|
2267
|
-
buildNoiseFractal2DCore(e,
|
|
2278
|
+
buildNoiseFractal2DCore(e, l, i, a) {
|
|
2268
2279
|
if (a === _.None) {
|
|
2269
|
-
const y = `${
|
|
2280
|
+
const y = `${l}_entry_core`;
|
|
2270
2281
|
return { wgsl: `${e}
|
|
2271
2282
|
|
|
2272
2283
|
fn ${y}(x: f32, y: f32) -> f32 {
|
|
2273
|
-
return ${
|
|
2284
|
+
return ${l}(${i | 0}, x, y);
|
|
2274
2285
|
}`, fnName: y };
|
|
2275
2286
|
}
|
|
2276
2287
|
const r = this.calculateFractalBounding(), {
|
|
2277
2288
|
fractalOctaves: s,
|
|
2278
|
-
fractalLacunarity:
|
|
2289
|
+
fractalLacunarity: t,
|
|
2279
2290
|
fractalGain: o,
|
|
2280
2291
|
fractalWeightedStrength: x,
|
|
2281
2292
|
fractalPingPongStrength: z
|
|
@@ -2285,22 +2296,22 @@ fn ${y}(x: f32, y: f32) -> f32 {
|
|
|
2285
2296
|
case _.FBm:
|
|
2286
2297
|
n = k(
|
|
2287
2298
|
e,
|
|
2288
|
-
|
|
2299
|
+
l,
|
|
2289
2300
|
i,
|
|
2290
2301
|
s,
|
|
2291
|
-
|
|
2302
|
+
t,
|
|
2292
2303
|
o,
|
|
2293
2304
|
x,
|
|
2294
2305
|
r
|
|
2295
2306
|
);
|
|
2296
2307
|
break;
|
|
2297
2308
|
case _.Ridged:
|
|
2298
|
-
n =
|
|
2309
|
+
n = te(
|
|
2299
2310
|
e,
|
|
2300
|
-
|
|
2311
|
+
l,
|
|
2301
2312
|
i,
|
|
2302
2313
|
s,
|
|
2303
|
-
|
|
2314
|
+
t,
|
|
2304
2315
|
o,
|
|
2305
2316
|
x,
|
|
2306
2317
|
r
|
|
@@ -2317,12 +2328,12 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2317
2328
|
var s: i32 = ${i | 0};
|
|
2318
2329
|
|
|
2319
2330
|
for (var i: i32 = 0; i < ${s}; i++) {
|
|
2320
|
-
let n = pingPong((${
|
|
2331
|
+
let n = pingPong((${l}(s, px, py) + 1.0) * ${z});
|
|
2321
2332
|
sum += (n - 0.5) * 2.0 * amp;
|
|
2322
2333
|
amp *= mix(1.0, n, ${x});
|
|
2323
2334
|
|
|
2324
|
-
px *= ${
|
|
2325
|
-
py *= ${
|
|
2335
|
+
px *= ${t};
|
|
2336
|
+
py *= ${t};
|
|
2326
2337
|
amp *= ${o};
|
|
2327
2338
|
s += 1;
|
|
2328
2339
|
}
|
|
@@ -2333,10 +2344,10 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2333
2344
|
default:
|
|
2334
2345
|
n = k(
|
|
2335
2346
|
e,
|
|
2336
|
-
|
|
2347
|
+
l,
|
|
2337
2348
|
i,
|
|
2338
2349
|
s,
|
|
2339
|
-
|
|
2350
|
+
t,
|
|
2340
2351
|
o,
|
|
2341
2352
|
x,
|
|
2342
2353
|
r
|
|
@@ -2348,33 +2359,33 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2348
2359
|
switch (this.config.domainWarpType) {
|
|
2349
2360
|
case h.BasicGrid:
|
|
2350
2361
|
return {
|
|
2351
|
-
core:
|
|
2362
|
+
core: xe(),
|
|
2352
2363
|
fnName: "basicgrid_warp2d",
|
|
2353
|
-
helpers:
|
|
2364
|
+
helpers: de
|
|
2354
2365
|
};
|
|
2355
2366
|
case h.OpenSimplex2:
|
|
2356
2367
|
return {
|
|
2357
|
-
core:
|
|
2368
|
+
core: ye(
|
|
2358
2369
|
this.config.domainWarpFrequency,
|
|
2359
2370
|
!1
|
|
2360
2371
|
),
|
|
2361
2372
|
fnName: "os2_warp2d",
|
|
2362
|
-
helpers:
|
|
2373
|
+
helpers: va
|
|
2363
2374
|
};
|
|
2364
2375
|
case h.OpenSimplex2Reduced:
|
|
2365
2376
|
return {
|
|
2366
|
-
core:
|
|
2377
|
+
core: ye(
|
|
2367
2378
|
this.config.domainWarpFrequency,
|
|
2368
2379
|
!0
|
|
2369
2380
|
),
|
|
2370
2381
|
fnName: "os2_warp2d",
|
|
2371
|
-
helpers:
|
|
2382
|
+
helpers: _a
|
|
2372
2383
|
};
|
|
2373
2384
|
default:
|
|
2374
2385
|
return {
|
|
2375
|
-
core:
|
|
2386
|
+
core: xe(),
|
|
2376
2387
|
fnName: "basicgrid_warp2d",
|
|
2377
|
-
helpers:
|
|
2388
|
+
helpers: de
|
|
2378
2389
|
};
|
|
2379
2390
|
}
|
|
2380
2391
|
}
|
|
@@ -2382,55 +2393,55 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2382
2393
|
switch (this.config.noiseType) {
|
|
2383
2394
|
case f.Value:
|
|
2384
2395
|
return {
|
|
2385
|
-
core:
|
|
2396
|
+
core: Ge(),
|
|
2386
2397
|
fnName: "value2d",
|
|
2387
|
-
helpers:
|
|
2398
|
+
helpers: we,
|
|
2388
2399
|
needsSkew: !1
|
|
2389
2400
|
};
|
|
2390
2401
|
case f.Perlin:
|
|
2391
2402
|
return {
|
|
2392
|
-
core:
|
|
2403
|
+
core: Fe(),
|
|
2393
2404
|
fnName: "perlin2d",
|
|
2394
|
-
helpers:
|
|
2405
|
+
helpers: Ye,
|
|
2395
2406
|
needsSkew: !1
|
|
2396
2407
|
};
|
|
2397
2408
|
case f.ValueCubic:
|
|
2398
2409
|
return {
|
|
2399
|
-
core:
|
|
2410
|
+
core: Je(),
|
|
2400
2411
|
fnName: "valuecubic2d",
|
|
2401
|
-
helpers:
|
|
2412
|
+
helpers: Be,
|
|
2402
2413
|
needsSkew: !1
|
|
2403
2414
|
};
|
|
2404
2415
|
case f.OpenSimplex2:
|
|
2405
2416
|
return {
|
|
2406
|
-
core:
|
|
2417
|
+
core: H(),
|
|
2407
2418
|
fnName: "opensimplex2_2d",
|
|
2408
|
-
helpers:
|
|
2419
|
+
helpers: ae,
|
|
2409
2420
|
needsSkew: !0
|
|
2410
2421
|
};
|
|
2411
2422
|
case f.OpenSimplex2S:
|
|
2412
2423
|
return {
|
|
2413
|
-
core:
|
|
2424
|
+
core: ra(),
|
|
2414
2425
|
fnName: "opensimplex2s_2d",
|
|
2415
|
-
helpers:
|
|
2426
|
+
helpers: aa,
|
|
2416
2427
|
needsSkew: !0
|
|
2417
2428
|
};
|
|
2418
2429
|
case f.Cellular:
|
|
2419
2430
|
return {
|
|
2420
|
-
core:
|
|
2431
|
+
core: xa(
|
|
2421
2432
|
this.config.cellularDistanceFunction,
|
|
2422
2433
|
this.config.cellularReturnType,
|
|
2423
2434
|
this.config.cellularJitter
|
|
2424
2435
|
),
|
|
2425
2436
|
fnName: "cellular2d",
|
|
2426
|
-
helpers:
|
|
2437
|
+
helpers: da,
|
|
2427
2438
|
needsSkew: !1
|
|
2428
2439
|
};
|
|
2429
2440
|
default:
|
|
2430
2441
|
return {
|
|
2431
|
-
core:
|
|
2442
|
+
core: H(),
|
|
2432
2443
|
fnName: "opensimplex2_2d",
|
|
2433
|
-
helpers:
|
|
2444
|
+
helpers: ae,
|
|
2434
2445
|
needsSkew: !0
|
|
2435
2446
|
};
|
|
2436
2447
|
}
|
|
@@ -2439,37 +2450,37 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2439
2450
|
switch (this.config.noiseType) {
|
|
2440
2451
|
case f.Value:
|
|
2441
2452
|
return {
|
|
2442
|
-
wgsl:
|
|
2453
|
+
wgsl: be(),
|
|
2443
2454
|
fnName: "value2d",
|
|
2444
2455
|
needsSkew: !1
|
|
2445
2456
|
};
|
|
2446
2457
|
case f.Perlin:
|
|
2447
2458
|
return {
|
|
2448
|
-
wgsl:
|
|
2459
|
+
wgsl: je(),
|
|
2449
2460
|
fnName: "perlin2d",
|
|
2450
2461
|
needsSkew: !1
|
|
2451
2462
|
};
|
|
2452
2463
|
case f.ValueCubic:
|
|
2453
2464
|
return {
|
|
2454
|
-
wgsl:
|
|
2465
|
+
wgsl: Oe(),
|
|
2455
2466
|
fnName: "valuecubic2d",
|
|
2456
2467
|
needsSkew: !1
|
|
2457
2468
|
};
|
|
2458
2469
|
case f.OpenSimplex2:
|
|
2459
2470
|
return {
|
|
2460
|
-
wgsl:
|
|
2471
|
+
wgsl: re(),
|
|
2461
2472
|
fnName: "opensimplex2_2d",
|
|
2462
2473
|
needsSkew: !0
|
|
2463
2474
|
};
|
|
2464
2475
|
case f.OpenSimplex2S:
|
|
2465
2476
|
return {
|
|
2466
|
-
wgsl:
|
|
2477
|
+
wgsl: Ke(),
|
|
2467
2478
|
fnName: "opensimplex2s_2d",
|
|
2468
2479
|
needsSkew: !0
|
|
2469
2480
|
};
|
|
2470
2481
|
case f.Cellular:
|
|
2471
2482
|
return {
|
|
2472
|
-
wgsl:
|
|
2483
|
+
wgsl: ta(
|
|
2473
2484
|
this.config.cellularDistanceFunction,
|
|
2474
2485
|
this.config.cellularReturnType,
|
|
2475
2486
|
this.config.cellularJitter
|
|
@@ -2479,14 +2490,14 @@ fn noise(x: f32, y: f32) -> f32 {
|
|
|
2479
2490
|
};
|
|
2480
2491
|
default:
|
|
2481
2492
|
return {
|
|
2482
|
-
wgsl:
|
|
2493
|
+
wgsl: re(),
|
|
2483
2494
|
fnName: "opensimplex2_2d",
|
|
2484
2495
|
needsSkew: !0
|
|
2485
2496
|
};
|
|
2486
2497
|
}
|
|
2487
2498
|
}
|
|
2488
2499
|
}
|
|
2489
|
-
function
|
|
2500
|
+
function B(d) {
|
|
2490
2501
|
switch (d) {
|
|
2491
2502
|
case m.ImproveXYPlanes:
|
|
2492
2503
|
return `{
|
|
@@ -2517,32 +2528,32 @@ function Z(d) {
|
|
|
2517
2528
|
return "";
|
|
2518
2529
|
}
|
|
2519
2530
|
}
|
|
2520
|
-
class
|
|
2531
|
+
class Pa extends ce {
|
|
2521
2532
|
buildTSL3D() {
|
|
2522
2533
|
const {
|
|
2523
2534
|
seed: e,
|
|
2524
|
-
noiseType:
|
|
2535
|
+
noiseType: l,
|
|
2525
2536
|
fractalType: i,
|
|
2526
2537
|
frequency: a,
|
|
2527
2538
|
rotationType3D: r,
|
|
2528
2539
|
domainWarpType: s
|
|
2529
2540
|
} = this.config;
|
|
2530
|
-
let
|
|
2541
|
+
let t, o;
|
|
2531
2542
|
switch (r) {
|
|
2532
2543
|
case m.ImproveXYPlanes:
|
|
2533
|
-
|
|
2544
|
+
t = m.ImproveXYPlanes, o = m.ImproveXYPlanes;
|
|
2534
2545
|
break;
|
|
2535
2546
|
case m.ImproveXZPlanes:
|
|
2536
|
-
|
|
2547
|
+
t = m.ImproveXZPlanes, o = m.ImproveXZPlanes;
|
|
2537
2548
|
break;
|
|
2538
2549
|
default:
|
|
2539
|
-
switch (
|
|
2550
|
+
switch (l) {
|
|
2540
2551
|
case f.OpenSimplex2:
|
|
2541
2552
|
case f.OpenSimplex2S:
|
|
2542
|
-
|
|
2553
|
+
t = m.DefaultOpenSimplex2;
|
|
2543
2554
|
break;
|
|
2544
2555
|
default:
|
|
2545
|
-
|
|
2556
|
+
t = m.None;
|
|
2546
2557
|
}
|
|
2547
2558
|
switch (s) {
|
|
2548
2559
|
case h.OpenSimplex2:
|
|
@@ -2555,24 +2566,24 @@ class Ma extends fe {
|
|
|
2555
2566
|
}
|
|
2556
2567
|
return s === h.None ? this.buildNoWarp3D(
|
|
2557
2568
|
e,
|
|
2558
|
-
|
|
2569
|
+
l,
|
|
2559
2570
|
i,
|
|
2560
2571
|
a,
|
|
2561
|
-
|
|
2572
|
+
t
|
|
2562
2573
|
) : this.buildWithWarp3D(
|
|
2563
2574
|
e,
|
|
2564
|
-
|
|
2575
|
+
l,
|
|
2565
2576
|
i,
|
|
2566
2577
|
a,
|
|
2567
|
-
|
|
2578
|
+
t,
|
|
2568
2579
|
o
|
|
2569
2580
|
);
|
|
2570
2581
|
}
|
|
2571
2582
|
/**
|
|
2572
2583
|
* Original path: no domain warp, unchanged from before
|
|
2573
2584
|
*/
|
|
2574
|
-
buildNoWarp3D(e,
|
|
2575
|
-
const s = this.getBaseNoiseWGSL3D(),
|
|
2585
|
+
buildNoWarp3D(e, l, i, a, r) {
|
|
2586
|
+
const s = this.getBaseNoiseWGSL3D(), t = B(r);
|
|
2576
2587
|
let o, x;
|
|
2577
2588
|
if (i === _.None)
|
|
2578
2589
|
o = s.wgsl, x = s.fnName, o += `
|
|
@@ -2596,7 +2607,7 @@ fn noise_core(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2596
2607
|
);
|
|
2597
2608
|
break;
|
|
2598
2609
|
case _.Ridged:
|
|
2599
|
-
o =
|
|
2610
|
+
o = le(
|
|
2600
2611
|
s.wgsl,
|
|
2601
2612
|
s.fnName,
|
|
2602
2613
|
e,
|
|
@@ -2608,7 +2619,7 @@ fn noise_core(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2608
2619
|
);
|
|
2609
2620
|
break;
|
|
2610
2621
|
case _.PingPong:
|
|
2611
|
-
o =
|
|
2622
|
+
o = fa(
|
|
2612
2623
|
s.wgsl,
|
|
2613
2624
|
s.fnName,
|
|
2614
2625
|
e,
|
|
@@ -2638,18 +2649,18 @@ fn noise_core(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2638
2649
|
var x = x_in * ${a};
|
|
2639
2650
|
var y = y_in * ${a};
|
|
2640
2651
|
var z = z_in * ${a};
|
|
2641
|
-
${
|
|
2652
|
+
${t}
|
|
2642
2653
|
return ${x}(x, y, z);
|
|
2643
2654
|
}
|
|
2644
2655
|
${o}`;
|
|
2645
|
-
return L(z);
|
|
2656
|
+
return L(A(z, this._prefix));
|
|
2646
2657
|
}
|
|
2647
2658
|
/**
|
|
2648
2659
|
* Warp-enabled path: single wgslFn with deduplicated helpers
|
|
2649
2660
|
*/
|
|
2650
|
-
buildWithWarp3D(e,
|
|
2661
|
+
buildWithWarp3D(e, l, i, a, r, s) {
|
|
2651
2662
|
const {
|
|
2652
|
-
domainWarpType:
|
|
2663
|
+
domainWarpType: t,
|
|
2653
2664
|
domainWarpFrequency: o,
|
|
2654
2665
|
domainWarpFractalType: x,
|
|
2655
2666
|
domainWarpFractalOctaves: z,
|
|
@@ -2657,18 +2668,18 @@ ${o}`;
|
|
|
2657
2668
|
domainWarpFractalGain: y
|
|
2658
2669
|
} = this.config, c = this.calculateWarpFractalBounding(), p = this.config.domainWarpAmplitude * c, R = this.getWarpAmplitudeMultiplier3D(), v = this.getBaseNoiseWGSLCore3D(), u = this.getWarpWGSL3D(), D = [v.helpers, u.helpers];
|
|
2659
2670
|
i === _.PingPong && D.push(["pingPong"]);
|
|
2660
|
-
const g =
|
|
2671
|
+
const g = Pe(...D), $ = this.buildNoiseFractal3DCore(
|
|
2661
2672
|
v.core,
|
|
2662
2673
|
v.fnName,
|
|
2663
2674
|
e,
|
|
2664
2675
|
i
|
|
2665
|
-
),
|
|
2676
|
+
), ge = B(s), De = B(r), Ne = `fn noise_entry(x_in: f32, y_in: f32, z_in: f32) -> f32 {
|
|
2666
2677
|
var x = x_in;
|
|
2667
2678
|
var y = y_in;
|
|
2668
2679
|
var z = z_in;
|
|
2669
2680
|
${this.buildWarpDispatch3D(
|
|
2670
2681
|
e,
|
|
2671
|
-
|
|
2682
|
+
t,
|
|
2672
2683
|
o,
|
|
2673
2684
|
x,
|
|
2674
2685
|
z,
|
|
@@ -2676,25 +2687,25 @@ ${this.buildWarpDispatch3D(
|
|
|
2676
2687
|
y,
|
|
2677
2688
|
p,
|
|
2678
2689
|
R,
|
|
2679
|
-
|
|
2690
|
+
ge,
|
|
2680
2691
|
u.fnName
|
|
2681
2692
|
)}
|
|
2682
2693
|
x *= ${a};
|
|
2683
2694
|
y *= ${a};
|
|
2684
2695
|
z *= ${a};
|
|
2685
|
-
${
|
|
2696
|
+
${De}
|
|
2686
2697
|
return ${$.fnName}(x, y, z);
|
|
2687
2698
|
}
|
|
2688
2699
|
${g}
|
|
2689
2700
|
${u.core}
|
|
2690
2701
|
${$.wgsl}`;
|
|
2691
|
-
return L(
|
|
2702
|
+
return L(A(Ne, this._prefix));
|
|
2692
2703
|
}
|
|
2693
2704
|
/**
|
|
2694
2705
|
* Build warp dispatch code for the entry function.
|
|
2695
2706
|
* Warp functions return unit displacement; amplitude is applied here.
|
|
2696
2707
|
*/
|
|
2697
|
-
buildWarpDispatch3D(e,
|
|
2708
|
+
buildWarpDispatch3D(e, l, i, a, r, s, t, o, x, z, n) {
|
|
2698
2709
|
const y = z ? z.replace(/\bx\b/g, "wx").replace(/\by\b/g, "wy").replace(/\bz\b/g, "wz") : "";
|
|
2699
2710
|
if (a === w.None) {
|
|
2700
2711
|
const R = o * x;
|
|
@@ -2733,7 +2744,7 @@ ${$.wgsl}`;
|
|
|
2733
2744
|
y += wd${u}.y * ${g};
|
|
2734
2745
|
z += wd${u}.z * ${g};
|
|
2735
2746
|
}
|
|
2736
|
-
`, R *=
|
|
2747
|
+
`, R *= t, v *= s;
|
|
2737
2748
|
}
|
|
2738
2749
|
} else {
|
|
2739
2750
|
p += ` var dx: f32 = 0.0;
|
|
@@ -2756,7 +2767,7 @@ ${$.wgsl}`;
|
|
|
2756
2767
|
dy += wd${u}.y * ${g};
|
|
2757
2768
|
dz += wd${u}.z * ${g};
|
|
2758
2769
|
}
|
|
2759
|
-
`, R *=
|
|
2770
|
+
`, R *= t, v *= s;
|
|
2760
2771
|
}
|
|
2761
2772
|
p += ` x += dx;
|
|
2762
2773
|
y += dy;
|
|
@@ -2768,16 +2779,16 @@ ${$.wgsl}`;
|
|
|
2768
2779
|
/**
|
|
2769
2780
|
* Build noise + fractal WGSL from core-only noise (no helpers)
|
|
2770
2781
|
*/
|
|
2771
|
-
buildNoiseFractal3DCore(e,
|
|
2782
|
+
buildNoiseFractal3DCore(e, l, i, a) {
|
|
2772
2783
|
if (a === _.None)
|
|
2773
2784
|
return { wgsl: `${e}
|
|
2774
2785
|
|
|
2775
2786
|
fn noise_core(x: f32, y: f32, z: f32) -> f32 {
|
|
2776
|
-
return ${
|
|
2787
|
+
return ${l}(${i | 0}, x, y, z);
|
|
2777
2788
|
}`, fnName: "noise_core" };
|
|
2778
2789
|
const r = this.calculateFractalBounding(), {
|
|
2779
2790
|
fractalOctaves: s,
|
|
2780
|
-
fractalLacunarity:
|
|
2791
|
+
fractalLacunarity: t,
|
|
2781
2792
|
fractalGain: o,
|
|
2782
2793
|
fractalWeightedStrength: x,
|
|
2783
2794
|
fractalPingPongStrength: z
|
|
@@ -2787,22 +2798,22 @@ fn noise_core(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2787
2798
|
case _.FBm:
|
|
2788
2799
|
n = b(
|
|
2789
2800
|
e,
|
|
2790
|
-
|
|
2801
|
+
l,
|
|
2791
2802
|
i,
|
|
2792
2803
|
s,
|
|
2793
|
-
|
|
2804
|
+
t,
|
|
2794
2805
|
o,
|
|
2795
2806
|
x,
|
|
2796
2807
|
r
|
|
2797
2808
|
);
|
|
2798
2809
|
break;
|
|
2799
2810
|
case _.Ridged:
|
|
2800
|
-
n =
|
|
2811
|
+
n = le(
|
|
2801
2812
|
e,
|
|
2802
|
-
|
|
2813
|
+
l,
|
|
2803
2814
|
i,
|
|
2804
2815
|
s,
|
|
2805
|
-
|
|
2816
|
+
t,
|
|
2806
2817
|
o,
|
|
2807
2818
|
x,
|
|
2808
2819
|
r
|
|
@@ -2820,13 +2831,13 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2820
2831
|
var s: i32 = ${i | 0};
|
|
2821
2832
|
|
|
2822
2833
|
for (var i: i32 = 0; i < ${s}; i++) {
|
|
2823
|
-
let n = pingPong((${
|
|
2834
|
+
let n = pingPong((${l}(s, px, py, pz) + 1.0) * ${z});
|
|
2824
2835
|
sum += (n - 0.5) * 2.0 * amp;
|
|
2825
2836
|
amp *= mix(1.0, n, ${x});
|
|
2826
2837
|
|
|
2827
|
-
px *= ${
|
|
2828
|
-
py *= ${
|
|
2829
|
-
pz *= ${
|
|
2838
|
+
px *= ${t};
|
|
2839
|
+
py *= ${t};
|
|
2840
|
+
pz *= ${t};
|
|
2830
2841
|
amp *= ${o};
|
|
2831
2842
|
s += 1;
|
|
2832
2843
|
}
|
|
@@ -2837,10 +2848,10 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2837
2848
|
default:
|
|
2838
2849
|
n = b(
|
|
2839
2850
|
e,
|
|
2840
|
-
|
|
2851
|
+
l,
|
|
2841
2852
|
i,
|
|
2842
2853
|
s,
|
|
2843
|
-
|
|
2854
|
+
t,
|
|
2844
2855
|
o,
|
|
2845
2856
|
x,
|
|
2846
2857
|
r
|
|
@@ -2855,27 +2866,27 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2855
2866
|
switch (this.config.domainWarpType) {
|
|
2856
2867
|
case h.BasicGrid:
|
|
2857
2868
|
return {
|
|
2858
|
-
core:
|
|
2869
|
+
core: ne(),
|
|
2859
2870
|
fnName: "basicgrid_warp3d",
|
|
2860
|
-
helpers:
|
|
2871
|
+
helpers: oe
|
|
2861
2872
|
};
|
|
2862
2873
|
case h.OpenSimplex2:
|
|
2863
2874
|
return {
|
|
2864
|
-
core:
|
|
2875
|
+
core: fe(!1),
|
|
2865
2876
|
fnName: "os2_warp3d",
|
|
2866
|
-
helpers:
|
|
2877
|
+
helpers: pa
|
|
2867
2878
|
};
|
|
2868
2879
|
case h.OpenSimplex2Reduced:
|
|
2869
2880
|
return {
|
|
2870
|
-
core:
|
|
2881
|
+
core: fe(!0),
|
|
2871
2882
|
fnName: "os2_warp3d",
|
|
2872
|
-
helpers:
|
|
2883
|
+
helpers: za
|
|
2873
2884
|
};
|
|
2874
2885
|
default:
|
|
2875
2886
|
return {
|
|
2876
|
-
core:
|
|
2887
|
+
core: ne(),
|
|
2877
2888
|
fnName: "basicgrid_warp3d",
|
|
2878
|
-
helpers:
|
|
2889
|
+
helpers: oe
|
|
2879
2890
|
};
|
|
2880
2891
|
}
|
|
2881
2892
|
}
|
|
@@ -2886,49 +2897,49 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2886
2897
|
switch (this.config.noiseType) {
|
|
2887
2898
|
case f.Value:
|
|
2888
2899
|
return {
|
|
2889
|
-
core:
|
|
2900
|
+
core: Xe(),
|
|
2890
2901
|
fnName: "value3d",
|
|
2891
|
-
helpers:
|
|
2902
|
+
helpers: Ae
|
|
2892
2903
|
};
|
|
2893
2904
|
case f.Perlin:
|
|
2894
2905
|
return {
|
|
2895
|
-
core:
|
|
2906
|
+
core: Te(),
|
|
2896
2907
|
fnName: "perlin3d",
|
|
2897
|
-
helpers:
|
|
2908
|
+
helpers: We
|
|
2898
2909
|
};
|
|
2899
2910
|
case f.ValueCubic:
|
|
2900
2911
|
return {
|
|
2901
|
-
core:
|
|
2912
|
+
core: Qe(),
|
|
2902
2913
|
fnName: "valuecubic3d",
|
|
2903
|
-
helpers:
|
|
2914
|
+
helpers: He
|
|
2904
2915
|
};
|
|
2905
2916
|
case f.OpenSimplex2:
|
|
2906
2917
|
return {
|
|
2907
|
-
core:
|
|
2918
|
+
core: O(),
|
|
2908
2919
|
fnName: "opensimplex2_3d",
|
|
2909
|
-
helpers:
|
|
2920
|
+
helpers: ie
|
|
2910
2921
|
};
|
|
2911
2922
|
case f.OpenSimplex2S:
|
|
2912
2923
|
return {
|
|
2913
|
-
core:
|
|
2924
|
+
core: sa(),
|
|
2914
2925
|
fnName: "opensimplex2s_3d",
|
|
2915
|
-
helpers:
|
|
2926
|
+
helpers: ia
|
|
2916
2927
|
};
|
|
2917
2928
|
case f.Cellular:
|
|
2918
2929
|
return {
|
|
2919
|
-
core:
|
|
2930
|
+
core: na(
|
|
2920
2931
|
this.config.cellularDistanceFunction,
|
|
2921
2932
|
this.config.cellularReturnType,
|
|
2922
2933
|
this.config.cellularJitter
|
|
2923
2934
|
),
|
|
2924
2935
|
fnName: "cellular3d",
|
|
2925
|
-
helpers:
|
|
2936
|
+
helpers: oa
|
|
2926
2937
|
};
|
|
2927
2938
|
default:
|
|
2928
2939
|
return {
|
|
2929
|
-
core:
|
|
2940
|
+
core: O(),
|
|
2930
2941
|
fnName: "opensimplex2_3d",
|
|
2931
|
-
helpers:
|
|
2942
|
+
helpers: ie
|
|
2932
2943
|
};
|
|
2933
2944
|
}
|
|
2934
2945
|
}
|
|
@@ -2949,27 +2960,27 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2949
2960
|
getBaseNoiseWGSL3D() {
|
|
2950
2961
|
switch (this.config.noiseType) {
|
|
2951
2962
|
case f.Value:
|
|
2952
|
-
return { wgsl:
|
|
2963
|
+
return { wgsl: Le(), fnName: "value3d" };
|
|
2953
2964
|
case f.Perlin:
|
|
2954
|
-
return { wgsl:
|
|
2965
|
+
return { wgsl: Ve(), fnName: "perlin3d" };
|
|
2955
2966
|
case f.ValueCubic:
|
|
2956
2967
|
return {
|
|
2957
|
-
wgsl:
|
|
2968
|
+
wgsl: qe(),
|
|
2958
2969
|
fnName: "valuecubic3d"
|
|
2959
2970
|
};
|
|
2960
2971
|
case f.OpenSimplex2:
|
|
2961
2972
|
return {
|
|
2962
|
-
wgsl:
|
|
2973
|
+
wgsl: se(),
|
|
2963
2974
|
fnName: "opensimplex2_3d"
|
|
2964
2975
|
};
|
|
2965
2976
|
case f.OpenSimplex2S:
|
|
2966
2977
|
return {
|
|
2967
|
-
wgsl:
|
|
2978
|
+
wgsl: ea(),
|
|
2968
2979
|
fnName: "opensimplex2s_3d"
|
|
2969
2980
|
};
|
|
2970
2981
|
case f.Cellular:
|
|
2971
2982
|
return {
|
|
2972
|
-
wgsl:
|
|
2983
|
+
wgsl: la(
|
|
2973
2984
|
this.config.cellularDistanceFunction,
|
|
2974
2985
|
this.config.cellularReturnType,
|
|
2975
2986
|
this.config.cellularJitter
|
|
@@ -2978,7 +2989,7 @@ fn noise(x: f32, y: f32, z: f32) -> f32 {
|
|
|
2978
2989
|
};
|
|
2979
2990
|
default:
|
|
2980
2991
|
return {
|
|
2981
|
-
wgsl:
|
|
2992
|
+
wgsl: se(),
|
|
2982
2993
|
fnName: "opensimplex2_3d"
|
|
2983
2994
|
};
|
|
2984
2995
|
}
|
|
@@ -2991,8 +3002,8 @@ export {
|
|
|
2991
3002
|
h as DomainWarpType,
|
|
2992
3003
|
_ as FractalType,
|
|
2993
3004
|
f as NoiseType,
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
3005
|
+
Da as RotationType3D,
|
|
3006
|
+
Ma as TSLNoiseBuilder2D,
|
|
3007
|
+
Pa as TSLNoiseBuilder3D,
|
|
2997
3008
|
m as TransformType3D
|
|
2998
3009
|
};
|