@tsparticles/simplex-noise 3.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/browser/Classes/SimplexNoise2D.js +152 -0
  4. package/browser/Classes/SimplexNoise3D.js +528 -0
  5. package/browser/Classes/SimplexNoise4D.js +2867 -0
  6. package/browser/Contributions.js +1 -0
  7. package/browser/SimplexNoise.js +10 -0
  8. package/browser/index.js +1 -0
  9. package/browser/package.json +1 -0
  10. package/browser/utils.js +5 -0
  11. package/cjs/Classes/SimplexNoise2D.js +156 -0
  12. package/cjs/Classes/SimplexNoise3D.js +532 -0
  13. package/cjs/Classes/SimplexNoise4D.js +2871 -0
  14. package/cjs/Contributions.js +2 -0
  15. package/cjs/SimplexNoise.js +14 -0
  16. package/cjs/index.js +5 -0
  17. package/cjs/package.json +1 -0
  18. package/cjs/utils.js +9 -0
  19. package/esm/Classes/SimplexNoise2D.js +152 -0
  20. package/esm/Classes/SimplexNoise3D.js +528 -0
  21. package/esm/Classes/SimplexNoise4D.js +2867 -0
  22. package/esm/Contributions.js +1 -0
  23. package/esm/SimplexNoise.js +10 -0
  24. package/esm/index.js +1 -0
  25. package/esm/package.json +1 -0
  26. package/esm/utils.js +5 -0
  27. package/package.json +105 -0
  28. package/report.html +39 -0
  29. package/tsparticles.simplex.noise.js +457 -0
  30. package/tsparticles.simplex.noise.min.js +2 -0
  31. package/tsparticles.simplex.noise.min.js.LICENSE.txt +1 -0
  32. package/types/Classes/SimplexNoise2D.d.ts +16 -0
  33. package/types/Classes/SimplexNoise3D.d.ts +16 -0
  34. package/types/Classes/SimplexNoise4D.d.ts +16 -0
  35. package/types/Contributions.d.ts +27 -0
  36. package/types/SimplexNoise.d.ts +9 -0
  37. package/types/index.d.ts +1 -0
  38. package/types/utils.d.ts +1 -0
  39. package/umd/Classes/SimplexNoise2D.js +166 -0
  40. package/umd/Classes/SimplexNoise3D.js +542 -0
  41. package/umd/Classes/SimplexNoise4D.js +2881 -0
  42. package/umd/Contributions.js +12 -0
  43. package/umd/SimplexNoise.js +24 -0
  44. package/umd/index.js +15 -0
  45. package/umd/utils.js +19 -0
