@vib3code/sdk 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
  3. package/DOCS/CI_TESTING.md +38 -0
  4. package/DOCS/CLI_ONBOARDING.md +75 -0
  5. package/DOCS/CONTROL_REFERENCE.md +64 -0
  6. package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
  7. package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
  8. package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
  9. package/DOCS/ENV_SETUP.md +189 -0
  10. package/DOCS/EXPORT_FORMATS.md +417 -0
  11. package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
  12. package/DOCS/LICENSING_TIERS.md +275 -0
  13. package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
  14. package/DOCS/OBS_SETUP_GUIDE.md +98 -0
  15. package/DOCS/PROJECT_SETUP.md +66 -0
  16. package/DOCS/RENDERER_LIFECYCLE.md +40 -0
  17. package/DOCS/REPO_MANIFEST.md +121 -0
  18. package/DOCS/SESSION_014_PLAN.md +195 -0
  19. package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
  20. package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
  21. package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
  22. package/DOCS/SYSTEM_INVENTORY.md +520 -0
  23. package/DOCS/TELEMETRY_EXPORTS.md +34 -0
  24. package/DOCS/WEBGPU_STATUS.md +38 -0
  25. package/DOCS/XR_BENCHMARKS.md +608 -0
  26. package/LICENSE +21 -0
  27. package/README.md +426 -0
  28. package/docs/.nojekyll +0 -0
  29. package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
  30. package/docs/02-hyperspatial_ego_death.html +346 -0
  31. package/docs/03-post_cartesian_sublime.html +346 -0
  32. package/docs/04-crystalline_void_meditation.html +346 -0
  33. package/docs/05-quantum_decoherence_ballet.html +346 -0
  34. package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
  35. package/docs/07-hyperspatial_ego_death.html +346 -0
  36. package/docs/08-post_cartesian_sublime.html +346 -0
  37. package/docs/09-crystalline_void_meditation.html +346 -0
  38. package/docs/10-quantum_decoherence_ballet.html +346 -0
  39. package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
  40. package/docs/12-hyperspatial_ego_death.html +346 -0
  41. package/docs/13-post_cartesian_sublime.html +346 -0
  42. package/docs/index.html +794 -0
  43. package/docs/test-hub.html +441 -0
  44. package/docs/url-state.js +102 -0
  45. package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
  46. package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
  47. package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
  48. package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
  49. package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
  50. package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
  51. package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
  52. package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
  53. package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
  54. package/docs/vib3-exports/index.html +238 -0
  55. package/docs/webgpu-live.html +702 -0
  56. package/package.json +367 -0
  57. package/src/advanced/AIPresetGenerator.js +777 -0
  58. package/src/advanced/MIDIController.js +703 -0
  59. package/src/advanced/OffscreenWorker.js +1051 -0
  60. package/src/advanced/WebGPUCompute.js +1051 -0
  61. package/src/advanced/WebXRRenderer.js +680 -0
  62. package/src/agent/cli/AgentCLI.js +615 -0
  63. package/src/agent/cli/index.js +14 -0
  64. package/src/agent/index.js +73 -0
  65. package/src/agent/mcp/MCPServer.js +950 -0
  66. package/src/agent/mcp/index.js +9 -0
  67. package/src/agent/mcp/tools.js +548 -0
  68. package/src/agent/telemetry/EventStream.js +669 -0
  69. package/src/agent/telemetry/Instrumentation.js +618 -0
  70. package/src/agent/telemetry/TelemetryExporters.js +427 -0
  71. package/src/agent/telemetry/TelemetryService.js +464 -0
  72. package/src/agent/telemetry/index.js +52 -0
  73. package/src/benchmarks/BenchmarkRunner.js +381 -0
  74. package/src/benchmarks/MetricsCollector.js +299 -0
  75. package/src/benchmarks/index.js +9 -0
  76. package/src/benchmarks/scenes.js +259 -0
  77. package/src/cli/index.js +675 -0
  78. package/src/config/ApiConfig.js +88 -0
  79. package/src/core/CanvasManager.js +217 -0
  80. package/src/core/ErrorReporter.js +117 -0
  81. package/src/core/ParameterMapper.js +333 -0
  82. package/src/core/Parameters.js +396 -0
  83. package/src/core/RendererContracts.js +200 -0
  84. package/src/core/UnifiedResourceManager.js +370 -0
  85. package/src/core/VIB3Engine.js +636 -0
  86. package/src/core/renderers/FacetedRendererAdapter.js +32 -0
  87. package/src/core/renderers/HolographicRendererAdapter.js +29 -0
  88. package/src/core/renderers/QuantumRendererAdapter.js +29 -0
  89. package/src/core/renderers/RendererLifecycleManager.js +63 -0
  90. package/src/creative/ColorPresetsSystem.js +980 -0
  91. package/src/creative/ParameterTimeline.js +1061 -0
  92. package/src/creative/PostProcessingPipeline.js +1113 -0
  93. package/src/creative/TransitionAnimator.js +683 -0
  94. package/src/export/CSSExporter.js +226 -0
  95. package/src/export/CardGeneratorBase.js +279 -0
  96. package/src/export/ExportManager.js +580 -0
  97. package/src/export/FacetedCardGenerator.js +279 -0
  98. package/src/export/HolographicCardGenerator.js +543 -0
  99. package/src/export/LottieExporter.js +552 -0
  100. package/src/export/QuantumCardGenerator.js +315 -0
  101. package/src/export/SVGExporter.js +519 -0
  102. package/src/export/ShaderExporter.js +903 -0
  103. package/src/export/TradingCardGenerator.js +3055 -0
  104. package/src/export/TradingCardManager.js +181 -0
  105. package/src/export/VIB3PackageExporter.js +559 -0
  106. package/src/export/index.js +14 -0
  107. package/src/export/systems/TradingCardSystemFaceted.js +494 -0
  108. package/src/export/systems/TradingCardSystemHolographic.js +452 -0
  109. package/src/export/systems/TradingCardSystemQuantum.js +411 -0
  110. package/src/faceted/FacetedSystem.js +963 -0
  111. package/src/features/CollectionManager.js +433 -0
  112. package/src/gallery/CollectionManager.js +240 -0
  113. package/src/gallery/GallerySystem.js +485 -0
  114. package/src/geometry/GeometryFactory.js +314 -0
  115. package/src/geometry/GeometryLibrary.js +72 -0
  116. package/src/geometry/buffers/BufferBuilder.js +338 -0
  117. package/src/geometry/buffers/index.js +18 -0
  118. package/src/geometry/generators/Crystal.js +420 -0
  119. package/src/geometry/generators/Fractal.js +298 -0
  120. package/src/geometry/generators/KleinBottle.js +197 -0
  121. package/src/geometry/generators/Sphere.js +192 -0
  122. package/src/geometry/generators/Tesseract.js +160 -0
  123. package/src/geometry/generators/Tetrahedron.js +225 -0
  124. package/src/geometry/generators/Torus.js +304 -0
  125. package/src/geometry/generators/Wave.js +341 -0
  126. package/src/geometry/index.js +142 -0
  127. package/src/geometry/warp/HypersphereCore.js +211 -0
  128. package/src/geometry/warp/HypertetraCore.js +386 -0
  129. package/src/geometry/warp/index.js +57 -0
  130. package/src/holograms/HolographicVisualizer.js +1073 -0
  131. package/src/holograms/RealHolographicSystem.js +966 -0
  132. package/src/holograms/variantRegistry.js +69 -0
  133. package/src/integrations/FigmaPlugin.js +854 -0
  134. package/src/integrations/OBSMode.js +754 -0
  135. package/src/integrations/ThreeJsPackage.js +660 -0
  136. package/src/integrations/TouchDesignerExport.js +552 -0
  137. package/src/integrations/frameworks/Vib3React.js +591 -0
  138. package/src/integrations/frameworks/Vib3Svelte.js +654 -0
  139. package/src/integrations/frameworks/Vib3Vue.js +628 -0
  140. package/src/llm/LLMParameterInterface.js +240 -0
  141. package/src/llm/LLMParameterUI.js +577 -0
  142. package/src/math/Mat4x4.js +708 -0
  143. package/src/math/Projection.js +341 -0
  144. package/src/math/Rotor4D.js +637 -0
  145. package/src/math/Vec4.js +476 -0
  146. package/src/math/constants.js +164 -0
  147. package/src/math/index.js +68 -0
  148. package/src/math/projections.js +54 -0
  149. package/src/math/rotations.js +196 -0
  150. package/src/quantum/QuantumEngine.js +906 -0
  151. package/src/quantum/QuantumVisualizer.js +1103 -0
  152. package/src/reactivity/ReactivityConfig.js +499 -0
  153. package/src/reactivity/ReactivityManager.js +586 -0
  154. package/src/reactivity/SpatialInputSystem.js +1783 -0
  155. package/src/reactivity/index.js +93 -0
  156. package/src/render/CommandBuffer.js +465 -0
  157. package/src/render/MultiCanvasBridge.js +340 -0
  158. package/src/render/RenderCommand.js +514 -0
  159. package/src/render/RenderResourceRegistry.js +523 -0
  160. package/src/render/RenderState.js +552 -0
  161. package/src/render/RenderTarget.js +512 -0
  162. package/src/render/ShaderLoader.js +253 -0
  163. package/src/render/ShaderProgram.js +599 -0
  164. package/src/render/UnifiedRenderBridge.js +496 -0
  165. package/src/render/backends/WebGLBackend.js +1108 -0
  166. package/src/render/backends/WebGPUBackend.js +1409 -0
  167. package/src/render/commands/CommandBufferExecutor.js +607 -0
  168. package/src/render/commands/RenderCommandBuffer.js +661 -0
  169. package/src/render/commands/index.js +17 -0
  170. package/src/render/index.js +367 -0
  171. package/src/scene/Disposable.js +498 -0
  172. package/src/scene/MemoryPool.js +618 -0
  173. package/src/scene/Node4D.js +697 -0
  174. package/src/scene/ResourceManager.js +599 -0
  175. package/src/scene/Scene4D.js +540 -0
  176. package/src/scene/index.js +98 -0
  177. package/src/schemas/error.schema.json +84 -0
  178. package/src/schemas/extension.schema.json +88 -0
  179. package/src/schemas/index.js +214 -0
  180. package/src/schemas/parameters.schema.json +142 -0
  181. package/src/schemas/tool-pack.schema.json +44 -0
  182. package/src/schemas/tool-response.schema.json +127 -0
  183. package/src/shaders/common/fullscreen.vert.glsl +5 -0
  184. package/src/shaders/common/fullscreen.vert.wgsl +17 -0
  185. package/src/shaders/common/geometry24.glsl +65 -0
  186. package/src/shaders/common/geometry24.wgsl +54 -0
  187. package/src/shaders/common/rotation4d.glsl +85 -0
  188. package/src/shaders/common/rotation4d.wgsl +86 -0
  189. package/src/shaders/common/uniforms.glsl +44 -0
  190. package/src/shaders/common/uniforms.wgsl +48 -0
  191. package/src/shaders/faceted/faceted.frag.glsl +129 -0
  192. package/src/shaders/faceted/faceted.frag.wgsl +164 -0
  193. package/src/shaders/holographic/holographic.frag.glsl +406 -0
  194. package/src/shaders/holographic/holographic.frag.wgsl +185 -0
  195. package/src/shaders/quantum/quantum.frag.glsl +513 -0
  196. package/src/shaders/quantum/quantum.frag.wgsl +361 -0
  197. package/src/testing/ParallelTestFramework.js +519 -0
  198. package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
  199. package/src/testing/exportFormats.test.js +8 -0
  200. package/src/testing/projections.test.js +14 -0
  201. package/src/testing/rotations.test.js +37 -0
  202. package/src/ui/InteractivityMenu.js +516 -0
  203. package/src/ui/StatusManager.js +96 -0
  204. package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
  205. package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
  206. package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
  207. package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
  208. package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
  209. package/src/variations/VariationManager.js +431 -0
  210. package/src/viewer/AudioReactivity.js +505 -0
  211. package/src/viewer/CardBending.js +481 -0
  212. package/src/viewer/GalleryUI.js +832 -0
  213. package/src/viewer/ReactivityManager.js +590 -0
  214. package/src/viewer/TradingCardExporter.js +600 -0
  215. package/src/viewer/ViewerPortal.js +374 -0
  216. package/src/viewer/index.js +12 -0
  217. package/src/wasm/WasmLoader.js +296 -0
  218. package/src/wasm/index.js +132 -0
  219. package/tools/agentic/mcpTools.js +88 -0
  220. package/tools/cli/agent-cli.js +92 -0
  221. package/tools/export/formats.js +24 -0
  222. package/tools/math/rotation-baseline.mjs +64 -0
  223. package/tools/shader-sync-verify.js +937 -0
  224. package/tools/telemetry/manifestPipeline.js +141 -0
  225. package/tools/telemetry/telemetryEvents.js +35 -0
  226. package/types/adaptive-sdk.d.ts +185 -0
  227. package/types/advanced/AIPresetGenerator.d.ts +81 -0
  228. package/types/advanced/MIDIController.d.ts +100 -0
  229. package/types/advanced/OffscreenWorker.d.ts +82 -0
  230. package/types/advanced/WebGPUCompute.d.ts +52 -0
  231. package/types/advanced/WebXRRenderer.d.ts +77 -0
  232. package/types/advanced/index.d.ts +46 -0
  233. package/types/core/ErrorReporter.d.ts +50 -0
  234. package/types/core/VIB3Engine.d.ts +204 -0
  235. package/types/creative/ColorPresetsSystem.d.ts +91 -0
  236. package/types/creative/ParameterTimeline.d.ts +74 -0
  237. package/types/creative/PostProcessingPipeline.d.ts +109 -0
  238. package/types/creative/TransitionAnimator.d.ts +71 -0
  239. package/types/creative/index.d.ts +35 -0
  240. package/types/integrations/FigmaPlugin.d.ts +46 -0
  241. package/types/integrations/OBSMode.d.ts +74 -0
  242. package/types/integrations/ThreeJsPackage.d.ts +62 -0
  243. package/types/integrations/TouchDesignerExport.d.ts +36 -0
  244. package/types/integrations/Vib3React.d.ts +74 -0
  245. package/types/integrations/Vib3Svelte.d.ts +63 -0
  246. package/types/integrations/Vib3Vue.d.ts +55 -0
  247. package/types/integrations/index.d.ts +52 -0
  248. package/types/reactivity/SpatialInputSystem.d.ts +173 -0
  249. package/types/reactivity/index.d.ts +394 -0
  250. package/types/render/CommandBuffer.d.ts +169 -0
  251. package/types/render/RenderCommand.d.ts +312 -0
  252. package/types/render/RenderState.d.ts +279 -0
  253. package/types/render/RenderTarget.d.ts +254 -0
  254. package/types/render/ShaderProgram.d.ts +277 -0
  255. package/types/render/UnifiedRenderBridge.d.ts +143 -0
  256. package/types/render/WebGLBackend.d.ts +168 -0
  257. package/types/render/WebGPUBackend.d.ts +186 -0
  258. package/types/render/index.d.ts +141 -0
