sparcoon 0.7.2 → 0.9.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.
Files changed (155) hide show
  1. package/README.md +124 -76
  2. package/dist/artifact/FXArtifact.d.ts +120 -0
  3. package/dist/artifact/FXArtifact.js +1 -0
  4. package/dist/coreLayout.d.ts +22 -0
  5. package/dist/coreLayout.js +32 -0
  6. package/dist/effect/FXEffect.d.ts +77 -0
  7. package/dist/effect/FXEffect.js +454 -0
  8. package/dist/effect/FXEffectSampling.Internal.d.ts +24 -0
  9. package/dist/effect/FXEffectSampling.Internal.js +165 -0
  10. package/dist/effect/FXEffectSpec.d.ts +115 -0
  11. package/dist/effect/FXEffectSpec.js +1 -0
  12. package/dist/emitter/FXEmitter.Internal.d.ts +23 -58
  13. package/dist/emitter/FXEmitter.Internal.js +13 -29
  14. package/dist/emitter/FXEmitter.d.ts +46 -48
  15. package/dist/emitter/FXEmitter.js +355 -186
  16. package/dist/emitter/FXFromArtifactsOptions.d.ts +13 -0
  17. package/dist/emitter/FXFromArtifactsOptions.js +1 -0
  18. package/dist/emitter/FXObjectMotion.Internal.d.ts +33 -0
  19. package/dist/emitter/FXObjectMotion.Internal.js +87 -0
  20. package/dist/emitter/FXSimulationHolder.d.ts +1 -0
  21. package/dist/emitter/FXSimulationHolder.js +43 -0
  22. package/dist/index.d.ts +10 -39
  23. package/dist/index.js +13 -36
  24. package/dist/instancedParticle/FXInstancedParticle.d.ts +1 -22
  25. package/dist/instancedParticle/FXInstancedParticle.js +145 -85
  26. package/dist/instancedParticle/glTypeInfo.d.ts +5 -0
  27. package/dist/instancedParticle/glTypeInfo.js +3 -0
  28. package/dist/instancedParticle/primitiveGeometry.d.ts +1 -0
  29. package/dist/instancedParticle/primitiveGeometry.js +30 -0
  30. package/dist/miscellaneous/asserts.d.ts +1 -18
  31. package/dist/miscellaneous/asserts.js +21 -28
  32. package/dist/miscellaneous/fxMath.d.ts +26 -0
  33. package/dist/miscellaneous/fxMath.js +261 -0
  34. package/dist/miscellaneous/math.d.ts +2 -7
  35. package/dist/miscellaneous/math.js +8 -9
  36. package/dist/miscellaneous/texture/fxDataTexture.d.ts +26 -0
  37. package/dist/miscellaneous/texture/fxDataTexture.js +20 -0
  38. package/dist/render/FXArtifactMaterial.Internal.d.ts +16 -0
  39. package/dist/render/FXArtifactMaterial.Internal.js +944 -0
  40. package/dist/render/FXArtifactMaterial.d.ts +1 -0
  41. package/dist/render/FXArtifactMaterial.js +79 -0
  42. package/dist/render/FXMaterialOptions.d.ts +27 -0
  43. package/dist/render/FXMaterialOptions.js +5 -0
  44. package/dist/render/FXMeshMaterial.d.ts +40 -0
  45. package/dist/render/FXMeshMaterial.js +77 -0
  46. package/dist/world/FXWorld.d.ts +42 -0
  47. package/dist/world/FXWorld.js +103 -0
  48. package/package.json +45 -29
  49. package/dist/_virtual/2d.js +0 -3
  50. package/dist/_virtual/3d.js +0 -3
  51. package/dist/_virtual/4d.js +0 -3
  52. package/dist/_virtual/mod.js +0 -5
  53. package/dist/_virtual/mod2.js +0 -3
  54. package/dist/emitter/behavior/FXBehavior.d.ts +0 -24
  55. package/dist/emitter/behavior/FXBehavior.js +0 -10
  56. package/dist/emitter/behavior/FXBehaviorDirectionalForce.d.ts +0 -23
  57. package/dist/emitter/behavior/FXBehaviorDirectionalForce.js +0 -72
  58. package/dist/emitter/behavior/FXBehaviorPointForce.d.ts +0 -36
  59. package/dist/emitter/behavior/FXBehaviorPointForce.js +0 -94
  60. package/dist/emitter/behavior/FXBehaviorScaleOverLife.d.ts +0 -24
  61. package/dist/emitter/behavior/FXBehaviorScaleOverLife.js +0 -55
  62. package/dist/emitter/behavior/FXBehaviorTorqueDamping.d.ts +0 -20
  63. package/dist/emitter/behavior/FXBehaviorTorqueDamping.js +0 -48
  64. package/dist/emitter/behavior/FXBehaviorTorqueNoise.d.ts +0 -25
  65. package/dist/emitter/behavior/FXBehaviorTorqueNoise.js +0 -67
  66. package/dist/emitter/behavior/FXBehaviorTorqueOverLife.d.ts +0 -19
  67. package/dist/emitter/behavior/FXBehaviorTorqueOverLife.js +0 -41
  68. package/dist/emitter/behavior/FXBehaviorVelocityDamping.d.ts +0 -20
  69. package/dist/emitter/behavior/FXBehaviorVelocityDamping.js +0 -50
  70. package/dist/emitter/behavior/FXBehaviorVelocityNoise.d.ts +0 -25
  71. package/dist/emitter/behavior/FXBehaviorVelocityNoise.js +0 -76
  72. package/dist/emitter/behavior/FXBehaviorVelocityOverLife.d.ts +0 -22
  73. package/dist/emitter/behavior/FXBehaviorVelocityOverLife.js +0 -55
  74. package/dist/emitter/spawn/FXSpawn.d.ts +0 -11
  75. package/dist/emitter/spawn/FXSpawn.js +0 -10
  76. package/dist/emitter/spawn/FXSpawnBox.d.ts +0 -18
  77. package/dist/emitter/spawn/FXSpawnBox.js +0 -50
  78. package/dist/emitter/spawn/FXSpawnLifetime.d.ts +0 -17
  79. package/dist/emitter/spawn/FXSpawnLifetime.js +0 -44
  80. package/dist/emitter/spawn/FXSpawnOffset.d.ts +0 -21
  81. package/dist/emitter/spawn/FXSpawnOffset.js +0 -49
  82. package/dist/emitter/spawn/FXSpawnPoint.d.ts +0 -18
  83. package/dist/emitter/spawn/FXSpawnPoint.js +0 -46
  84. package/dist/emitter/spawn/FXSpawnRotation.d.ts +0 -17
  85. package/dist/emitter/spawn/FXSpawnRotation.js +0 -42
  86. package/dist/emitter/spawn/FXSpawnScale.d.ts +0 -22
  87. package/dist/emitter/spawn/FXSpawnScale.js +0 -56
  88. package/dist/emitter/spawn/FXSpawnSphere.d.ts +0 -36
  89. package/dist/emitter/spawn/FXSpawnSphere.js +0 -87
  90. package/dist/emitter/spawn/FXSpawnTorque.d.ts +0 -17
  91. package/dist/emitter/spawn/FXSpawnTorque.js +0 -42
  92. package/dist/emitter/spawn/FXSpawnVelocity.d.ts +0 -29
  93. package/dist/emitter/spawn/FXSpawnVelocity.js +0 -91
  94. package/dist/instancedParticle/FXInstancedParticle.Internal.d.ts +0 -2
  95. package/dist/instancedParticle/shared.d.ts +0 -19
  96. package/dist/instancedParticle/shared.js +0 -116
  97. package/dist/materials/FXDiffuseMaterial/FXDiffuseMaterial.Internal.d.ts +0 -24
  98. package/dist/materials/FXDiffuseMaterial/FXDiffuseMaterial.Internal.js +0 -275
  99. package/dist/materials/FXDiffuseMaterial/FXDiffuseMaterial.d.ts +0 -75
  100. package/dist/materials/FXDiffuseMaterial/FXDiffuseMaterial.js +0 -63
  101. package/dist/materials/FXMaterial/FXBlending.Internal.d.ts +0 -24
  102. package/dist/materials/FXMaterial/FXBlending.Internal.js +0 -64
  103. package/dist/materials/FXMaterial/FXDepthMaterial.Internal.d.ts +0 -4
  104. package/dist/materials/FXMaterial/FXDepthMaterial.Internal.js +0 -144
  105. package/dist/materials/FXMaterial/FXDistanceMaterial.Internal.d.ts +0 -4
  106. package/dist/materials/FXMaterial/FXDistanceMaterial.Internal.js +0 -175
  107. package/dist/materials/FXMaterial/FXMaterial.d.ts +0 -70
  108. package/dist/materials/FXMaterial/FXMaterial.js +0 -51
  109. package/dist/materials/FXUnlitMaterial/FXUnlitMaterial.Internal.d.ts +0 -7
  110. package/dist/materials/FXUnlitMaterial/FXUnlitMaterial.Internal.js +0 -103
  111. package/dist/materials/FXUnlitMaterial/FXUnlitMaterial.d.ts +0 -7
  112. package/dist/materials/FXUnlitMaterial/FXUnlitMaterial.js +0 -21
  113. package/dist/miscellaneous/color/FXColor.Internal.d.ts +0 -7
  114. package/dist/miscellaneous/color/FXColor.Internal.js +0 -42
  115. package/dist/miscellaneous/color/FXColor.d.ts +0 -234
  116. package/dist/miscellaneous/color/FXColor.js +0 -636
  117. package/dist/miscellaneous/curve/FXCurve1D.Internal.d.ts +0 -20
  118. package/dist/miscellaneous/curve/FXCurve1D.d.ts +0 -17
  119. package/dist/miscellaneous/curve/FXCurve1D.js +0 -94
  120. package/dist/miscellaneous/miscellaneous.d.ts +0 -34
  121. package/dist/miscellaneous/miscellaneous.js +0 -85
  122. package/dist/miscellaneous/texture/FXTextureView.Internal.d.ts +0 -49
  123. package/dist/miscellaneous/texture/FXTextureView.Internal.js +0 -6
  124. package/dist/miscellaneous/texture/FXTextureView.d.ts +0 -72
  125. package/dist/miscellaneous/texture/FXTextureView.js +0 -234
  126. package/dist/miscellaneous/webglCapabilities.d.ts +0 -1
  127. package/dist/miscellaneous/webglCapabilities.js +0 -45
  128. package/dist/node_modules/fast-simplex-noise/lib/2d.js +0 -93
  129. package/dist/node_modules/fast-simplex-noise/lib/3d.js +0 -142
  130. package/dist/node_modules/fast-simplex-noise/lib/4d.js +0 -196
  131. package/dist/node_modules/fast-simplex-noise/lib/mod.js +0 -24
  132. package/dist/nodes/FXNode.d.ts +0 -5
  133. package/dist/nodes/FXNode.js +0 -10
  134. package/dist/nodes/blending/FXNodeBlending.d.ts +0 -6
  135. package/dist/nodes/blending/FXNodeBlending.js +0 -9
  136. package/dist/nodes/blending/FXNodeLightnessBlendingMask.d.ts +0 -19
  137. package/dist/nodes/blending/FXNodeLightnessBlendingMask.js +0 -65
  138. package/dist/nodes/color/FXNodeColor.d.ts +0 -6
  139. package/dist/nodes/color/FXNodeColor.js +0 -9
  140. package/dist/nodes/color/FXNodeColorOverLife.d.ts +0 -22
  141. package/dist/nodes/color/FXNodeColorOverLife.js +0 -64
  142. package/dist/nodes/color/FXNodeSphericalClip.d.ts +0 -21
  143. package/dist/nodes/color/FXNodeSphericalClip.js +0 -54
  144. package/dist/nodes/normal/FXNodeFlatNormal.d.ts +0 -6
  145. package/dist/nodes/normal/FXNodeFlatNormal.js +0 -17
  146. package/dist/nodes/normal/FXNodeNormal.d.ts +0 -6
  147. package/dist/nodes/normal/FXNodeNormal.js +0 -9
  148. package/dist/nodes/normal/FXNodeSphericalNormal.d.ts +0 -6
  149. package/dist/nodes/normal/FXNodeSphericalNormal.js +0 -24
  150. package/dist/nodes/texture/FXNodeAnimatedTexture.d.ts +0 -52
  151. package/dist/nodes/texture/FXNodeAnimatedTexture.js +0 -151
  152. package/dist/nodes/texture/FXNodeStaticTexture.d.ts +0 -20
  153. package/dist/nodes/texture/FXNodeStaticTexture.js +0 -67
  154. package/dist/nodes/texture/FXNodeTexture.d.ts +0 -6
  155. package/dist/nodes/texture/FXNodeTexture.js +0 -9
