@3driseai/3drise-core 1.0.19 → 1.0.21

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/dist/animations/index.d.ts +2 -0
  2. package/dist/animations/index.d.ts.map +1 -0
  3. package/dist/animations/index.js +1 -0
  4. package/dist/animations/trackGenerators.d.ts +140 -0
  5. package/dist/animations/trackGenerators.d.ts.map +1 -0
  6. package/dist/animations/trackGenerators.js +443 -0
  7. package/dist/autoAnimate/bounds.d.ts +7 -0
  8. package/dist/autoAnimate/bounds.d.ts.map +1 -0
  9. package/dist/autoAnimate/bounds.js +23 -0
  10. package/dist/autoAnimate/composer.d.ts +30 -0
  11. package/dist/autoAnimate/composer.d.ts.map +1 -0
  12. package/dist/autoAnimate/composer.js +251 -0
  13. package/dist/autoAnimate/describeScene.d.ts +105 -0
  14. package/dist/autoAnimate/describeScene.d.ts.map +1 -0
  15. package/dist/autoAnimate/describeScene.js +165 -0
  16. package/dist/autoAnimate/draft.d.ts +59 -0
  17. package/dist/autoAnimate/draft.d.ts.map +1 -0
  18. package/dist/autoAnimate/draft.js +2 -0
  19. package/dist/autoAnimate/index.d.ts +14 -0
  20. package/dist/autoAnimate/index.d.ts.map +1 -0
  21. package/dist/autoAnimate/index.js +9 -0
  22. package/dist/autoAnimate/recipes.d.ts +87 -0
  23. package/dist/autoAnimate/recipes.d.ts.map +1 -0
  24. package/dist/autoAnimate/recipes.js +224 -0
  25. package/dist/autoAnimate/rng.d.ts +10 -0
  26. package/dist/autoAnimate/rng.d.ts.map +1 -0
  27. package/dist/autoAnimate/rng.js +16 -0
  28. package/dist/autoAnimate/sceneAnalyzer.d.ts +7 -0
  29. package/dist/autoAnimate/sceneAnalyzer.d.ts.map +1 -0
  30. package/dist/autoAnimate/sceneAnalyzer.js +291 -0
  31. package/dist/autoAnimate/types.d.ts +124 -0
  32. package/dist/autoAnimate/types.d.ts.map +1 -0
  33. package/dist/autoAnimate/types.js +1 -0
  34. package/dist/autoAnimate/validator.d.ts +10 -0
  35. package/dist/autoAnimate/validator.d.ts.map +1 -0
  36. package/dist/autoAnimate/validator.js +59 -0
  37. package/dist/data/effectsDefaults.d.ts +4 -0
  38. package/dist/data/effectsDefaults.d.ts.map +1 -1
  39. package/dist/data/effectsDefaults.js +393 -2
  40. package/dist/data/gridsDefaults.d.ts +5 -0
  41. package/dist/data/gridsDefaults.d.ts.map +1 -0
  42. package/dist/data/gridsDefaults.js +419 -0
  43. package/dist/data/index.d.ts +1 -0
  44. package/dist/data/index.d.ts.map +1 -1
  45. package/dist/data/index.js +1 -0
  46. package/dist/data/particlesDefaults.d.ts +3 -1
  47. package/dist/data/particlesDefaults.d.ts.map +1 -1
  48. package/dist/data/particlesDefaults.js +78 -0
  49. package/dist/environment/cloudConfigs.d.ts +313 -0
  50. package/dist/environment/cloudConfigs.d.ts.map +1 -0
  51. package/dist/environment/cloudConfigs.js +342 -0
  52. package/dist/environment/index.d.ts +5 -0
  53. package/dist/environment/index.d.ts.map +1 -0
  54. package/dist/environment/index.js +6 -0
  55. package/dist/environment/landscapeConfigs.d.ts +220 -0
  56. package/dist/environment/landscapeConfigs.d.ts.map +1 -0
  57. package/dist/environment/landscapeConfigs.js +256 -0
  58. package/dist/environment/oceanConfigs.d.ts +293 -0
  59. package/dist/environment/oceanConfigs.d.ts.map +1 -0
  60. package/dist/environment/oceanConfigs.js +380 -0
  61. package/dist/environment/terrainConfigs.d.ts +254 -0
  62. package/dist/environment/terrainConfigs.d.ts.map +1 -0
  63. package/dist/environment/terrainConfigs.js +292 -0
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/properties/index.d.ts +4 -0
  68. package/dist/properties/index.d.ts.map +1 -0
  69. package/dist/properties/index.js +3 -0
  70. package/dist/properties/registry.d.ts +44 -0
  71. package/dist/properties/registry.d.ts.map +1 -0
  72. package/dist/properties/registry.js +343 -0
  73. package/dist/properties/tables/effectsProperties.d.ts +40 -0
  74. package/dist/properties/tables/effectsProperties.d.ts.map +1 -0
  75. package/dist/properties/tables/effectsProperties.js +512 -0
  76. package/dist/properties/tables/geometryProperties.d.ts +38 -0
  77. package/dist/properties/tables/geometryProperties.d.ts.map +1 -0
  78. package/dist/properties/tables/geometryProperties.js +91 -0
  79. package/dist/properties/tables/getPropertyConfig.d.ts +3 -0
  80. package/dist/properties/tables/getPropertyConfig.d.ts.map +1 -0
  81. package/dist/properties/tables/getPropertyConfig.js +16 -0
  82. package/dist/properties/tables/gridProperties.d.ts +6 -0
  83. package/dist/properties/tables/gridProperties.d.ts.map +1 -0
  84. package/dist/properties/tables/gridProperties.js +199 -0
  85. package/dist/properties/tables/index.d.ts +8 -0
  86. package/dist/properties/tables/index.d.ts.map +1 -0
  87. package/dist/properties/tables/index.js +7 -0
  88. package/dist/properties/tables/lightProperties.d.ts +14 -0
  89. package/dist/properties/tables/lightProperties.d.ts.map +1 -0
  90. package/dist/properties/tables/lightProperties.js +263 -0
  91. package/dist/properties/tables/materialBounds.d.ts +33 -0
  92. package/dist/properties/tables/materialBounds.d.ts.map +1 -0
  93. package/dist/properties/tables/materialBounds.js +180 -0
  94. package/dist/properties/tables/optionalProperties.d.ts +83 -0
  95. package/dist/properties/tables/optionalProperties.d.ts.map +1 -0
  96. package/dist/properties/tables/optionalProperties.js +710 -0
  97. package/dist/properties/tables/particlesProperties.d.ts +17 -0
  98. package/dist/properties/tables/particlesProperties.d.ts.map +1 -0
  99. package/dist/properties/tables/particlesProperties.js +334 -0
  100. package/dist/properties/types.d.ts +43 -0
  101. package/dist/properties/types.d.ts.map +1 -0
  102. package/dist/properties/types.js +12 -0
  103. package/dist/services/ShadersLibrary.d.ts +1 -1
  104. package/dist/services/ShadersLibrary.d.ts.map +1 -1
  105. package/dist/shaders/ApollonianGridMaterial.d.ts +70 -0
  106. package/dist/shaders/ApollonianGridMaterial.d.ts.map +1 -0
  107. package/dist/shaders/ApollonianGridMaterial.js +289 -0
  108. package/dist/shaders/ConformalGridMaterial.d.ts +91 -0
  109. package/dist/shaders/ConformalGridMaterial.d.ts.map +1 -0
  110. package/dist/shaders/ConformalGridMaterial.js +335 -0
  111. package/dist/shaders/HilbertGridMaterial.d.ts +79 -0
  112. package/dist/shaders/HilbertGridMaterial.d.ts.map +1 -0
  113. package/dist/shaders/HilbertGridMaterial.js +329 -0
  114. package/dist/shaders/LensingGridMaterial.d.ts +73 -0
  115. package/dist/shaders/LensingGridMaterial.d.ts.map +1 -0
  116. package/dist/shaders/LensingGridMaterial.js +253 -0
  117. package/dist/shaders/ParastichyGridMaterial.d.ts +76 -0
  118. package/dist/shaders/ParastichyGridMaterial.d.ts.map +1 -0
  119. package/dist/shaders/ParastichyGridMaterial.js +282 -0
  120. package/dist/shaders/PhyllotaxisGridMaterial.d.ts +85 -0
  121. package/dist/shaders/PhyllotaxisGridMaterial.d.ts.map +1 -0
  122. package/dist/shaders/PhyllotaxisGridMaterial.js +532 -0
  123. package/dist/shaders/TruchetGridMaterial.d.ts +76 -0
  124. package/dist/shaders/TruchetGridMaterial.d.ts.map +1 -0
  125. package/dist/shaders/TruchetGridMaterial.js +290 -0
  126. package/dist/shaders/WallpaperGridMaterial.d.ts.map +1 -1
  127. package/dist/shaders/WallpaperGridMaterial.js +6 -1
  128. package/dist/shaders/index.d.ts +7 -0
  129. package/dist/shaders/index.d.ts.map +1 -1
  130. package/dist/shaders/index.js +7 -0
  131. package/dist/three/GalleryLayoutV.d.ts.map +1 -1
  132. package/dist/three/GalleryLayoutV.js +0 -10
  133. package/dist/three/SceneBuilderV.d.ts.map +1 -1
  134. package/dist/three/SceneBuilderV.js +1 -7
  135. package/dist/types/generativeEffects.d.ts +0 -4
  136. package/dist/types/generativeEffects.d.ts.map +1 -1
  137. package/dist/types/generativeParticles.d.ts +175 -2
  138. package/dist/types/generativeParticles.d.ts.map +1 -1
  139. package/dist/types/objectSettings.d.ts +45 -4
  140. package/dist/types/objectSettings.d.ts.map +1 -1
  141. package/dist/types/scene3d.d.ts +3 -3
  142. package/dist/types/scene3d.d.ts.map +1 -1
  143. package/dist/utils/generativeAnimatable.d.ts +1 -1
  144. package/dist/utils/generativeAnimatable.d.ts.map +1 -1
  145. package/dist/utils/generativeAnimatable.js +7 -1
  146. package/dist/utils/getAnimatableProperties.d.ts +12 -1
  147. package/dist/utils/getAnimatableProperties.d.ts.map +1 -1
  148. package/dist/utils/getAnimatableProperties.js +35 -138
  149. package/dist/utils/index.d.ts +1 -0
  150. package/dist/utils/index.d.ts.map +1 -1
  151. package/dist/utils/index.js +1 -0
  152. package/dist/utils/objectEffects.d.ts +6 -0
  153. package/dist/utils/objectEffects.d.ts.map +1 -0
  154. package/dist/utils/objectEffects.js +5 -0
  155. package/package.json +1 -1