@@ -0,0 +1,528 @@
1
+ import { shuffleSeed } from "../utils.js";
2
+ export class SimplexNoise3D {
3
+ constructor() {
4
+ this._NORM_3D = 1.0 / 103.0;
5
+ this._SQUISH_3D = (Math.sqrt(3 + 1) - 1) / 3;
6
+ this._STRETCH_3D = (1 / Math.sqrt(3 + 1) - 1) / 3;
7
+ this._base3D = [
8
+ [0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1],
9
+ [2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1, 3, 1, 1, 1],
10
+ [1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1],
11
+ ];
12
+ this._gradients3D = [
13
+ -11,
14
+ 4,
15
+ 4,
16
+ -4,
17
+ 11,
18
+ 4,
19
+ -4,
20
+ 4,
21
+ 11,
22
+ 11,
23
+ 4,
24
+ 4,
25
+ 4,
26
+ 11,
27
+ 4,
28
+ 4,
29
+ 4,
30
+ 11,
31
+ -11,
32
+ -4,
33
+ 4,
34
+ -4,
35
+ -11,
36
+ 4,
37
+ -4,
38
+ -4,
39
+ 11,
40
+ 11,
41
+ -4,
42
+ 4,
43
+ 4,
44
+ -11,
45
+ 4,
46
+ 4,
47
+ -4,
48
+ 11,
49
+ -11,
50
+ 4,
51
+ -4,
52
+ -4,
53
+ 11,
54
+ -4,
55
+ -4,
56
+ 4,
57
+ -11,
58
+ 11,
59
+ 4,
60
+ -4,
61
+ 4,
62
+ 11,
63
+ -4,
64
+ 4,
65
+ 4,
66
+ -11,
67
+ -11,
68
+ -4,
69
+ -4,
70
+ -4,
71
+ -11,
72
+ -4,
73
+ -4,
74
+ -4,
75
+ -11,
76
+ 11,
77
+ -4,
78
+ -4,
79
+ 4,
80
+ -11,
81
+ -4,
82
+ 4,
83
+ -4,
84
+ -11,
85
+ ];
86
+ this._lookup = [];
87
+ this._lookupPairs3D = [
88
+ 0,
89
+ 2,
90
+ 1,
91
+ 1,
92
+ 2,
93
+ 2,
94
+ 5,
95
+ 1,
96
+ 6,
97
+ 0,
98
+ 7,
99
+ 0,
100
+ 32,
101
+ 2,
102
+ 34,
103
+ 2,
104
+ 129,
105
+ 1,
106
+ 133,
107
+ 1,
108
+ 160,
109
+ 5,
110
+ 161,
111
+ 5,
112
+ 518,
113
+ 0,
114
+ 519,
115
+ 0,
116
+ 546,
117
+ 4,
118
+ 550,
119
+ 4,
120
+ 645,
121
+ 3,
122
+ 647,
123
+ 3,
124
+ 672,
125
+ 5,
126
+ 673,
127
+ 5,
128
+ 674,
129
+ 4,
130
+ 677,
131
+ 3,
132
+ 678,
133
+ 4,
134
+ 679,
135
+ 3,
136
+ 680,
137
+ 13,
138
+ 681,
139
+ 13,
140
+ 682,
141
+ 12,
142
+ 685,
143
+ 14,
144
+ 686,
145
+ 12,
146
+ 687,
147
+ 14,
148
+ 712,
149
+ 20,
150
+ 714,
151
+ 18,
152
+ 809,
153
+ 21,
154
+ 813,
155
+ 23,
156
+ 840,
157
+ 20,
158
+ 841,
159
+ 21,
160
+ 1198,
161
+ 19,
162
+ 1199,
163
+ 22,
164
+ 1226,
165
+ 18,
166
+ 1230,
167
+ 19,
168
+ 1325,
169
+ 23,
170
+ 1327,
171
+ 22,
172
+ 1352,
173
+ 15,
174
+ 1353,
175
+ 17,
176
+ 1354,
177
+ 15,
178
+ 1357,
179
+ 17,
180
+ 1358,
181
+ 16,
182
+ 1359,
183
+ 16,
184
+ 1360,
185
+ 11,
186
+ 1361,
187
+ 10,
188
+ 1362,
189
+ 11,
190
+ 1365,
191
+ 10,
192
+ 1366,
193
+ 9,
194
+ 1367,
195
+ 9,
196
+ 1392,
197
+ 11,
198
+ 1394,
199
+ 11,
200
+ 1489,
201
+ 10,
202
+ 1493,
203
+ 10,
204
+ 1520,
205
+ 8,
206
+ 1521,
207
+ 8,
208
+ 1878,
209
+ 9,
210
+ 1879,
211
+ 9,
212
+ 1906,
213
+ 7,
214
+ 1910,
215
+ 7,
216
+ 2005,
217
+ 6,
218
+ 2007,
219
+ 6,
220
+ 2032,
221
+ 8,
222
+ 2033,
223
+ 8,
224
+ 2034,
225
+ 7,
226
+ 2037,
227
+ 6,
228
+ 2038,
229
+ 7,
230
+ 2039,
231
+ 6,
232
+ ];
233
+ this._p3D = [
234
+ 0,
235
+ 0,
236
+ 1,
237
+ -1,
238
+ 0,
239
+ 0,
240
+ 1,
241
+ 0,
242
+ -1,
243
+ 0,
244
+ 0,
245
+ -1,
246
+ 1,
247
+ 0,
248
+ 0,
249
+ 0,
250
+ 1,
251
+ -1,
252
+ 0,
253
+ 0,
254
+ -1,
255
+ 0,
256
+ 1,
257
+ 0,
258
+ 0,
259
+ -1,
260
+ 1,
261
+ 0,
262
+ 2,
263
+ 1,
264
+ 1,
265
+ 0,
266
+ 1,
267
+ 1,
268
+ 1,
269
+ -1,
270
+ 0,
271
+ 2,
272
+ 1,
273
+ 0,
274
+ 1,
275
+ 1,
276
+ 1,
277
+ -1,
278
+ 1,
279
+ 0,
280
+ 2,
281
+ 0,
282
+ 1,
283
+ 1,
284
+ 1,
285
+ -1,
286
+ 1,
287
+ 1,
288
+ 1,
289
+ 3,
290
+ 2,
291
+ 1,
292
+ 0,
293
+ 3,
294
+ 1,
295
+ 2,
296
+ 0,
297
+ 1,
298
+ 3,
299
+ 2,
300
+ 0,
301
+ 1,
302
+ 3,
303
+ 1,
304
+ 0,
305
+ 2,
306
+ 1,
307
+ 3,
308
+ 0,
309
+ 2,
310
+ 1,
311
+ 3,
312
+ 0,
313
+ 1,
314
+ 2,
315
+ 1,
316
+ 1,
317
+ 1,
318
+ 0,
319
+ 0,
320
+ 2,
321
+ 2,
322
+ 0,
323
+ 0,
324
+ 1,
325
+ 1,
326
+ 0,
327
+ 1,
328
+ 0,
329
+ 2,
330
+ 0,
331
+ 2,
332
+ 0,
333
+ 1,
334
+ 1,
335
+ 0,
336
+ 0,
337
+ 1,
338
+ 2,
339
+ 0,
340
+ 0,
341
+ 2,
342
+ 2,
343
+ 0,
344
+ 0,
345
+ 0,
346
+ 0,
347
+ 1,
348
+ 1,
349
+ -1,
350
+ 1,
351
+ 2,
352
+ 0,
353
+ 0,
354
+ 0,
355
+ 0,
356
+ 1,
357
+ -1,
358
+ 1,
359
+ 1,
360
+ 2,
361
+ 0,
362
+ 0,
363
+ 0,
364
+ 0,
365
+ 1,
366
+ 1,
367
+ 1,
368
+ -1,
369
+ 2,
370
+ 3,
371
+ 1,
372
+ 1,
373
+ 1,
374
+ 2,
375
+ 0,
376
+ 0,
377
+ 2,
378
+ 2,
379
+ 3,
380
+ 1,
381
+ 1,
382
+ 1,
383
+ 2,
384
+ 2,
385
+ 0,
386
+ 0,
387
+ 2,
388
+ 3,
389
+ 1,
390
+ 1,
391
+ 1,
392
+ 2,
393
+ 0,
394
+ 2,
395
+ 0,
396
+ 2,
397
+ 1,
398
+ 1,
399
+ -1,
400
+ 1,
401
+ 2,
402
+ 0,
403
+ 0,
404
+ 2,
405
+ 2,
406
+ 1,
407
+ 1,
408
+ -1,
409
+ 1,
410
+ 2,
411
+ 2,
412
+ 0,
413
+ 0,
414
+ 2,
415
+ 1,
416
+ -1,
417
+ 1,
418
+ 1,
419
+ 2,
420
+ 0,
421
+ 0,
422
+ 2,
423
+ 2,
424
+ 1,
425
+ -1,
426
+ 1,
427
+ 1,
428
+ 2,
429
+ 0,
430
+ 2,
431
+ 0,
432
+ 2,
433
+ 1,
434
+ 1,
435
+ 1,
436
+ -1,
437
+ 2,
438
+ 2,
439
+ 0,
440
+ 0,
441
+ 2,
442
+ 1,
443
+ 1,
444
+ 1,
445
+ -1,
446
+ 2,
447
+ 0,
448
+ 2,
449
+ 0,
450
+ ];
451
+ this._perm = new Uint8Array(256);
452
+ this._perm3D = new Uint8Array(256);
453
+ }
454
+ noise(x, y, z) {
455
+ const { _STRETCH_3D, _NORM_3D, _SQUISH_3D, _lookup, _perm, _perm3D, _gradients3D } = this, stretchOffset = (x + y + z) * _STRETCH_3D, xs = x + stretchOffset, ys = y + stretchOffset, zs = z + stretchOffset, xsb = Math.floor(xs), ysb = Math.floor(ys), zsb = Math.floor(zs), squishOffset = (xsb + ysb + zsb) * _SQUISH_3D, dx0 = x - (xsb + squishOffset), dy0 = y - (ysb + squishOffset), dz0 = z - (zsb + squishOffset), xins = xs - xsb, yins = ys - ysb, zins = zs - zsb, inSum = xins + yins + zins, hash = (yins - zins + 1) |
456
+ ((xins - yins + 1) << 1) |
457
+ ((xins - zins + 1) << 2) |
458
+ (inSum << 3) |
459
+ ((inSum + zins) << 5) |
460
+ ((inSum + yins) << 7) |
461
+ ((inSum + xins) << 9);
462
+ let value = 0;
463
+ for (let c = _lookup[hash]; c !== undefined; c = c.next) {
464
+ const dx = dx0 + c.dx, dy = dy0 + c.dy, dz = dz0 + c.dz, attn = 2 - dx * dx - dy * dy - dz * dz;
465
+ if (attn > 0) {
466
+ const px = xsb + c.xsb, py = ysb + c.ysb, pz = zsb + c.zsb, indexPartA = _perm[px & 0xff], indexPartB = _perm[(indexPartA + py) & 0xff], index = _perm3D[(indexPartB + pz) & 0xff], valuePart = _gradients3D[index] * dx + _gradients3D[index + 1] * dy + _gradients3D[index + 2] * dz;
467
+ value += attn * attn * attn * attn * valuePart;
468
+ }
469
+ }
470
+ return value * _NORM_3D;
471
+ }
472
+ seed(clientSeed) {
473
+ const { _base3D, _lookupPairs3D, _p3D } = this, contributions = [];
474
+ for (let i = 0; i < _p3D.length; i += 9) {
475
+ const baseSet = _base3D[_p3D[i]];
476
+ let previous = null, current = null;
477
+ for (let k = 0; k < baseSet.length; k += 4) {
478
+ current = this._contribution3D(baseSet[k], baseSet[k + 1], baseSet[k + 2], baseSet[k + 3]);
479
+ if (previous === null) {
480
+ contributions[i / 9] = current;
481
+ }
482
+ else {
483
+ previous.next = current;
484
+ }
485
+ previous = current;
486
+ }
487
+ if (current) {
488
+ current.next = this._contribution3D(_p3D[i + 1], _p3D[i + 2], _p3D[i + 3], _p3D[i + 4]);
489
+ current.next.next = this._contribution3D(_p3D[i + 5], _p3D[i + 6], _p3D[i + 7], _p3D[i + 8]);
490
+ }
491
+ }
492
+ this._lookup = [];
493
+ for (let i = 0; i < _lookupPairs3D.length; i += 2) {
494
+ this._lookup[_lookupPairs3D[i]] = contributions[_lookupPairs3D[i + 1]];
495
+ }
496
+ this._perm = new Uint8Array(256);
497
+ this._perm3D = new Uint8Array(256);
498
+ const source = new Uint8Array(256);
499
+ for (let i = 0; i < 256; i++) {
500
+ source[i] = i;
501
+ }
502
+ let seed = new Uint32Array(1);
503
+ seed[0] = clientSeed;
504
+ seed = shuffleSeed(shuffleSeed(shuffleSeed(seed)));
505
+ for (let i = 255; i >= 0; i--) {
506
+ seed = shuffleSeed(seed);
507
+ const r = new Uint32Array(1);
508
+ r[0] = (seed[0] + 31) % (i + 1);
509
+ if (r[0] < 0) {
510
+ r[0] += i + 1;
511
+ }
512
+ this._perm[i] = source[r[0]];
513
+ this._perm3D[i] = (this._perm[i] % 24) * 3;
514
+ source[r[0]] = source[i];
515
+ }
516
+ }
517
+ _contribution3D(multiplier, xsb, ysb, zsb) {
518
+ const { _SQUISH_3D } = this;
519
+ return {
520
+ dx: -xsb - multiplier * _SQUISH_3D,
521
+ dy: -ysb - multiplier * _SQUISH_3D,
522
+ dz: -zsb - multiplier * _SQUISH_3D,
523
+ xsb,
524
+ ysb,
525
+ zsb,
526
+ };
527
+ }
528
+ }