@@ -1,93 +0,0 @@
1
- import { __exports as _2d } from '../../../_virtual/2d.js';
2
-
3
- var hasRequired_2d;
4
-
5
- function require_2d () {
6
- if (hasRequired_2d) return _2d;
7
- hasRequired_2d = 1;
8
- /*
9
- * Based on example code by Stefan Gustavson (stegu@itn.liu.se).
10
- * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
11
- * Better rank ordering method by Stefan Gustavson in 2012.
12
- *
13
- * This code was placed in the public domain by its original author,
14
- * Stefan Gustavson. You may use it as you see fit, but
15
- * attribution is appreciated.
16
- */
17
- Object.defineProperty(_2d, "__esModule", { value: true });
18
- _2d.makeNoise2D = void 0;
19
- var G2 = (3.0 - Math.sqrt(3.0)) / 6.0;
20
- var Grad = [
21
- [1, 1],
22
- [-1, 1],
23
- [1, -1],
24
- [-1, -1],
25
- [1, 0],
26
- [-1, 0],
27
- [1, 0],
28
- [-1, 0],
29
- [0, 1],
30
- [0, -1],
31
- [0, 1],
32
- [0, -1],
33
- ];
34
- function makeNoise2D(random) {
35
- if (random === void 0) { random = Math.random; }
36
- var p = new Uint8Array(256);
37
- for (var i = 0; i < 256; i++)
38
- p[i] = i;
39
- var n;
40
- var q;
41
- for (var i = 255; i > 0; i--) {
42
- n = Math.floor((i + 1) * random());
43
- q = p[i];
44
- p[i] = p[n];
45
- p[n] = q;
46
- }
47
- var perm = new Uint8Array(512);
48
- var permMod12 = new Uint8Array(512);
49
- for (var i = 0; i < 512; i++) {
50
- perm[i] = p[i & 255];
51
- permMod12[i] = perm[i] % 12;
52
- }
53
- return function (x, y) {
54
- // Skew the input space to determine which simplex cell we're in
55
- var s = (x + y) * 0.5 * (Math.sqrt(3.0) - 1.0); // Hairy factor for 2D
56
- var i = Math.floor(x + s);
57
- var j = Math.floor(y + s);
58
- var t = (i + j) * G2;
59
- var X0 = i - t; // Unskew the cell origin back to (x,y) space
60
- var Y0 = j - t;
61
- var x0 = x - X0; // The x,y distances from the cell origin
62
- var y0 = y - Y0;
63
- // Determine which simplex we are in.
64
- var i1 = x0 > y0 ? 1 : 0;
65
- var j1 = x0 > y0 ? 0 : 1;
66
- // Offsets for corners
67
- var x1 = x0 - i1 + G2;
68
- var y1 = y0 - j1 + G2;
69
- var x2 = x0 - 1.0 + 2.0 * G2;
70
- var y2 = y0 - 1.0 + 2.0 * G2;
71
- // Work out the hashed gradient indices of the three simplex corners
72
- var ii = i & 255;
73
- var jj = j & 255;
74
- var g0 = Grad[permMod12[ii + perm[jj]]];
75
- var g1 = Grad[permMod12[ii + i1 + perm[jj + j1]]];
76
- var g2 = Grad[permMod12[ii + 1 + perm[jj + 1]]];
77
- // Calculate the contribution from the three corners
78
- var t0 = 0.5 - x0 * x0 - y0 * y0;
79
- var n0 = t0 < 0 ? 0.0 : Math.pow(t0, 4) * (g0[0] * x0 + g0[1] * y0);
80
- var t1 = 0.5 - x1 * x1 - y1 * y1;
81
- var n1 = t1 < 0 ? 0.0 : Math.pow(t1, 4) * (g1[0] * x1 + g1[1] * y1);
82
- var t2 = 0.5 - x2 * x2 - y2 * y2;
83
- var n2 = t2 < 0 ? 0.0 : Math.pow(t2, 4) * (g2[0] * x2 + g2[1] * y2);
84
- // Add contributions from each corner to get the final noise value.
85
- // The result is scaled to return values in the interval [-1, 1]
86
- return 70.14805770653952 * (n0 + n1 + n2);
87
- };
88
- }
89
- _2d.makeNoise2D = makeNoise2D;
90
- return _2d;
91
- }
92
-
93
- export { require_2d as __require };
@@ -1,142 +0,0 @@
1
- import { __exports as _3d } from '../../../_virtual/3d.js';
2
-
3
- var hasRequired_3d;
4
-
5
- function require_3d () {
6
- if (hasRequired_3d) return _3d;
7
- hasRequired_3d = 1;
8
- /*
9
- * Based on example code by Stefan Gustavson (stegu@itn.liu.se).
10
- * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
11
- * Better rank ordering method by Stefan Gustavson in 2012.
12
- *
13
- * This code was placed in the public domain by its original author,
14
- * Stefan Gustavson. You may use it as you see fit, but
15
- * attribution is appreciated.
16
- */
17
- Object.defineProperty(_3d, "__esModule", { value: true });
18
- _3d.makeNoise3D = void 0;
19
- var G3 = 1.0 / 6.0;
20
- var Grad = [
21
- [1, 1, 0],
22
- [-1, 1, 0],
23
- [1, -1, 0],
24
- [-1, -1, 0],
25
- [1, 0, 1],
26
- [-1, 0, 1],
27
- [1, 0, -1],
28
- [-1, 0, -1],
29
- [0, 1, 1],
30
- [0, -1, -1],
31
- [0, 1, -1],
32
- [0, -1, -1],
33
- ];
34
- function makeNoise3D(random) {
35
- if (random === void 0) { random = Math.random; }
36
- var p = new Uint8Array(256);
37
- for (var i = 0; i < 256; i++)
38
- p[i] = i;
39
- var n;
40
- var q;
41
- for (var i = 255; i > 0; i--) {
42
- n = Math.floor((i + 1) * random());
43
- q = p[i];
44
- p[i] = p[n];
45
- p[n] = q;
46
- }
47
- var perm = new Uint8Array(512);
48
- var permMod12 = new Uint8Array(512);
49
- for (var i = 0; i < 512; i++) {
50
- perm[i] = p[i & 255];
51
- permMod12[i] = perm[i] % 12;
52
- }
53
- return function (x, y, z) {
54
- // Skew the input space to determine which simplex cell we're in
55
- var s = (x + y + z) / 3.0; // Very nice and simple skew factor for 3D
56
- var i = Math.floor(x + s);
57
- var j = Math.floor(y + s);
58
- var k = Math.floor(z + s);
59
- var t = (i + j + k) * G3;
60
- var X0 = i - t; // Unskew the cell origin back to (x,y,z) space
61
- var Y0 = j - t;
62
- var Z0 = k - t;
63
- var x0 = x - X0; // The x,y,z distances from the cell origin
64
- var y0 = y - Y0;
65
- var z0 = z - Z0;
66
- // Deterine which simplex we are in
67
- var i1, j1, k1 // Offsets for second corner of simplex in (i,j,k) coords
68
- ;
69
- var i2, j2, k2 // Offsets for third corner of simplex in (i,j,k) coords
70
- ;
71
- if (x0 >= y0) {
72
- if (y0 >= z0) {
73
- i1 = i2 = j2 = 1;
74
- j1 = k1 = k2 = 0;
75
- }
76
- else if (x0 >= z0) {
77
- i1 = i2 = k2 = 1;
78
- j1 = k1 = j2 = 0;
79
- }
80
- else {
81
- k1 = i2 = k2 = 1;
82
- i1 = j1 = j2 = 0;
83
- }
84
- }
85
- else {
86
- if (y0 < z0) {
87
- k1 = j2 = k2 = 1;
88
- i1 = j1 = i2 = 0;
89
- }
90
- else if (x0 < z0) {
91
- j1 = j2 = k2 = 1;
92
- i1 = k1 = i2 = 0;
93
- }
94
- else {
95
- j1 = i2 = j2 = 1;
96
- i1 = k1 = k2 = 0;
97
- }
98
- }
99
- var x1 = x0 - i1 + G3; // Offsets for second corner in (x,y,z) coords
100
- var y1 = y0 - j1 + G3;
101
- var z1 = z0 - k1 + G3;
102
- var x2 = x0 - i2 + 2.0 * G3; // Offsets for third corner in (x,y,z) coords
103
- var y2 = y0 - j2 + 2.0 * G3;
104
- var z2 = z0 - k2 + 2.0 * G3;
105
- var x3 = x0 - 1.0 + 3.0 * G3; // Offsets for last corner in (x,y,z) coords
106
- var y3 = y0 - 1.0 + 3.0 * G3;
107
- var z3 = z0 - 1.0 + 3.0 * G3;
108
- // Work out the hashed gradient indices of the four simplex corners
109
- var ii = i & 255;
110
- var jj = j & 255;
111
- var kk = k & 255;
112
- var g0 = Grad[permMod12[ii + perm[jj + perm[kk]]]];
113
- var g1 = Grad[permMod12[ii + i1 + perm[jj + j1 + perm[kk + k1]]]];
114
- var g2 = Grad[permMod12[ii + i2 + perm[jj + j2 + perm[kk + k2]]]];
115
- var g3 = Grad[permMod12[ii + 1 + perm[jj + 1 + perm[kk + 1]]]];
116
- // Calculate the contribution from the four corners
117
- var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0;
118
- var n0 = t0 < 0
119
- ? 0.0
120
- : Math.pow(t0, 4) * (g0[0] * x0 + g0[1] * y0 + g0[2] * z0);
121
- var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1;
122
- var n1 = t1 < 0
123
- ? 0.0
124
- : Math.pow(t1, 4) * (g1[0] * x1 + g1[1] * y1 + g1[2] * z1);
125
- var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2;
126
- var n2 = t2 < 0
127
- ? 0.0
128
- : Math.pow(t2, 4) * (g2[0] * x2 + g2[1] * y2 + g2[2] * z2);
129
- var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3;
130
- var n3 = t3 < 0
131
- ? 0.0
132
- : Math.pow(t3, 4) * (g3[0] * x3 + g3[1] * y3 + g3[2] * z3);
133
- // Add contributions from each corner to get the final noise value.
134
- // The result is scaled to stay just inside [-1,1]
135
- return 94.68493150681972 * (n0 + n1 + n2 + n3);
136
- };
137
- }
138
- _3d.makeNoise3D = makeNoise3D;
139
- return _3d;
140
- }
141
-
142
- export { require_3d as __require };
@@ -1,196 +0,0 @@
1
- import { __exports as _4d } from '../../../_virtual/4d.js';
2
-
3
- var hasRequired_4d;
4
-
5
- function require_4d () {
6
- if (hasRequired_4d) return _4d;
7
- hasRequired_4d = 1;
8
- /*
9
- * Based on example code by Stefan Gustavson (stegu@itn.liu.se).
10
- * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
11
- * Better rank ordering method by Stefan Gustavson in 2012.
12
- *
13
- * This code was placed in the public domain by its original author,
14
- * Stefan Gustavson. You may use it as you see fit, but
15
- * attribution is appreciated.
16
- */
17
- Object.defineProperty(_4d, "__esModule", { value: true });
18
- _4d.makeNoise4D = void 0;
19
- var G4 = (5.0 - Math.sqrt(5.0)) / 20.0;
20
- var Grad = [
21
- [0, 1, 1, 1],
22
- [0, 1, 1, -1],
23
- [0, 1, -1, 1],
24
- [0, 1, -1, -1],
25
- [0, -1, 1, 1],
26
- [0, -1, 1, -1],
27
- [0, -1, -1, 1],
28
- [0, -1, -1, -1],
29
- [1, 0, 1, 1],
30
- [1, 0, 1, -1],
31
- [1, 0, -1, 1],
32
- [1, 0, -1, -1],
33
- [-1, 0, 1, 1],
34
- [-1, 0, 1, -1],
35
- [-1, 0, -1, 1],
36
- [-1, 0, -1, -1],
37
- [1, 1, 0, 1],
38
- [1, 1, 0, -1],
39
- [1, -1, 0, 1],
40
- [1, -1, 0, -1],
41
- [-1, 1, 0, 1],
42
- [-1, 1, 0, -1],
43
- [-1, -1, 0, 1],
44
- [-1, -1, 0, -1],
45
- [1, 1, 1, 0],
46
- [1, 1, -1, 0],
47
- [1, -1, 1, 0],
48
- [1, -1, -1, 0],
49
- [-1, 1, 1, 0],
50
- [-1, 1, -1, 0],
51
- [-1, -1, 1, 0],
52
- [-1, -1, -1, 0],
53
- ];
54
- function makeNoise4D(random) {
55
- if (random === void 0) { random = Math.random; }
56
- var p = new Uint8Array(256);
57
- for (var i = 0; i < 256; i++)
58
- p[i] = i;
59
- var n;
60
- var q;
61
- for (var i = 255; i > 0; i--) {
62
- n = Math.floor((i + 1) * random());
63
- q = p[i];
64
- p[i] = p[n];
65
- p[n] = q;
66
- }
67
- var perm = new Uint8Array(512);
68
- var permMod12 = new Uint8Array(512);
69
- for (var i = 0; i < 512; i++) {
70
- perm[i] = p[i & 255];
71
- permMod12[i] = perm[i] % 12;
72
- }
73
- return function (x, y, z, w) {
74
- // Skew the (x,y,z,w) space to determine which cell of 24 simplices we're in
75
- var s = (x + y + z + w) * (Math.sqrt(5.0) - 1.0) / 4.0; // Factor for 4D skewing
76
- var i = Math.floor(x + s);
77
- var j = Math.floor(y + s);
78
- var k = Math.floor(z + s);
79
- var l = Math.floor(w + s);
80
- var t = (i + j + k + l) * G4; // Factor for 4D unskewing
81
- var X0 = i - t; // Unskew the cell origin back to (x,y,z,w) space
82
- var Y0 = j - t;
83
- var Z0 = k - t;
84
- var W0 = l - t;
85
- var x0 = x - X0; // The x,y,z,w distances from the cell origin
86
- var y0 = y - Y0;
87
- var z0 = z - Z0;
88
- var w0 = w - W0;
89
- // To find out which of the 24 possible simplices we're in, we need to determine the
90
- // magnitude ordering of x0, y0, z0 and w0. Six pair-wise comparisons are performed between
91
- // each possible pair of the four coordinates, and the results are used to rank the numbers.
92
- var rankx = 0;
93
- var ranky = 0;
94
- var rankz = 0;
95
- var rankw = 0;
96
- if (x0 > y0)
97
- rankx++;
98
- else
99
- ranky++;
100
- if (x0 > z0)
101
- rankx++;
102
- else
103
- rankz++;
104
- if (x0 > w0)
105
- rankx++;
106
- else
107
- rankw++;
108
- if (y0 > z0)
109
- ranky++;
110
- else
111
- rankz++;
112
- if (y0 > w0)
113
- ranky++;
114
- else
115
- rankw++;
116
- if (z0 > w0)
117
- rankz++;
118
- else
119
- rankw++;
120
- // simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.
121
- // Many values of c will never occur, since e.g. x>y>z>w makes x<z, y<w and x<w
122
- // impossible. Only the 24 indices which have non-zero entries make any sense.
123
- // We use a thresholding to set the coordinates in turn from the largest magnitude.
124
- // Rank 3 denotes the largest coordinate.
125
- var i1 = rankx >= 3 ? 1 : 0;
126
- var j1 = ranky >= 3 ? 1 : 0;
127
- var k1 = rankz >= 3 ? 1 : 0;
128
- var l1 = rankw >= 3 ? 1 : 0;
129
- // Rank 2 denotes the second largest coordinate.
130
- var i2 = rankx >= 2 ? 1 : 0;
131
- var j2 = ranky >= 2 ? 1 : 0;
132
- var k2 = rankz >= 2 ? 1 : 0;
133
- var l2 = rankw >= 2 ? 1 : 0;
134
- // Rank 1 denotes the second smallest coordinate.
135
- var i3 = rankx >= 1 ? 1 : 0;
136
- var j3 = ranky >= 1 ? 1 : 0;
137
- var k3 = rankz >= 1 ? 1 : 0;
138
- var l3 = rankw >= 1 ? 1 : 0;
139
- // The fifth corner has all coordinate offsets = 1, so no need to compute that.
140
- var x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords
141
- var y1 = y0 - j1 + G4;
142
- var z1 = z0 - k1 + G4;
143
- var w1 = w0 - l1 + G4;
144
- var x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords
145
- var y2 = y0 - j2 + 2.0 * G4;
146
- var z2 = z0 - k2 + 2.0 * G4;
147
- var w2 = w0 - l2 + 2.0 * G4;
148
- var x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords
149
- var y3 = y0 - j3 + 3.0 * G4;
150
- var z3 = z0 - k3 + 3.0 * G4;
151
- var w3 = w0 - l3 + 3.0 * G4;
152
- var x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords
153
- var y4 = y0 - 1.0 + 4.0 * G4;
154
- var z4 = z0 - 1.0 + 4.0 * G4;
155
- var w4 = w0 - 1.0 + 4.0 * G4;
156
- // Work out the hashed gradient indices of the five simplex corners
157
- var ii = i & 255;
158
- var jj = j & 255;
159
- var kk = k & 255;
160
- var ll = l & 255;
161
- var g0 = Grad[perm[ii + perm[jj + perm[kk + perm[ll]]]] %
162
- 32];
163
- var g1 = Grad[perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32];
164
- var g2 = Grad[perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32];
165
- var g3 = Grad[perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32];
166
- var g4 = Grad[perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32];
167
- // Calculate the contribution from the five corners
168
- var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
169
- var n0 = t0 < 0
170
- ? 0.0
171
- : Math.pow(t0, 4) * (g0[0] * x0 + g0[1] * y0 + g0[2] * z0 + g0[3] * w0);
172
- var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
173
- var n1 = t1 < 0
174
- ? 0.0
175
- : Math.pow(t1, 4) * (g1[0] * x1 + g1[1] * y1 + g1[2] * z1 + g1[3] * w1);
176
- var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
177
- var n2 = t2 < 0
178
- ? 0.0
179
- : Math.pow(t2, 4) * (g2[0] * x2 + g2[1] * y2 + g2[2] * z2 + g2[3] * w2);
180
- var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
181
- var n3 = t3 < 0
182
- ? 0.0
183
- : Math.pow(t3, 4) * (g3[0] * x3 + g3[1] * y3 + g3[2] * z3 + g3[3] * w3);
184
- var t4 = 0.5 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
185
- var n4 = t4 < 0
186
- ? 0.0
187
- : Math.pow(t4, 4) * (g4[0] * x4 + g4[1] * y4 + g4[2] * z4 + g4[3] * w4);
188
- // Sum up and scale the result to cover the range [-1,1]
189
- return 72.37855765153665 * (n0 + n1 + n2 + n3 + n4);
190
- };
191
- }
192
- _4d.makeNoise4D = makeNoise4D;
193
- return _4d;
194
- }
195
-
196
- export { require_4d as __require };
@@ -1,24 +0,0 @@
1
- import { __exports as mod } from '../../../_virtual/mod2.js';
2
- import { __require as require_2d } from './2d.js';
3
- import { __require as require_3d } from './3d.js';
4
- import { __require as require_4d } from './4d.js';
5
-
6
- var hasRequiredMod;
7
-
8
- function requireMod () {
9
- if (hasRequiredMod) return mod;
10
- hasRequiredMod = 1;
11
- (function (exports$1) {
12
- Object.defineProperty(exports$1, "__esModule", { value: true });
13
- exports$1.makeNoise4D = exports$1.makeNoise3D = exports$1.makeNoise2D = void 0;
14
- var _2d_1 = require_2d();
15
- Object.defineProperty(exports$1, "makeNoise2D", { enumerable: true, get: function () { return _2d_1.makeNoise2D; } });
16
- var _3d_1 = require_3d();
17
- Object.defineProperty(exports$1, "makeNoise3D", { enumerable: true, get: function () { return _3d_1.makeNoise3D; } });
18
- var _4d_1 = require_4d();
19
- Object.defineProperty(exports$1, "makeNoise4D", { enumerable: true, get: function () { return _4d_1.makeNoise4D; } });
20
- } (mod));
21
- return mod;
22
- }
23
-
24
- export { requireMod as __require };
@@ -1,5 +0,0 @@
1
- export declare const CURRENT_EXPRESSION_VALUE_PLACEHOLDER = "CURRENT_EXPRESSION_VALUE_PLACEHOLDER";
2
- export declare const BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER = "BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER";
3
- export declare abstract class FXNode {
4
- destroy?(): void;
5
- }
@@ -1,10 +0,0 @@
1
- const CURRENT_EXPRESSION_VALUE_PLACEHOLDER = "CURRENT_EXPRESSION_VALUE_PLACEHOLDER";
2
- const BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER = "BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER";
3
- class FXNode {
4
- constructor() {
5
- /** @internal */
6
- this.affectsDepth = false;
7
- }
8
- }
9
-
10
- export { BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER, CURRENT_EXPRESSION_VALUE_PLACEHOLDER, FXNode };
@@ -1,6 +0,0 @@
1
- import { FXNode } from "../FXNode";
2
- /**
3
- * Abstract base class for particle color nodes
4
- */
5
- export declare abstract class FXNodeBlending extends FXNode {
6
- }
@@ -1,9 +0,0 @@
1
- import { FXNode } from '../FXNode.js';
2
-
3
- /**
4
- * Abstract base class for particle color nodes
5
- */
6
- class FXNodeBlending extends FXNode {
7
- }
8
-
9
- export { FXNodeBlending };
@@ -1,19 +0,0 @@
1
- import { FXNodeBlending } from "./FXNodeBlending";
2
- export declare class FXNodeLightnessBlendingMask extends FXNodeBlending {
3
- private uniformNameEdge0;
4
- private uniformNameEdge1;
5
- private edge0Internal;
6
- private edge1Internal;
7
- private isPrepared;
8
- /**
9
- * @param edge0 - brightness threshold where mask starts (below this: NormalBlending). Defaults to `0.3`
10
- * @param edge1 - brightness threshold where mask is fully active (above this: full FXBlending effect). Defaults to `0.7`
11
- */
12
- constructor(edge0?: number, edge1?: number);
13
- /** Brightness threshold where mask starts (below this: NormalBlending) */
14
- get edge0(): number;
15
- /** Brightness threshold where mask is fully active (above this: full FXBlending effect) */
16
- get edge1(): number;
17
- set edge0(value: number);
18
- set edge1(value: number);
19
- }
@@ -1,65 +0,0 @@
1
- import { assertValidNonNegativeNumber } from '../../miscellaneous/asserts.js';
2
- import { CURRENT_EXPRESSION_VALUE_PLACEHOLDER, BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER } from '../FXNode.js';
3
- import { FXNodeBlending } from './FXNodeBlending.js';
4
-
5
- class FXNodeLightnessBlendingMask extends FXNodeBlending {
6
- /**
7
- * @param edge0 - brightness threshold where mask starts (below this: NormalBlending). Defaults to `0.3`
8
- * @param edge1 - brightness threshold where mask is fully active (above this: full FXBlending effect). Defaults to `0.7`
9
- */
10
- constructor(edge0 = 0.3, edge1 = 0.7) {
11
- super();
12
- /** @internal */
13
- this.cacheKey = "lightness-blending-mask";
14
- this._private_isPrepared = false;
15
- assertValidNonNegativeNumber(edge0, "FXNodeLightnessBlendingMask.constructor.edge0");
16
- assertValidNonNegativeNumber(edge1, "FXNodeLightnessBlendingMask.constructor.edge1");
17
- this._private_edge0Internal = edge0;
18
- this._private_edge1Internal = edge1;
19
- }
20
- /** Brightness threshold where mask starts (below this: NormalBlending) */
21
- get edge0() {
22
- return this._private_edge0Internal;
23
- }
24
- /** Brightness threshold where mask is fully active (above this: full FXBlending effect) */
25
- get edge1() {
26
- return this._private_edge1Internal;
27
- }
28
- set edge0(value) {
29
- assertValidNonNegativeNumber(value, "FXNodeLightnessBlendingMask.edge0");
30
- this._private_edge0Internal = value;
31
- if (this._private_isPrepared) {
32
- this.uniforms[this._private_uniformNameEdge0].value = value;
33
- }
34
- }
35
- set edge1(value) {
36
- assertValidNonNegativeNumber(value, "FXNodeLightnessBlendingMask.edge1");
37
- this._private_edge1Internal = value;
38
- if (this._private_isPrepared) {
39
- this.uniforms[this._private_uniformNameEdge1].value = value;
40
- }
41
- }
42
- /** @internal */
43
- prepare(index) {
44
- this._private_uniformNameEdge0 = `u_LightnessBlendingMaskEdge0_${index}`;
45
- this._private_uniformNameEdge1 = `u_LightnessBlendingMaskEdge1_${index}`;
46
- this.uniformDeclarations = [
47
- `uniform float ${this._private_uniformNameEdge0};`,
48
- `uniform float ${this._private_uniformNameEdge1};`,
49
- ];
50
- this.uniforms = {
51
- [this._private_uniformNameEdge0]: { value: this._private_edge0Internal },
52
- [this._private_uniformNameEdge1]: { value: this._private_edge1Internal },
53
- };
54
- this.helperFunctions = `
55
- float fxLightnessBlendingMask(vec4 color, float edge0, float edge1) {
56
- float brightness = dot(color.rgb, vec3(0.2126, 0.7152, 0.0722));
57
- return smoothstep(edge0, edge1, brightness);
58
- }
59
- `;
60
- this.blendingExpression = `${CURRENT_EXPRESSION_VALUE_PLACEHOLDER} * fxLightnessBlendingMask(${BLENDING_EXPRESSION_CURRENT_COLOR_PLACEHOLDER}, ${this._private_uniformNameEdge0}, ${this._private_uniformNameEdge1})`;
61
- this._private_isPrepared = true;
62
- }
63
- }
64
-
65
- export { FXNodeLightnessBlendingMask };
@@ -1,6 +0,0 @@
1
- import { FXNode } from "../FXNode";
2
- /**
3
- * Abstract base class for particle color nodes
4
- */
5
- export declare abstract class FXNodeColor extends FXNode {
6
- }
@@ -1,9 +0,0 @@
1
- import { FXNode } from '../FXNode.js';
2
-
3
- /**
4
- * Abstract base class for particle color nodes
5
- */
6
- class FXNodeColor extends FXNode {
7
- }
8
-
9
- export { FXNodeColor };
@@ -1,22 +0,0 @@
1
- import type { FXColor } from "../../miscellaneous/color/FXColor";
2
- import type { FXCurve1DConfig } from "../../miscellaneous/curve/FXCurve1D";
3
- import { FXCurve1D } from "../../miscellaneous/curve/FXCurve1D";
4
- import { FXNodeColor } from "./FXNodeColor";
5
- /**
6
- * Color node that animates particle color along a gradient curve over its lifetime
7
- */
8
- export declare class FXNodeColorOverLife extends FXNodeColor {
9
- private uniformName;
10
- private gradientTexture;
11
- private curveInternal;
12
- private isPrepared;
13
- /**
14
- * @param curve - Color gradient defining the animation over the particle lifetime
15
- */
16
- constructor(curve: FXCurve1DConfig<FXColor>);
17
- /** Current color gradient curve */
18
- get curve(): FXCurve1D<FXColor>;
19
- set curve(value: FXCurve1DConfig<FXColor>);
20
- /** Releases the backing gradient texture */
21
- destroy(): void;
22
- }
@@ -1,64 +0,0 @@
1
- import { FXCurve1D } from '../../miscellaneous/curve/FXCurve1D.js';
2
- import { buildGradientTexture } from '../../miscellaneous/miscellaneous.js';
3
- import { checkSRGBSupport } from '../../miscellaneous/webglCapabilities.js';
4
- import { CURRENT_EXPRESSION_VALUE_PLACEHOLDER } from '../FXNode.js';
5
- import { FXNodeColor } from './FXNodeColor.js';
6
-
7
- /**
8
- * Color node that animates particle color along a gradient curve over its lifetime
9
- */
10
- class FXNodeColorOverLife extends FXNodeColor {
11
- /**
12
- * @param curve - Color gradient defining the animation over the particle lifetime
13
- */
14
- constructor(curve) {
15
- super();
16
- /** @internal */
17
- this.affectsDepth = true;
18
- /** @internal */
19
- this.cacheKey = "color-over-life";
20
- this._private_isPrepared = false;
21
- this._private_curveInternal = new FXCurve1D(curve);
22
- this._private_gradientTexture = buildGradientTexture(this._private_curveInternal);
23
- }
24
- /** Current color gradient curve */
25
- get curve() {
26
- return this._private_curveInternal;
27
- }
28
- set curve(value) {
29
- this._private_curveInternal = new FXCurve1D(value);
30
- this._private_gradientTexture.dispose();
31
- this._private_gradientTexture = buildGradientTexture(this._private_curveInternal);
32
- if (this._private_isPrepared) {
33
- this.uniforms[this._private_uniformName].value = this._private_gradientTexture;
34
- }
35
- }
36
- /** Releases the backing gradient texture */
37
- destroy() {
38
- this._private_gradientTexture.dispose();
39
- }
40
- /** @internal */
41
- prepare(index) {
42
- this._private_uniformName = `u_ColorOverLife_${index}`;
43
- this.uniformDeclarations = [`uniform sampler2D ${this._private_uniformName};`];
44
- this.uniforms = {
45
- [this._private_uniformName]: { value: this._private_gradientTexture },
46
- };
47
- this.helperFunctions = `
48
- vec4 fxSampleColorOverLife(sampler2D gradientTexture) {
49
- // Normalized particle age [0, 1] maps to the gradient texture's x-axis
50
- float lifetimeRatio = clamp(PARTICLE_AGE / PARTICLE_LIFETIME, 0.0, 1.0);
51
- vec4 color = texture2D(gradientTexture, vec2(lifetimeRatio, 0.5));
52
-
53
- // Apply gamma correction when sRGB textures are not natively supported
54
- ${checkSRGBSupport() ? "" : "color = vec4(pow(color.rgb, vec3(2.2)), color.a);"}
55
-
56
- return color;
57
- }
58
- `;
59
- this.colorExpression = `${CURRENT_EXPRESSION_VALUE_PLACEHOLDER} * fxSampleColorOverLife(${this._private_uniformName})`;
60
- this._private_isPrepared = true;
61
- }
62
- }
63
-
64
- export { FXNodeColorOverLife };