@@ -0,0 +1,65 @@
1
+ // VIB3+ 24 Geometry SDF Library (GLSL)
2
+ // 8 base + 8 Hypersphere Core + 8 Hypertetrahedron Core
3
+
4
+ // Base geometry SDFs (0-7)
5
+ float baseGeometry(vec4 p, float type) {
6
+ if (type < 0.5) {
7
+ // 0: Tetrahedron
8
+ return max(max(max(abs(p.x + p.y) - p.z, abs(p.x - p.y) - p.z),
9
+ abs(p.x + p.y) + p.z), abs(p.x - p.y) + p.z) / sqrt(3.0);
10
+ } else if (type < 1.5) {
11
+ // 1: Hypercube
12
+ vec4 q = abs(p) - 0.8;
13
+ return length(max(q, 0.0)) + min(max(max(max(q.x, q.y), q.z), q.w), 0.0);
14
+ } else if (type < 2.5) {
15
+ // 2: Sphere
16
+ return length(p) - 1.0;
17
+ } else if (type < 3.5) {
18
+ // 3: Torus
19
+ vec2 t = vec2(length(p.xy) - 0.8, p.z);
20
+ return length(t) - 0.3;
21
+ } else if (type < 4.5) {
22
+ // 4: Klein Bottle (simplified)
23
+ float r = length(p.xy);
24
+ return abs(r - 0.7) - 0.2 + sin(atan(p.y, p.x) * 3.0 + p.z * 5.0) * 0.1;
25
+ } else if (type < 5.5) {
26
+ // 5: Fractal (Mandelbulb approximation)
27
+ return length(p) - 0.8 + sin(p.x * 5.0) * sin(p.y * 5.0) * sin(p.z * 5.0) * 0.2;
28
+ } else if (type < 6.5) {
29
+ // 6: Wave
30
+ return abs(p.z - sin(p.x * 5.0 + u_time) * cos(p.y * 5.0 + u_time) * 0.3) - 0.1;
31
+ } else {
32
+ // 7: Crystal
33
+ vec4 q = abs(p);
34
+ return max(max(max(q.x, q.y), q.z), q.w) - 0.8;
35
+ }
36
+ }
37
+
38
+ // Hypersphere Core wrapper (8-15)
39
+ float hypersphereCore(vec4 p, float baseType) {
40
+ float baseShape = baseGeometry(p, baseType);
41
+ float sphereField = length(p) - 1.2;
42
+ return max(baseShape, sphereField);
43
+ }
44
+
45
+ // Hypertetrahedron Core wrapper (16-23)
46
+ float hypertetrahedronCore(vec4 p, float baseType) {
47
+ float baseShape = baseGeometry(p, baseType);
48
+ float tetraField = max(max(max(
49
+ abs(p.x + p.y) - p.z - p.w,
50
+ abs(p.x - p.y) - p.z + p.w),
51
+ abs(p.x + p.y) + p.z - p.w),
52
+ abs(p.x - p.y) + p.z + p.w) / sqrt(4.0);
53
+ return max(baseShape, tetraField);
54
+ }
55
+
56
+ // Main geometry dispatcher (0-23)
57
+ float geometry(vec4 p, float type) {
58
+ if (type < 8.0) {
59
+ return baseGeometry(p, type);
60
+ } else if (type < 16.0) {
61
+ return hypersphereCore(p, type - 8.0);
62
+ } else {
63
+ return hypertetrahedronCore(p, type - 16.0);
64
+ }
65
+ }
@@ -0,0 +1,54 @@
1
+ // VIB3+ 24 Geometry SDF Library (WGSL)
2
+ // 8 base + 8 Hypersphere Core + 8 Hypertetrahedron Core
3
+
4
+ fn baseGeometry(p: vec4<f32>, t: f32) -> f32 {
5
+ if (t < 0.5) {
6
+ // 0: Tetrahedron
7
+ return max(max(max(abs(p.x + p.y) - p.z, abs(p.x - p.y) - p.z),
8
+ abs(p.x + p.y) + p.z), abs(p.x - p.y) + p.z) / sqrt(3.0);
9
+ } else if (t < 1.5) {
10
+ // 1: Hypercube
11
+ let q = abs(p) - vec4<f32>(0.8);
12
+ return length(max(q, vec4<f32>(0.0))) + min(max(max(max(q.x, q.y), q.z), q.w), 0.0);
13
+ } else if (t < 2.5) {
14
+ // 2: Sphere
15
+ return length(p) - 1.0;
16
+ } else if (t < 3.5) {
17
+ // 3: Torus
18
+ let t2 = vec2<f32>(length(p.xy) - 0.8, p.z);
19
+ return length(t2) - 0.3;
20
+ } else if (t < 4.5) {
21
+ // 4: Klein Bottle (simplified)
22
+ let r = length(p.xy);
23
+ return abs(r - 0.7) - 0.2 + sin(atan2(p.y, p.x) * 3.0 + p.z * 5.0) * 0.1;
24
+ } else if (t < 5.5) {
25
+ // 5: Fractal (Mandelbulb approximation)
26
+ return length(p) - 0.8 + sin(p.x * 5.0) * sin(p.y * 5.0) * sin(p.z * 5.0) * 0.2;
27
+ } else if (t < 6.5) {
28
+ // 6: Wave
29
+ return abs(p.z - sin(p.x * 5.0 + u.time) * cos(p.y * 5.0 + u.time) * 0.3) - 0.1;
30
+ } else {
31
+ // 7: Crystal
32
+ let q = abs(p);
33
+ return max(max(max(q.x, q.y), q.z), q.w) - 0.8;
34
+ }
35
+ }
36
+
37
+ fn hypersphereCore(p: vec4<f32>, baseType: f32) -> f32 {
38
+ return max(baseGeometry(p, baseType), length(p) - 1.2);
39
+ }
40
+
41
+ fn hypertetrahedronCore(p: vec4<f32>, baseType: f32) -> f32 {
42
+ let tf = max(max(max(
43
+ abs(p.x + p.y) - p.z - p.w,
44
+ abs(p.x - p.y) - p.z + p.w),
45
+ abs(p.x + p.y) + p.z - p.w),
46
+ abs(p.x - p.y) + p.z + p.w) / sqrt(4.0);
47
+ return max(baseGeometry(p, baseType), tf);
48
+ }
49
+
50
+ fn geometry(p: vec4<f32>, t: f32) -> f32 {
51
+ if (t < 8.0) { return baseGeometry(p, t); }
52
+ else if (t < 16.0) { return hypersphereCore(p, t - 8.0); }
53
+ else { return hypertetrahedronCore(p, t - 16.0); }
54
+ }
@@ -0,0 +1,85 @@
1
+ // VIB3+ 6D Rotation Functions (GLSL)
2
+ // 3D space: XY, XZ, YZ | 4D hyperspace: XW, YW, ZW
3
+
4
+ mat4 rotateXY(float angle) {
5
+ float c = cos(angle);
6
+ float s = sin(angle);
7
+ return mat4(
8
+ c, -s, 0, 0,
9
+ s, c, 0, 0,
10
+ 0, 0, 1, 0,
11
+ 0, 0, 0, 1
12
+ );
13
+ }
14
+
15
+ mat4 rotateXZ(float angle) {
16
+ float c = cos(angle);
17
+ float s = sin(angle);
18
+ return mat4(
19
+ c, 0, -s, 0,
20
+ 0, 1, 0, 0,
21
+ s, 0, c, 0,
22
+ 0, 0, 0, 1
23
+ );
24
+ }
25
+
26
+ mat4 rotateYZ(float angle) {
27
+ float c = cos(angle);
28
+ float s = sin(angle);
29
+ return mat4(
30
+ 1, 0, 0, 0,
31
+ 0, c, -s, 0,
32
+ 0, s, c, 0,
33
+ 0, 0, 0, 1
34
+ );
35
+ }
36
+
37
+ mat4 rotateXW(float angle) {
38
+ float c = cos(angle);
39
+ float s = sin(angle);
40
+ return mat4(
41
+ c, 0, 0, -s,
42
+ 0, 1, 0, 0,
43
+ 0, 0, 1, 0,
44
+ s, 0, 0, c
45
+ );
46
+ }
47
+
48
+ mat4 rotateYW(float angle) {
49
+ float c = cos(angle);
50
+ float s = sin(angle);
51
+ return mat4(
52
+ 1, 0, 0, 0,
53
+ 0, c, 0, -s,
54
+ 0, 0, 1, 0,
55
+ 0, s, 0, c
56
+ );
57
+ }
58
+
59
+ mat4 rotateZW(float angle) {
60
+ float c = cos(angle);
61
+ float s = sin(angle);
62
+ return mat4(
63
+ 1, 0, 0, 0,
64
+ 0, 1, 0, 0,
65
+ 0, 0, c, -s,
66
+ 0, 0, s, c
67
+ );
68
+ }
69
+
70
+ // Apply all 6 rotations in canonical order: XY -> XZ -> YZ -> XW -> YW -> ZW
71
+ vec4 apply6DRotation(vec4 pos) {
72
+ pos = rotateXY(u_rot4dXY) * pos;
73
+ pos = rotateXZ(u_rot4dXZ) * pos;
74
+ pos = rotateYZ(u_rot4dYZ) * pos;
75
+ pos = rotateXW(u_rot4dXW) * pos;
76
+ pos = rotateYW(u_rot4dYW) * pos;
77
+ pos = rotateZW(u_rot4dZW) * pos;
78
+ return pos;
79
+ }
80
+
81
+ // 4D -> 3D perspective projection
82
+ vec3 project4Dto3D(vec4 p) {
83
+ float w = u_dimension / (u_dimension + p.w);
84
+ return vec3(p.x * w, p.y * w, p.z * w);
85
+ }
@@ -0,0 +1,86 @@
1
+ // VIB3+ 6D Rotation Functions (WGSL)
2
+ // 3D space: XY, XZ, YZ | 4D hyperspace: XW, YW, ZW
3
+
4
+ fn rotateXY(angle: f32) -> mat4x4<f32> {
5
+ let c = cos(angle);
6
+ let s = sin(angle);
7
+ return mat4x4<f32>(
8
+ vec4<f32>(c, -s, 0.0, 0.0),
9
+ vec4<f32>(s, c, 0.0, 0.0),
10
+ vec4<f32>(0.0, 0.0, 1.0, 0.0),
11
+ vec4<f32>(0.0, 0.0, 0.0, 1.0)
12
+ );
13
+ }
14
+
15
+ fn rotateXZ(angle: f32) -> mat4x4<f32> {
16
+ let c = cos(angle);
17
+ let s = sin(angle);
18
+ return mat4x4<f32>(
19
+ vec4<f32>(c, 0.0, -s, 0.0),
20
+ vec4<f32>(0.0, 1.0, 0.0, 0.0),
21
+ vec4<f32>(s, 0.0, c, 0.0),
22
+ vec4<f32>(0.0, 0.0, 0.0, 1.0)
23
+ );
24
+ }
25
+
26
+ fn rotateYZ(angle: f32) -> mat4x4<f32> {
27
+ let c = cos(angle);
28
+ let s = sin(angle);
29
+ return mat4x4<f32>(
30
+ vec4<f32>(1.0, 0.0, 0.0, 0.0),
31
+ vec4<f32>(0.0, c, -s, 0.0),
32
+ vec4<f32>(0.0, s, c, 0.0),
33
+ vec4<f32>(0.0, 0.0, 0.0, 1.0)
34
+ );
35
+ }
36
+
37
+ fn rotateXW(angle: f32) -> mat4x4<f32> {
38
+ let c = cos(angle);
39
+ let s = sin(angle);
40
+ return mat4x4<f32>(
41
+ vec4<f32>(c, 0.0, 0.0, -s),
42
+ vec4<f32>(0.0, 1.0, 0.0, 0.0),
43
+ vec4<f32>(0.0, 0.0, 1.0, 0.0),
44
+ vec4<f32>(s, 0.0, 0.0, c)
45
+ );
46
+ }
47
+
48
+ fn rotateYW(angle: f32) -> mat4x4<f32> {
49
+ let c = cos(angle);
50
+ let s = sin(angle);
51
+ return mat4x4<f32>(
52
+ vec4<f32>(1.0, 0.0, 0.0, 0.0),
53
+ vec4<f32>(0.0, c, 0.0, -s),
54
+ vec4<f32>(0.0, 0.0, 1.0, 0.0),
55
+ vec4<f32>(0.0, s, 0.0, c)
56
+ );
57
+ }
58
+
59
+ fn rotateZW(angle: f32) -> mat4x4<f32> {
60
+ let c = cos(angle);
61
+ let s = sin(angle);
62
+ return mat4x4<f32>(
63
+ vec4<f32>(1.0, 0.0, 0.0, 0.0),
64
+ vec4<f32>(0.0, 1.0, 0.0, 0.0),
65
+ vec4<f32>(0.0, 0.0, c, -s),
66
+ vec4<f32>(0.0, 0.0, s, c)
67
+ );
68
+ }
69
+
70
+ // Apply all 6 rotations in canonical order: XY -> XZ -> YZ -> XW -> YW -> ZW
71
+ fn apply6DRotation(pos: vec4<f32>) -> vec4<f32> {
72
+ var p = pos;
73
+ p = rotateXY(u.rot4dXY) * p;
74
+ p = rotateXZ(u.rot4dXZ) * p;
75
+ p = rotateYZ(u.rot4dYZ) * p;
76
+ p = rotateXW(u.rot4dXW) * p;
77
+ p = rotateYW(u.rot4dYW) * p;
78
+ p = rotateZW(u.rot4dZW) * p;
79
+ return p;
80
+ }
81
+
82
+ // 4D -> 3D perspective projection
83
+ fn project4Dto3D(p: vec4<f32>) -> vec3<f32> {
84
+ let w = u.dimension / (u.dimension + p.w);
85
+ return vec3<f32>(p.x * w, p.y * w, p.z * w);
86
+ }
@@ -0,0 +1,44 @@
1
+ // VIB3+ Common Uniform Declarations (GLSL)
2
+ // Shared across all visualization systems
3
+
4
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
5
+ precision highp float;
6
+ #else
7
+ precision mediump float;
8
+ #endif
9
+
10
+ uniform float u_time;
11
+ uniform vec2 u_resolution;
12
+ uniform float u_geometry;
13
+
14
+ // 6D Rotation (radians)
15
+ uniform float u_rot4dXY;
16
+ uniform float u_rot4dXZ;
17
+ uniform float u_rot4dYZ;
18
+ uniform float u_rot4dXW;
19
+ uniform float u_rot4dYW;
20
+ uniform float u_rot4dZW;
21
+
22
+ // Visual parameters
23
+ uniform float u_dimension;
24
+ uniform float u_gridDensity;
25
+ uniform float u_morphFactor;
26
+ uniform float u_chaos;
27
+ uniform float u_speed;
28
+ uniform float u_hue;
29
+ uniform float u_intensity;
30
+ uniform float u_saturation;
31
+
32
+ // Reactivity
33
+ uniform float u_mouseIntensity;
34
+ uniform float u_clickIntensity;
35
+ uniform float u_bass;
36
+ uniform float u_mid;
37
+ uniform float u_high;
38
+
39
+ // Layer parameters (holographic multi-layer)
40
+ uniform float u_layerScale;
41
+ uniform float u_layerOpacity;
42
+ uniform vec3 u_layerColor;
43
+ uniform float u_densityMult;
44
+ uniform float u_speedMult;
@@ -0,0 +1,48 @@
1
+ // VIB3+ Common Uniform Struct (WGSL)
2
+ // Shared across all visualization systems
3
+
4
+ struct VIB3Uniforms {
5
+ // Time and resolution
6
+ time: f32,
7
+ _pad0: f32,
8
+ resolution: vec2<f32>,
9
+
10
+ // Geometry selection (0-23)
11
+ geometry: f32,
12
+
13
+ // 6D Rotation (radians)
14
+ rot4dXY: f32,
15
+ rot4dXZ: f32,
16
+ rot4dYZ: f32,
17
+ rot4dXW: f32,
18
+ rot4dYW: f32,
19
+ rot4dZW: f32,
20
+
21
+ // Visual parameters
22
+ dimension: f32,
23
+ gridDensity: f32,
24
+ morphFactor: f32,
25
+ chaos: f32,
26
+ speed: f32,
27
+ hue: f32,
28
+ intensity: f32,
29
+ saturation: f32,
30
+
31
+ // Reactivity
32
+ mouseIntensity: f32,
33
+ clickIntensity: f32,
34
+ bass: f32,
35
+ mid: f32,
36
+ high: f32,
37
+
38
+ // Layer parameters (holographic multi-layer)
39
+ layerScale: f32,
40
+ layerOpacity: f32,
41
+ _pad1: f32,
42
+ layerColor: vec3<f32>,
43
+ densityMult: f32,
44
+ speedMult: f32,
45
+ _pad2: vec3<f32>,
46
+ };
47
+
48
+ @group(0) @binding(0) var<uniform> u: VIB3Uniforms;
@@ -0,0 +1,129 @@
1
+ // VIB3+ Faceted System Fragment Shader (GLSL)
2
+ // Clean 2D geometric patterns with 4D rotation projection
3
+ // 24 geometry variants: 8 base + 8 Hypersphere Core + 8 Hypertetrahedron Core
4
+ precision highp float;
5
+
6
+ uniform float u_time;
7
+ uniform vec2 u_resolution;
8
+ uniform float u_geometry; // 0-23
9
+
10
+ // 6D Rotation uniforms
11
+ uniform float u_rot4dXY;
12
+ uniform float u_rot4dXZ;
13
+ uniform float u_rot4dYZ;
14
+ uniform float u_rot4dXW;
15
+ uniform float u_rot4dYW;
16
+ uniform float u_rot4dZW;
17
+
18
+ uniform float u_dimension;
19
+ uniform float u_gridDensity;
20
+ uniform float u_morphFactor;
21
+ uniform float u_chaos;
22
+ uniform float u_hue;
23
+ uniform float u_intensity;
24
+
25
+ // ========== 6D Rotation ==========
26
+ mat4 rotateXY(float angle) {
27
+ float c = cos(angle), s = sin(angle);
28
+ return mat4(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
29
+ }
30
+ mat4 rotateXZ(float angle) {
31
+ float c = cos(angle), s = sin(angle);
32
+ return mat4(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);
33
+ }
34
+ mat4 rotateYZ(float angle) {
35
+ float c = cos(angle), s = sin(angle);
36
+ return mat4(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);
37
+ }
38
+ mat4 rotateXW(float angle) {
39
+ float c = cos(angle), s = sin(angle);
40
+ return mat4(c, 0, 0, -s, 0, 1, 0, 0, 0, 0, 1, 0, s, 0, 0, c);
41
+ }
42
+ mat4 rotateYW(float angle) {
43
+ float c = cos(angle), s = sin(angle);
44
+ return mat4(1, 0, 0, 0, 0, c, 0, -s, 0, 0, 1, 0, 0, s, 0, c);
45
+ }
46
+ mat4 rotateZW(float angle) {
47
+ float c = cos(angle), s = sin(angle);
48
+ return mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, c, -s, 0, 0, s, c);
49
+ }
50
+
51
+ vec4 apply6DRotation(vec4 pos) {
52
+ pos = rotateXY(u_rot4dXY + u_time * 0.05) * pos;
53
+ pos = rotateXZ(u_rot4dXZ + u_time * 0.06) * pos;
54
+ pos = rotateYZ(u_rot4dYZ + u_time * 0.04) * pos;
55
+ pos = rotateXW(u_rot4dXW + u_time * 0.07) * pos;
56
+ pos = rotateYW(u_rot4dYW + u_time * 0.08) * pos;
57
+ pos = rotateZW(u_rot4dZW + u_time * 0.09) * pos;
58
+ return pos;
59
+ }
60
+
61
+ // ========== 24 Geometry SDFs ==========
62
+ float baseGeometry(vec4 p, float type) {
63
+ if (type < 0.5) {
64
+ return max(max(max(abs(p.x + p.y) - p.z, abs(p.x - p.y) - p.z),
65
+ abs(p.x + p.y) + p.z), abs(p.x - p.y) + p.z) / sqrt(3.0);
66
+ } else if (type < 1.5) {
67
+ vec4 q = abs(p) - 0.8;
68
+ return length(max(q, 0.0)) + min(max(max(max(q.x, q.y), q.z), q.w), 0.0);
69
+ } else if (type < 2.5) {
70
+ return length(p) - 1.0;
71
+ } else if (type < 3.5) {
72
+ vec2 t = vec2(length(p.xy) - 0.8, p.z);
73
+ return length(t) - 0.3;
74
+ } else if (type < 4.5) {
75
+ float r = length(p.xy);
76
+ return abs(r - 0.7) - 0.2 + sin(atan(p.y, p.x) * 3.0 + p.z * 5.0) * 0.1;
77
+ } else if (type < 5.5) {
78
+ return length(p) - 0.8 + sin(p.x * 5.0) * sin(p.y * 5.0) * sin(p.z * 5.0) * 0.2;
79
+ } else if (type < 6.5) {
80
+ return abs(p.z - sin(p.x * 5.0 + u_time) * cos(p.y * 5.0 + u_time) * 0.3) - 0.1;
81
+ } else {
82
+ vec4 q = abs(p);
83
+ return max(max(max(q.x, q.y), q.z), q.w) - 0.8;
84
+ }
85
+ }
86
+
87
+ float hypersphereCore(vec4 p, float baseType) {
88
+ return max(baseGeometry(p, baseType), length(p) - 1.2);
89
+ }
90
+
91
+ float hypertetrahedronCore(vec4 p, float baseType) {
92
+ float tetraField = max(max(max(
93
+ abs(p.x + p.y) - p.z - p.w,
94
+ abs(p.x - p.y) - p.z + p.w),
95
+ abs(p.x + p.y) + p.z - p.w),
96
+ abs(p.x - p.y) + p.z + p.w) / sqrt(4.0);
97
+ return max(baseGeometry(p, baseType), tetraField);
98
+ }
99
+
100
+ float geometry(vec4 p, float type) {
101
+ if (type < 8.0) { return baseGeometry(p, type); }
102
+ else if (type < 16.0) { return hypersphereCore(p, type - 8.0); }
103
+ else { return hypertetrahedronCore(p, type - 16.0); }
104
+ }
105
+
106
+ // ========== Main Fragment ==========
107
+ void main() {
108
+ vec2 uv = (gl_FragCoord.xy - 0.5 * u_resolution.xy) / min(u_resolution.x, u_resolution.y);
109
+ uv *= 2.0 / u_gridDensity;
110
+
111
+ vec4 pos = vec4(uv, sin(u_time * 0.3) * 0.5, cos(u_time * 0.2) * 0.5);
112
+ pos = apply6DRotation(pos);
113
+ pos *= u_morphFactor;
114
+ pos += vec4(sin(u_time * 0.1), cos(u_time * 0.15), sin(u_time * 0.12), cos(u_time * 0.18)) * u_chaos;
115
+
116
+ float dist = geometry(pos, u_geometry);
117
+ float edge = smoothstep(0.02, 0.0, abs(dist));
118
+ float fill = smoothstep(0.1, 0.0, dist) * 0.3;
119
+
120
+ float hueVal = u_hue / 360.0 + dist * 0.2 + u_time * 0.05;
121
+ vec3 color = vec3(
122
+ 0.5 + 0.5 * cos(hueVal * 6.28),
123
+ 0.5 + 0.5 * cos((hueVal + 0.33) * 6.28),
124
+ 0.5 + 0.5 * cos((hueVal + 0.67) * 6.28)
125
+ );
126
+
127
+ float alpha = (edge + fill) * u_intensity;
128
+ gl_FragColor = vec4(color * alpha, alpha);
129
+ }
@@ -0,0 +1,164 @@
1
+ // VIB3+ Faceted System Fragment Shader (WGSL)
2
+ // Clean 2D geometric patterns with 4D rotation projection
3
+ // 24 geometry variants: 8 base + 8 Hypersphere Core + 8 Hypertetrahedron Core
4
+
5
+ struct VIB3Uniforms {
6
+ time: f32,
7
+ _pad0: f32,
8
+ resolution: vec2<f32>,
9
+ geometry: f32,
10
+ rot4dXY: f32,
11
+ rot4dXZ: f32,
12
+ rot4dYZ: f32,
13
+ rot4dXW: f32,
14
+ rot4dYW: f32,
15
+ rot4dZW: f32,
16
+ dimension: f32,
17
+ gridDensity: f32,
18
+ morphFactor: f32,
19
+ chaos: f32,
20
+ speed: f32,
21
+ hue: f32,
22
+ intensity: f32,
23
+ saturation: f32,
24
+ mouseIntensity: f32,
25
+ clickIntensity: f32,
26
+ bass: f32,
27
+ mid: f32,
28
+ high: f32,
29
+ layerScale: f32,
30
+ layerOpacity: f32,
31
+ _pad1: f32,
32
+ layerColor: vec3<f32>,
33
+ densityMult: f32,
34
+ speedMult: f32,
35
+ _pad2: vec3<f32>,
36
+ };
37
+
38
+ @group(0) @binding(0) var<uniform> u: VIB3Uniforms;
39
+
40
+ struct VertexOutput {
41
+ @builtin(position) position: vec4<f32>,
42
+ @location(0) uv: vec2<f32>,
43
+ };
44
+
45
+ // ========== 6D Rotation ==========
46
+ fn rotateXY(angle: f32) -> mat4x4<f32> {
47
+ let c = cos(angle); let s = sin(angle);
48
+ return mat4x4<f32>(
49
+ vec4<f32>(c, -s, 0.0, 0.0), vec4<f32>(s, c, 0.0, 0.0),
50
+ vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));
51
+ }
52
+ fn rotateXZ(angle: f32) -> mat4x4<f32> {
53
+ let c = cos(angle); let s = sin(angle);
54
+ return mat4x4<f32>(
55
+ vec4<f32>(c, 0.0, -s, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0),
56
+ vec4<f32>(s, 0.0, c, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));
57
+ }
58
+ fn rotateYZ(angle: f32) -> mat4x4<f32> {
59
+ let c = cos(angle); let s = sin(angle);
60
+ return mat4x4<f32>(
61
+ vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, c, -s, 0.0),
62
+ vec4<f32>(0.0, s, c, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0));
63
+ }
64
+ fn rotateXW(angle: f32) -> mat4x4<f32> {
65
+ let c = cos(angle); let s = sin(angle);
66
+ return mat4x4<f32>(
67
+ vec4<f32>(c, 0.0, 0.0, -s), vec4<f32>(0.0, 1.0, 0.0, 0.0),
68
+ vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(s, 0.0, 0.0, c));
69
+ }
70
+ fn rotateYW(angle: f32) -> mat4x4<f32> {
71
+ let c = cos(angle); let s = sin(angle);
72
+ return mat4x4<f32>(
73
+ vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, c, 0.0, -s),
74
+ vec4<f32>(0.0, 0.0, 1.0, 0.0), vec4<f32>(0.0, s, 0.0, c));
75
+ }
76
+ fn rotateZW(angle: f32) -> mat4x4<f32> {
77
+ let c = cos(angle); let s = sin(angle);
78
+ return mat4x4<f32>(
79
+ vec4<f32>(1.0, 0.0, 0.0, 0.0), vec4<f32>(0.0, 1.0, 0.0, 0.0),
80
+ vec4<f32>(0.0, 0.0, c, -s), vec4<f32>(0.0, 0.0, s, c));
81
+ }
82
+
83
+ fn apply6DRot(pos: vec4<f32>) -> vec4<f32> {
84
+ var p = pos;
85
+ p = rotateXY(u.rot4dXY + u.time * 0.05) * p;
86
+ p = rotateXZ(u.rot4dXZ + u.time * 0.06) * p;
87
+ p = rotateYZ(u.rot4dYZ + u.time * 0.04) * p;
88
+ p = rotateXW(u.rot4dXW + u.time * 0.07) * p;
89
+ p = rotateYW(u.rot4dYW + u.time * 0.08) * p;
90
+ p = rotateZW(u.rot4dZW + u.time * 0.09) * p;
91
+ return p;
92
+ }
93
+
94
+ // ========== 24 Geometry SDFs ==========
95
+ fn baseGeom(p: vec4<f32>, t: f32) -> f32 {
96
+ if (t < 0.5) {
97
+ return max(max(max(abs(p.x + p.y) - p.z, abs(p.x - p.y) - p.z),
98
+ abs(p.x + p.y) + p.z), abs(p.x - p.y) + p.z) / sqrt(3.0);
99
+ } else if (t < 1.5) {
100
+ let q = abs(p) - vec4<f32>(0.8);
101
+ return length(max(q, vec4<f32>(0.0))) + min(max(max(max(q.x, q.y), q.z), q.w), 0.0);
102
+ } else if (t < 2.5) {
103
+ return length(p) - 1.0;
104
+ } else if (t < 3.5) {
105
+ let t2 = vec2<f32>(length(p.xy) - 0.8, p.z);
106
+ return length(t2) - 0.3;
107
+ } else if (t < 4.5) {
108
+ let r = length(p.xy);
109
+ return abs(r - 0.7) - 0.2 + sin(atan2(p.y, p.x) * 3.0 + p.z * 5.0) * 0.1;
110
+ } else if (t < 5.5) {
111
+ return length(p) - 0.8 + sin(p.x * 5.0) * sin(p.y * 5.0) * sin(p.z * 5.0) * 0.2;
112
+ } else if (t < 6.5) {
113
+ return abs(p.z - sin(p.x * 5.0 + u.time) * cos(p.y * 5.0 + u.time) * 0.3) - 0.1;
114
+ } else {
115
+ let q = abs(p);
116
+ return max(max(max(q.x, q.y), q.z), q.w) - 0.8;
117
+ }
118
+ }
119
+
120
+ fn hypersphereCore(p: vec4<f32>, bt: f32) -> f32 {
121
+ return max(baseGeom(p, bt), length(p) - 1.2);
122
+ }
123
+
124
+ fn hypertetraCore(p: vec4<f32>, bt: f32) -> f32 {
125
+ let tf = max(max(max(
126
+ abs(p.x + p.y) - p.z - p.w,
127
+ abs(p.x - p.y) - p.z + p.w),
128
+ abs(p.x + p.y) + p.z - p.w),
129
+ abs(p.x - p.y) + p.z + p.w) / sqrt(4.0);
130
+ return max(baseGeom(p, bt), tf);
131
+ }
132
+
133
+ fn geom(p: vec4<f32>, t: f32) -> f32 {
134
+ if (t < 8.0) { return baseGeom(p, t); }
135
+ else if (t < 16.0) { return hypersphereCore(p, t - 8.0); }
136
+ else { return hypertetraCore(p, t - 16.0); }
137
+ }
138
+
139
+ // ========== Main Fragment ==========
140
+ @fragment
141
+ fn main(input: VertexOutput) -> @location(0) vec4<f32> {
142
+ let fragCoord = input.position.xy;
143
+ var uv2 = (fragCoord - 0.5 * u.resolution) / min(u.resolution.x, u.resolution.y);
144
+ uv2 *= 2.0 / u.gridDensity;
145
+
146
+ var pos = vec4<f32>(uv2, sin(u.time * 0.3) * 0.5, cos(u.time * 0.2) * 0.5);
147
+ pos = apply6DRot(pos);
148
+ pos *= u.morphFactor;
149
+ pos += vec4<f32>(sin(u.time * 0.1), cos(u.time * 0.15), sin(u.time * 0.12), cos(u.time * 0.18)) * u.chaos;
150
+
151
+ let dist = geom(pos, u.geometry);
152
+ let edge = smoothstep(0.02, 0.0, abs(dist));
153
+ let fill = smoothstep(0.1, 0.0, dist) * 0.3;
154
+
155
+ let hueVal = u.hue / 360.0 + dist * 0.2 + u.time * 0.05;
156
+ let color = vec3<f32>(
157
+ 0.5 + 0.5 * cos(hueVal * 6.28),
158
+ 0.5 + 0.5 * cos((hueVal + 0.33) * 6.28),
159
+ 0.5 + 0.5 * cos((hueVal + 0.67) * 6.28)
160
+ );
161
+
162
+ let alpha = (edge + fill) * u.intensity;
163
+ return vec4<f32>(color * alpha, alpha);
164
+ }