@@ -0,0 +1,335 @@
1
+ import * as THREE from 'three';
2
+ import { shaderMaterial } from '@react-three/drei';
3
+ import { extend } from '@react-three/fiber';
4
+ export const conformalGridMaterialDefaults = {
5
+ u_time: 0,
6
+ u_cellSize: 2,
7
+ u_lineWidth: 1,
8
+ u_sectionSize: 4,
9
+ u_sectionWidth: 1.4,
10
+ u_lineColor: new THREE.Color('#2fb6c9'),
11
+ u_sectionColor: new THREE.Color('#c8fff4'),
12
+ u_cellColor: new THREE.Color('#1a2a78'),
13
+ u_glowColor: new THREE.Color('#9ff0ff'),
14
+ u_bgColor: new THREE.Color('#020a0f'),
15
+ u_bgOpacity: 0,
16
+ u_lineMode: 0,
17
+ u_cellMode: 0,
18
+ u_animSpeed: 1,
19
+ u_animScale: 0.5,
20
+ u_animIntensity: 0.8,
21
+ u_fadeDistance: 25,
22
+ u_fadeStrength: 0.7,
23
+ u_focus: new THREE.Vector2(0, 0),
24
+ u_mouse: new THREE.Vector2(0, 0),
25
+ u_displace: 0,
26
+ u_reveal: 1,
27
+ u_flowMap: 2,
28
+ u_poleSpread: 6,
29
+ u_spokes: 24,
30
+ u_arms: 3,
31
+ u_circulation: 1.2,
32
+ u_drift: 0.35,
33
+ u_fill: 0.5,
34
+ u_dye: 0.8,
35
+ u_flowPhase: 0,
36
+ };
37
+ const vertex = /* glsl */ `
38
+ uniform float u_time;
39
+ uniform float u_cellSize;
40
+ uniform float u_displace;
41
+ uniform float u_animSpeed;
42
+ uniform float u_animScale;
43
+
44
+ varying vec2 vGridPos;
45
+
46
+
47
+ const float PI = 3.14159265359;
48
+ const float TAU = 6.28318530718;
49
+
50
+ float hash21(vec2 p){
51
+ p = fract(p * vec2(123.34, 456.21));
52
+ p += dot(p, p + 45.32);
53
+ return fract(p.x * p.y);
54
+ }
55
+
56
+
57
+ void main(){
58
+ vGridPos = position.xy;
59
+ vec3 pos = position;
60
+ if (u_displace > 0.0){
61
+ float t = u_time * u_animSpeed;
62
+ float d = length(position.xy) / max(u_cellSize, 1e-4);
63
+ pos.z += sin(d * u_animScale - t) * u_displace;
64
+ }
65
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);
66
+ }
67
+ `;
68
+ const fragment = /* glsl */ `
69
+ precision highp float;
70
+
71
+ uniform float u_time;
72
+ uniform float u_cellSize;
73
+ uniform float u_lineWidth;
74
+ uniform float u_sectionSize;
75
+ uniform float u_sectionWidth;
76
+ uniform vec3 u_lineColor;
77
+ uniform vec3 u_sectionColor;
78
+ uniform vec3 u_cellColor;
79
+ uniform vec3 u_glowColor;
80
+ uniform vec3 u_bgColor;
81
+ uniform float u_bgOpacity;
82
+ uniform float u_lineMode;
83
+ uniform float u_cellMode;
84
+ uniform float u_animSpeed;
85
+ uniform float u_animScale;
86
+ uniform float u_animIntensity;
87
+ uniform float u_fadeDistance;
88
+ uniform float u_fadeStrength;
89
+ uniform vec2 u_focus;
90
+ uniform float u_reveal;
91
+
92
+ uniform float u_flowMap;
93
+ uniform float u_poleSpread;
94
+ uniform float u_spokes;
95
+ uniform float u_arms;
96
+ uniform float u_circulation;
97
+ uniform float u_fill;
98
+ uniform float u_dye;
99
+ uniform float u_flowPhase;
100
+
101
+ varying vec2 vGridPos;
102
+
103
+
104
+ const float PI = 3.14159265359;
105
+ const float TAU = 6.28318530718;
106
+
107
+ float hash21(vec2 p){
108
+ p = fract(p * vec2(123.34, 456.21));
109
+ p += dot(p, p + 45.32);
110
+ return fract(p.x * p.y);
111
+ }
112
+
113
+
114
+ float lineAt(float c, float width, float fp){
115
+ float d = abs(fract(c - 0.5) - 0.5);
116
+ return 1.0 - clamp(d / max(fp * max(width, 0.05), 1e-6), 0.0, 1.0);
117
+ }
118
+
119
+ vec2 cmul(vec2 a, vec2 b){ return vec2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); }
120
+ vec2 cdiv(vec2 a, vec2 b){ return vec2(a.x * b.x + a.y * b.y, a.y * b.x - a.x * b.y) / max(dot(b, b), 1e-8); }
121
+ vec2 clog(vec2 z){ return vec2(log(max(length(z), 1e-8)), atan(z.y, z.x)); }
122
+
123
+ void main(){
124
+ vec2 coord = vGridPos / max(u_cellSize, 1e-4);
125
+ vec2 focus = u_focus / max(u_cellSize, 1e-4);
126
+ float t = u_time * u_animSpeed;
127
+
128
+ // Ideal (potential) flow. Any analytic complex potential W(z) = phi + i psi
129
+ // gives equipotentials (phi) and streamlines (psi) that cross at right angles
130
+ // everywhere — the Cauchy–Riemann equations — so the lattice pulled back
131
+ // through W is a mesh of tiny squares however hard the map bends it. Four flows:
132
+ // 0 source + sink W = log((z-1)/(z+1)) bipolar circles, a Smith-chart look
133
+ // 1 spiral vortex W = log z, rotated so the 2*pi*i period lands on (arms, spokes)
134
+ // 2 cylinder W = z + 1/z + i G log z flow past a spinning cylinder (Magnus lift)
135
+ // 3 corner W = z^2 / 2 stagnation-point flow
136
+ // The colouring is the physics: |W'| is the flow speed, so fast water is lit
137
+ // and stagnation points go dark (Bernoulli: low pressure where it is fast).
138
+ // u_flowPhase slides the mesh along phi, so the dye moves with the flow and
139
+ // runs faster exactly where the streamlines crowd together.
140
+ float A = max(u_poleSpread, 1e-3);
141
+ vec2 z = vGridPos / A;
142
+ float fz = max(max(fwidth(z.x), fwidth(z.y)), 1e-6);
143
+ float N = max(2.0, floor(u_spokes + 0.5));
144
+ float M = floor(u_arms + 0.5);
145
+ float s = A / max(u_cellSize, 1e-4);
146
+ float mode = floor(u_flowMap + 0.5);
147
+
148
+ vec2 g; // (phi, psi) in lattice units
149
+ float sp; // flow speed |W'|, 1 = the reference speed of the flow
150
+ vec2 P = vec2(0.0); // lattice jump across the log branch cut (none: 0)
151
+ float inside = 1.0;
152
+ float pole = 0.0;
153
+ float pr = 0.45 / s; // pole glow radius in z units
154
+
155
+ if (mode < 0.5){
156
+ vec2 a = z - vec2(1.0, 0.0), b = z + vec2(1.0, 0.0);
157
+ float k = N / TAU;
158
+ g = clog(cdiv(a, b)) * k;
159
+ sp = 2.0 * k / s / max(length(a) * length(b), 1e-6); // |dg/dz| / s
160
+ g.x -= u_flowPhase;
161
+ P = vec2(0.0, N);
162
+ pole = exp(-dot(a, a) / (pr * pr)) + exp(-dot(b, b) / (pr * pr));
163
+ } else if (mode < 1.5){
164
+ float k = length(vec2(M, N)) / TAU;
165
+ float al = atan(-M, N);
166
+ vec2 w = clog(z);
167
+ w.x -= u_flowPhase / k;
168
+ g = k * vec2(cos(al) * w.x - sin(al) * w.y, sin(al) * w.x + cos(al) * w.y);
169
+ sp = k / s / max(length(z), 1e-6);
170
+ P = vec2(M, N);
171
+ pole = exp(-dot(z, z) / (pr * pr));
172
+ } else if (mode < 2.5){
173
+ // u_circulation is G in W = z + 1/z + i G log z: at |G| = 2 the two
174
+ // stagnation points meet under the cylinder. It is quantised to whole
175
+ // lattice cells (steps of 1/(2 pi s)) so the log seam closes up.
176
+ float nc = floor(u_circulation * TAU * s + 0.5);
177
+ float G = nc / (TAU * s);
178
+ vec2 lz = clog(z);
179
+ g = (z + cdiv(vec2(1.0, 0.0), z)) * s + nc / TAU * vec2(-lz.y, lz.x);
180
+ vec2 dW = vec2(1.0, 0.0) - cdiv(vec2(1.0, 0.0), cmul(z, z)) + cdiv(vec2(0.0, G), z);
181
+ sp = length(dW);
182
+ g.x -= u_flowPhase;
183
+ P = vec2(nc, 0.0);
184
+ float rz = length(z);
185
+ inside = smoothstep(1.0, 1.0 + 2.0 * fz, rz);
186
+ pole = exp(-pow((rz - 1.0) * s / 0.12, 2.0)) * 0.7;
187
+ } else {
188
+ g = 0.5 * cmul(z, z) * s;
189
+ sp = length(z);
190
+ g.x -= u_flowPhase;
191
+ pole = exp(-dot(z, z) / (pr * pr)) * 0.5;
192
+ }
193
+
194
+ float fp = max(sp * s * fz, 1e-6); // lattice units per pixel
195
+ float dens = (1.0 - smoothstep(0.2, 0.7, fp)) * inside;
196
+
197
+ // Streamlines lead; equipotentials sit behind them at a third of the weight.
198
+ float sl = lineAt(g.y, u_lineWidth, fp);
199
+ float ep = lineAt(g.x, u_lineWidth * 0.75, fp) * 0.35;
200
+ float lines = max(sl, ep) * dens;
201
+
202
+ float accent = 0.0;
203
+ if (u_sectionWidth > 0.0 && u_sectionSize > 0.0){
204
+ float fs = fp / u_sectionSize;
205
+ accent = lineAt(g.y / u_sectionSize, u_sectionWidth, fs) * (1.0 - smoothstep(0.2, 0.7, fs)) * inside;
206
+ }
207
+
208
+ // ---- the flow's own colouring ------------------------------------------
209
+ // speed ramp: slow water in cellColor, fast in lineColor, the fastest
210
+ // (round the poles, over the cylinder's shoulders) toward sectionColor
211
+ float sv = 1.0 - exp(-sp * 0.9);
212
+ vec3 flowCol = mix(u_cellColor, u_lineColor, smoothstep(0.15, 0.75, sv));
213
+ flowCol = mix(flowCol, u_sectionColor, smoothstep(0.75, 1.0, sv) * 0.6);
214
+ // stream tubes: every other tube carries dye, with soft walls
215
+ float tube = smoothstep(-0.55, 0.55, sin(PI * g.y));
216
+ tube = mix(0.5, tube, dens); // tubes thinner than a pixel go neutral
217
+ float body = (0.3 + 0.7 * tube) * u_fill * inside * (1.0 - smoothstep(0.5, 1.2, fp));
218
+
219
+ // hydrogen-bubble timelines: short dashes on every streamline, carried by
220
+ // the flow — they stretch where it speeds up and bunch where it stalls
221
+ float head = pow(fract(g.x * 0.5), 5.0);
222
+ float core = exp(-pow(abs(fract(g.y - 0.5) - 0.5) / (fp * max(u_lineWidth, 0.05) * 1.8), 2.0));
223
+ float dye = head * core * u_dye * dens;
224
+
225
+ vec2 id = floor(g);
226
+ vec2 fr = fract(g);
227
+ float dmin = min(min(fr.x, 1.0 - fr.x), min(fr.y, 1.0 - fr.y)) * dens;
228
+ vec2 key = id;
229
+ if (dot(P, P) > 0.5) key = vec2(id.x * P.y - id.y * P.x, mod(dot(id, P), dot(P, P)));
230
+ float cellH = hash21(key * 0.0173 + 3.1);
231
+ float idAcc = id.x * 10.0;
232
+ vec2 cellPos = coord;
233
+ float tone = step(0.5, tube);
234
+
235
+ // additive output is col * a, so the fill carries its alpha in full
236
+ vec3 extraCol = flowCol * body + u_glowColor * (dye * 1.4 + pole * 1.1);
237
+ float extraA = max(body, dye) + pole * 0.8;
238
+
239
+ // ---- line animation --------------------------------------------------
240
+ float lineAnim = 1.0;
241
+ // Mode 0 is static: the chain starts at 0.5 so 0 never falls into flow.
242
+ if (u_lineMode < 0.5){
243
+ } else if (u_lineMode < 1.5){
244
+ lineAnim = 0.5 + 0.5 * sin(length(cellPos - focus) * u_animScale - t);
245
+ } else if (u_lineMode < 2.5){
246
+ lineAnim = 0.5 + 0.5 * sin(dot(cellPos, vec2(0.5, 0.5)) * u_animScale - t);
247
+ } else if (u_lineMode < 3.5){
248
+ float s = fract((coord.x + coord.y) * 0.05 * u_animScale - t * 0.15);
249
+ lineAnim = 0.25 + smoothstep(0.0, 0.15, s) * (1.0 - smoothstep(0.15, 0.35, s));
250
+ } else if (u_lineMode < 4.5){
251
+ lineAnim = 0.5 + 0.5 * sin(t);
252
+ }
253
+ lineAnim = mix(1.0, lineAnim, u_animIntensity);
254
+
255
+ // ---- cell fill -------------------------------------------------------
256
+ float cell = 0.0;
257
+ if (u_cellMode < 0.5){
258
+ } else if (u_cellMode < 1.5){
259
+ cell = 0.5 + 0.5 * sin(idAcc * 0.05 * u_animScale - t);
260
+ } else if (u_cellMode < 2.5){
261
+ cell = 0.5 + 0.5 * sin(t * (0.6 + cellH) + cellH * TAU);
262
+ } else if (u_cellMode < 3.5){
263
+ cell = smoothstep(0.6, 1.0, sin(length(cellPos - focus) * u_animScale - t));
264
+ } else if (u_cellMode < 4.5){
265
+ cell = step(0.5, cellH) * (0.5 + 0.5 * sin(t));
266
+ }
267
+ cell *= u_animIntensity;
268
+ cell *= smoothstep(0.0, 0.16, dmin); // keep the fill off its own edges
269
+
270
+ float r = length(vGridPos) / max(u_fadeDistance, 1e-4);
271
+ float fade = 1.0 - smoothstep(1.0 - u_fadeStrength, 1.0, r);
272
+
273
+ vec3 col = u_bgColor * u_bgOpacity;
274
+ float a = u_bgOpacity;
275
+
276
+ col += mix(u_cellColor, u_cellColor * 2.2, tone) * cell;
277
+ a = max(a, cell * 0.9);
278
+ float linesI = lines * lineAnim;
279
+ col += u_lineColor * linesI; a = max(a, linesI);
280
+ float accentI = accent * lineAnim;
281
+ col += u_sectionColor * accentI; a = max(a, accentI);
282
+ col += u_glowColor * (linesI * 0.2 + cell * 0.35) * u_animIntensity;
283
+ col += extraCol; a = max(a, extraA);
284
+
285
+ col *= fade;
286
+ a *= fade;
287
+
288
+ // ---- reveal ----------------------------------------------------------
289
+ if (u_reveal < 0.999){
290
+ float rd = length(vGridPos - u_focus) / max(u_fadeDistance, 1e-4);
291
+ float edge = u_reveal * 1.1;
292
+ float mask = 1.0 - smoothstep(edge - 0.05, edge, rd);
293
+ float front = mask * smoothstep(edge - 0.22, edge - 0.05, rd);
294
+ col = col * mask + u_glowColor * front * (a * 1.8 + 0.08);
295
+ a = max(a * mask, front * 0.10);
296
+ }
297
+
298
+ if (a < 0.002) discard;
299
+ gl_FragColor = vec4(col, a);
300
+ }
301
+ `;
302
+ export const ConformalGridMaterial = shaderMaterial({
303
+ u_time: conformalGridMaterialDefaults.u_time,
304
+ u_cellSize: conformalGridMaterialDefaults.u_cellSize,
305
+ u_lineWidth: conformalGridMaterialDefaults.u_lineWidth,
306
+ u_sectionSize: conformalGridMaterialDefaults.u_sectionSize,
307
+ u_sectionWidth: conformalGridMaterialDefaults.u_sectionWidth,
308
+ u_lineColor: conformalGridMaterialDefaults.u_lineColor.clone(),
309
+ u_sectionColor: conformalGridMaterialDefaults.u_sectionColor.clone(),
310
+ u_cellColor: conformalGridMaterialDefaults.u_cellColor.clone(),
311
+ u_glowColor: conformalGridMaterialDefaults.u_glowColor.clone(),
312
+ u_bgColor: conformalGridMaterialDefaults.u_bgColor.clone(),
313
+ u_bgOpacity: conformalGridMaterialDefaults.u_bgOpacity,
314
+ u_lineMode: conformalGridMaterialDefaults.u_lineMode,
315
+ u_cellMode: conformalGridMaterialDefaults.u_cellMode,
316
+ u_animSpeed: conformalGridMaterialDefaults.u_animSpeed,
317
+ u_animScale: conformalGridMaterialDefaults.u_animScale,
318
+ u_animIntensity: conformalGridMaterialDefaults.u_animIntensity,
319
+ u_fadeDistance: conformalGridMaterialDefaults.u_fadeDistance,
320
+ u_fadeStrength: conformalGridMaterialDefaults.u_fadeStrength,
321
+ u_focus: conformalGridMaterialDefaults.u_focus.clone(),
322
+ u_mouse: conformalGridMaterialDefaults.u_mouse.clone(),
323
+ u_displace: conformalGridMaterialDefaults.u_displace,
324
+ u_reveal: conformalGridMaterialDefaults.u_reveal,
325
+ u_flowMap: conformalGridMaterialDefaults.u_flowMap,
326
+ u_poleSpread: conformalGridMaterialDefaults.u_poleSpread,
327
+ u_spokes: conformalGridMaterialDefaults.u_spokes,
328
+ u_arms: conformalGridMaterialDefaults.u_arms,
329
+ u_circulation: conformalGridMaterialDefaults.u_circulation,
330
+ u_drift: conformalGridMaterialDefaults.u_drift,
331
+ u_fill: conformalGridMaterialDefaults.u_fill,
332
+ u_dye: conformalGridMaterialDefaults.u_dye,
333
+ u_flowPhase: conformalGridMaterialDefaults.u_flowPhase,
334
+ }, vertex, fragment);
335
+ extend({ ConformalGridMaterial });
@@ -0,0 +1,79 @@
1
+ import * as THREE from 'three';
2
+ export interface HilbertGridMaterialUniforms {
3
+ /** elapsed seconds (useGridSurface) */
4
+ u_time: number;
5
+ /** size of one cell, in world units */
6
+ u_cellSize: number;
7
+ /** line thickness, in pixels */
8
+ u_lineWidth: number;
9
+ u_sectionSize: number;
10
+ /** accent thickness, in pixels; 0 disables the layer */
11
+ u_sectionWidth: number;
12
+ u_lineColor: THREE.Color;
13
+ u_sectionColor: THREE.Color;
14
+ u_cellColor: THREE.Color;
15
+ u_glowColor: THREE.Color;
16
+ u_bgColor: THREE.Color;
17
+ u_bgOpacity: number;
18
+ u_lineMode: number;
19
+ u_cellMode: number;
20
+ u_animSpeed: number;
21
+ u_animScale: number;
22
+ u_animIntensity: number;
23
+ u_fadeDistance: number;
24
+ u_fadeStrength: number;
25
+ /** ripple / reveal origin; stays at the origin */
26
+ u_focus: THREE.Vector2;
27
+ u_mouse: THREE.Vector2;
28
+ u_displace: number;
29
+ /** 0..1 assemble / dissolve */
30
+ u_reveal: number;
31
+ /** Curve order: the loop covers 2^order cells per side */
32
+ u_order: number;
33
+ /** Signals circulating round the loop */
34
+ u_signals: number;
35
+ /** Length of each signal trail, in cells */
36
+ u_trail: number;
37
+ /** Signal speed, in cells per second */
38
+ u_signalSpeed: number;
39
+ /** accumulated on the CPU from signalSpeed (never multiplied by time in the shader) */
40
+ u_signalPhase: number;
41
+ }
42
+ declare module '@react-three/fiber' {
43
+ interface ThreeElements {
44
+ hilbertGridMaterial: ThreeElements['shaderMaterial'] & Partial<HilbertGridMaterialUniforms>;
45
+ }
46
+ }
47
+ export declare const hilbertGridMaterialDefaults: HilbertGridMaterialUniforms;
48
+ export declare const HilbertGridMaterial: import("@react-three/fiber").ConstructorRepresentation<THREE.ShaderMaterial & {
49
+ u_time: number;
50
+ u_cellSize: number;
51
+ u_lineWidth: number;
52
+ u_sectionSize: number;
53
+ u_sectionWidth: number;
54
+ u_lineColor: THREE.Color;
55
+ u_sectionColor: THREE.Color;
56
+ u_cellColor: THREE.Color;
57
+ u_glowColor: THREE.Color;
58
+ u_bgColor: THREE.Color;
59
+ u_bgOpacity: number;
60
+ u_lineMode: number;
61
+ u_cellMode: number;
62
+ u_animSpeed: number;
63
+ u_animScale: number;
64
+ u_animIntensity: number;
65
+ u_fadeDistance: number;
66
+ u_fadeStrength: number;
67
+ u_focus: THREE.Vector2;
68
+ u_mouse: THREE.Vector2;
69
+ u_displace: number;
70
+ u_reveal: number;
71
+ u_order: number;
72
+ u_signals: number;
73
+ u_trail: number;
74
+ u_signalSpeed: number;
75
+ u_signalPhase: number;
76
+ }> & {
77
+ key: string;
78
+ };
79
+ //# sourceMappingURL=HilbertGridMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HilbertGridMaterial.d.ts","sourceRoot":"","sources":["../../src/shaders/HilbertGridMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,MAAM,WAAW,2BAA2B;IACxC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC;IAC5B,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;IACzB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,OAAO,QAAQ,oBAAoB,CAAC;IAChC,UAAU,aAAa;QACnB,mBAAmB,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;KAC/F;CACJ;AAED,eAAO,MAAM,2BAA2B,EAAE,2BA4BzC,CAAC;AA+QF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC/B,CAAC"}