@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,543 @@
1
+ /**
2
+ * Holographic Trading Card Generator
3
+ * Matches the actual holographic engine parameters and look exactly
4
+ */
5
+ import { CardGeneratorBase } from './CardGeneratorBase.js';
6
+
7
+ export class HolographicCardGenerator extends CardGeneratorBase {
8
+ constructor() {
9
+ super('Holographic');
10
+ }
11
+
12
+ getSystemShaders() {
13
+ // Use the EXACT same shaders as the holographic engine
14
+ return {
15
+ vertex: `
16
+ attribute vec2 a_position;
17
+ void main() {
18
+ gl_Position = vec4(a_position, 0.0, 1.0);
19
+ }
20
+ `,
21
+ fragment: `
22
+ precision highp float;
23
+
24
+ uniform vec2 u_resolution;
25
+ uniform float u_time;
26
+ uniform vec2 u_mouse;
27
+ uniform float u_geometry;
28
+ uniform float u_density;
29
+ uniform float u_speed;
30
+ uniform vec3 u_color;
31
+ uniform float u_intensity;
32
+ uniform float u_roleDensity;
33
+ uniform float u_roleSpeed;
34
+ uniform float u_colorShift;
35
+ uniform float u_chaosIntensity;
36
+ uniform float u_mouseIntensity;
37
+ uniform float u_clickIntensity;
38
+ uniform float u_densityVariation;
39
+ uniform float u_geometryType;
40
+ uniform float u_chaos;
41
+ uniform float u_morph;
42
+ uniform float u_touchMorph;
43
+ uniform float u_touchChaos;
44
+ uniform float u_scrollParallax;
45
+ uniform float u_gridDensityShift;
46
+ uniform float u_colorScrollShift;
47
+ uniform float u_audioDensityBoost;
48
+ uniform float u_audioMorphBoost;
49
+ uniform float u_audioSpeedBoost;
50
+ uniform float u_audioChaosBoost;
51
+ uniform float u_audioColorShift;
52
+ uniform float u_rot4dXW;
53
+ uniform float u_rot4dYW;
54
+ uniform float u_rot4dZW;
55
+
56
+ // 4D rotation matrices
57
+ mat4 rotateXW(float theta) {
58
+ float c = cos(theta);
59
+ float s = sin(theta);
60
+ return mat4(c, 0, 0, -s, 0, 1, 0, 0, 0, 0, 1, 0, s, 0, 0, c);
61
+ }
62
+
63
+ mat4 rotateYW(float theta) {
64
+ float c = cos(theta);
65
+ float s = sin(theta);
66
+ return mat4(1, 0, 0, 0, 0, c, 0, -s, 0, 0, 1, 0, 0, s, 0, c);
67
+ }
68
+
69
+ mat4 rotateZW(float theta) {
70
+ float c = cos(theta);
71
+ float s = sin(theta);
72
+ return mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, c, -s, 0, 0, s, c);
73
+ }
74
+
75
+ // 4D to 3D projection
76
+ vec3 project4Dto3D(vec4 p) {
77
+ float w = 2.5 / (2.5 + p.w);
78
+ return vec3(p.x * w, p.y * w, p.z * w);
79
+ }
80
+
81
+ // Enhanced VIB3 Geometry Library - Higher Fidelity (MATCHING ENGINE)
82
+ float tetrahedronLattice(vec3 p, float gridSize) {
83
+ vec3 q = fract(p * gridSize) - 0.5;
84
+
85
+ // Enhanced tetrahedron vertices with holographic shimmer
86
+ float d1 = length(q);
87
+ float d2 = length(q - vec3(0.35, 0.0, 0.0));
88
+ float d3 = length(q - vec3(0.0, 0.35, 0.0));
89
+ float d4 = length(q - vec3(0.0, 0.0, 0.35));
90
+ float d5 = length(q - vec3(0.2, 0.2, 0.0));
91
+ float d6 = length(q - vec3(0.2, 0.0, 0.2));
92
+ float d7 = length(q - vec3(0.0, 0.2, 0.2));
93
+
94
+ float vertices = 1.0 - smoothstep(0.0, 0.03, min(min(min(d1, d2), min(d3, d4)), min(min(d5, d6), d7)));
95
+
96
+ // Enhanced edge network with interference patterns
97
+ float edges = 0.0;
98
+ float shimmer = sin(u_time * 0.002) * 0.02;
99
+ edges = max(edges, 1.0 - smoothstep(0.0, 0.015, abs(length(q.xy) - (0.18 + shimmer))));
100
+ edges = max(edges, 1.0 - smoothstep(0.0, 0.015, abs(length(q.yz) - (0.18 + shimmer * 0.8))));
101
+ edges = max(edges, 1.0 - smoothstep(0.0, 0.015, abs(length(q.xz) - (0.18 + shimmer * 1.2))));
102
+
103
+ // Add interference patterns between vertices
104
+ float interference = sin(d1 * 25.0 + u_time * 0.003) * sin(d2 * 22.0 + u_time * 0.0025) * 0.1;
105
+
106
+ // Volumetric density based on distance field
107
+ float volume = exp(-length(q) * 3.0) * 0.15;
108
+
109
+ return max(vertices, edges * 0.7) + interference + volume;
110
+ }
111
+
112
+ float hypercubeLattice(vec3 p, float gridSize) {
113
+ vec3 grid = fract(p * gridSize);
114
+ vec3 q = grid - 0.5;
115
+
116
+ // Enhanced hypercube with 4D projection effects
117
+ vec3 edges = 1.0 - smoothstep(0.0, 0.025, abs(q));
118
+ float wireframe = max(max(edges.x, edges.y), edges.z);
119
+
120
+ // Add 4D hypercube vertices (8 corners + 8 hypervertices)
121
+ float vertices = 0.0;
122
+ for(int i = 0; i < 8; i++) {
123
+ vec3 corner = vec3(
124
+ float(i % 2) - 0.5,
125
+ float((i / 2) % 2) - 0.5,
126
+ float(i / 4) - 0.5
127
+ );
128
+ float dist = length(q - corner * 0.4);
129
+ vertices = max(vertices, 1.0 - smoothstep(0.0, 0.04, dist));
130
+ }
131
+
132
+ // Holographic interference patterns
133
+ float interference = sin(length(q) * 20.0 + u_time * 0.002) * 0.08;
134
+
135
+ // Cross-dimensional glow
136
+ float glow = exp(-length(q) * 2.5) * 0.12;
137
+
138
+ return wireframe * 0.8 + vertices + interference + glow;
139
+ }
140
+
141
+ float sphereLattice(vec3 p, float gridSize) {
142
+ vec3 q = fract(p * gridSize) - 0.5;
143
+ float r = length(q);
144
+ return 1.0 - smoothstep(0.2, 0.5, r);
145
+ }
146
+
147
+ float torusLattice(vec3 p, float gridSize) {
148
+ vec3 q = fract(p * gridSize) - 0.5;
149
+ float r1 = sqrt(q.x*q.x + q.y*q.y);
150
+ float r2 = sqrt((r1 - 0.3)*(r1 - 0.3) + q.z*q.z);
151
+ return 1.0 - smoothstep(0.0, 0.1, r2);
152
+ }
153
+
154
+ float kleinLattice(vec3 p, float gridSize) {
155
+ vec3 q = fract(p * gridSize);
156
+ float u_val = q.x * 2.0 * 3.14159;
157
+ float v = q.y * 2.0 * 3.14159;
158
+ float x = cos(u_val) * (3.0 + cos(u_val/2.0) * sin(v) - sin(u_val/2.0) * sin(2.0*v));
159
+ float klein = length(vec2(x, q.z)) - 0.1;
160
+ return 1.0 - smoothstep(0.0, 0.05, abs(klein));
161
+ }
162
+
163
+ float fractalLattice(vec3 p, float gridSize) {
164
+ vec3 q = p * gridSize;
165
+ float scale = 1.0;
166
+ float fractal = 0.0;
167
+ for(int i = 0; i < 4; i++) {
168
+ q = fract(q) - 0.5;
169
+ fractal += abs(length(q)) / scale;
170
+ scale *= 2.0;
171
+ q *= 2.0;
172
+ }
173
+ return 1.0 - smoothstep(0.0, 1.0, fractal);
174
+ }
175
+
176
+ float waveLattice(vec3 p, float gridSize) {
177
+ vec3 q = p * gridSize;
178
+ float wave = sin(q.x * 2.0) * sin(q.y * 2.0) * sin(q.z * 2.0 + u_time);
179
+ return smoothstep(-0.5, 0.5, wave);
180
+ }
181
+
182
+ float crystalLattice(vec3 p, float gridSize) {
183
+ vec3 q = fract(p * gridSize) - 0.5;
184
+ float d = max(max(abs(q.x), abs(q.y)), abs(q.z));
185
+ return 1.0 - smoothstep(0.3, 0.5, d);
186
+ }
187
+
188
+ float getDynamicGeometry(vec3 p, float gridSize, float geometryType) {
189
+ int baseGeom = int(mod(geometryType, 8.0));
190
+ float variation = floor(geometryType / 8.0) / 4.0;
191
+ float variedGridSize = gridSize * (0.5 + variation * 1.5);
192
+
193
+ if (baseGeom == 0) return tetrahedronLattice(p, variedGridSize);
194
+ else if (baseGeom == 1) return hypercubeLattice(p, variedGridSize);
195
+ else if (baseGeom == 2) return sphereLattice(p, variedGridSize);
196
+ else if (baseGeom == 3) return torusLattice(p, variedGridSize);
197
+ else if (baseGeom == 4) return kleinLattice(p, variedGridSize);
198
+ else if (baseGeom == 5) return fractalLattice(p, variedGridSize);
199
+ else if (baseGeom == 6) return waveLattice(p, variedGridSize);
200
+ else return crystalLattice(p, variedGridSize);
201
+ }
202
+
203
+ vec3 hsv2rgb(vec3 c) {
204
+ vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
205
+ vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
206
+ return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
207
+ }
208
+
209
+ vec3 rgbGlitch(vec3 color, vec2 uv, float intensity) {
210
+ vec2 offset = vec2(intensity * 0.005, 0.0);
211
+ float r = color.r + sin(uv.y * 30.0 + u_time * 0.001) * intensity * 0.06;
212
+ float g = color.g + sin(uv.y * 28.0 + u_time * 0.0012) * intensity * 0.06;
213
+ float b = color.b + sin(uv.y * 32.0 + u_time * 0.0008) * intensity * 0.06;
214
+ return vec3(r, g, b);
215
+ }
216
+
217
+ float moirePattern(vec2 uv, float intensity) {
218
+ float freq1 = 12.0 + intensity * 6.0 + u_densityVariation * 3.0;
219
+ float freq2 = 14.0 + intensity * 8.0 + u_densityVariation * 4.0;
220
+ float pattern1 = sin(uv.x * freq1) * sin(uv.y * freq1);
221
+ float pattern2 = sin(uv.x * freq2) * sin(uv.y * freq2);
222
+ return (pattern1 * pattern2) * intensity * 0.15;
223
+ }
224
+
225
+ float gridOverlay(vec2 uv, float intensity) {
226
+ vec2 grid = fract(uv * (8.0 + u_densityVariation * 4.0));
227
+ float lines = 0.0;
228
+ lines = max(lines, 1.0 - smoothstep(0.0, 0.02, abs(grid.x - 0.5)));
229
+ lines = max(lines, 1.0 - smoothstep(0.0, 0.02, abs(grid.y - 0.5)));
230
+ return lines * intensity * 0.1;
231
+ }
232
+
233
+ void main() {
234
+ vec2 uv = gl_FragCoord.xy / u_resolution.xy;
235
+ float aspectRatio = u_resolution.x / u_resolution.y;
236
+ uv.x *= aspectRatio;
237
+ uv -= 0.5;
238
+
239
+ float time = u_time * 0.0004 * u_speed * u_roleSpeed;
240
+
241
+ float mouseInfluence = u_mouseIntensity * 0.5;
242
+ vec2 mouseOffset = (u_mouse - 0.5) * mouseInfluence;
243
+
244
+ float parallaxOffset = u_scrollParallax * 0.2;
245
+ vec2 scrollOffset = vec2(parallaxOffset * 0.1, parallaxOffset * 0.05);
246
+
247
+ float morphOffset = u_touchMorph * 0.3;
248
+
249
+ vec4 p4d = vec4(uv + mouseOffset * 0.1 + scrollOffset,
250
+ sin(time * 0.1 + morphOffset) * 0.15,
251
+ cos(time * 0.08 + morphOffset * 0.5) * 0.15);
252
+
253
+ float scrollRotation = u_scrollParallax * 0.1;
254
+ float touchRotation = u_touchMorph * 0.2;
255
+
256
+ // Combine manual rotation with automatic/interactive rotation
257
+ p4d = rotateXW(u_rot4dXW + time * 0.2 + mouseOffset.y * 0.5 + scrollRotation) * p4d;
258
+ p4d = rotateYW(u_rot4dYW + time * 0.15 + mouseOffset.x * 0.5 + touchRotation) * p4d;
259
+ p4d = rotateZW(u_rot4dZW + time * 0.25 + u_clickIntensity * 0.3 + u_touchChaos * 0.4) * p4d;
260
+
261
+ vec3 p = project4Dto3D(p4d);
262
+
263
+ float scrollDensityMod = 1.0 + u_gridDensityShift * 0.3;
264
+ float audioDensityMod = 1.0 + u_audioDensityBoost * 0.5;
265
+ float roleDensity = ((u_density + u_densityVariation) * u_roleDensity) * scrollDensityMod * audioDensityMod;
266
+
267
+ float morphedGeometry = u_geometryType + u_morph * 3.0 + u_touchMorph * 2.0 + u_audioMorphBoost * 1.5;
268
+ float lattice = getDynamicGeometry(p, roleDensity, morphedGeometry);
269
+
270
+ // Enhanced holographic color processing (MATCHING ENGINE)
271
+ vec3 baseColor = u_color;
272
+ float latticeIntensity = lattice * u_intensity;
273
+
274
+ // Multi-layer color composition for higher fidelity
275
+ vec3 color = baseColor * (0.2 + latticeIntensity * 0.8);
276
+
277
+ // Holographic shimmer layers
278
+ vec3 shimmer1 = baseColor * lattice * 0.5;
279
+ vec3 shimmer2 = baseColor * sin(lattice * 8.0 + u_time * 0.001) * 0.2;
280
+ vec3 shimmer3 = baseColor * cos(lattice * 12.0 + u_time * 0.0008) * 0.15;
281
+
282
+ color += shimmer1 + shimmer2 + shimmer3;
283
+
284
+ // Enhanced brightness variations with interference
285
+ color += vec3(lattice * 0.6) * baseColor;
286
+ color += vec3(sin(lattice * 15.0) * 0.1) * baseColor;
287
+
288
+ // Depth-based coloring for 3D effect
289
+ float depth = 1.0 - length(p) * 0.3;
290
+ color *= (0.7 + depth * 0.3);
291
+
292
+ float enhancedChaos = u_chaos + u_chaosIntensity + u_touchChaos * 0.3 + u_audioChaosBoost * 0.4;
293
+ color += vec3(moirePattern(uv + scrollOffset, enhancedChaos));
294
+ color += vec3(gridOverlay(uv, u_mouseIntensity + u_scrollParallax * 0.1));
295
+ color = rgbGlitch(color, uv, enhancedChaos);
296
+
297
+ // Apply morph distortion to position
298
+ vec2 morphDistortion = vec2(sin(uv.y * 10.0 + u_time * 0.001) * u_morph * 0.1,
299
+ cos(uv.x * 10.0 + u_time * 0.001) * u_morph * 0.1);
300
+ color = mix(color, color * (1.0 + length(morphDistortion)), u_morph * 0.5);
301
+
302
+ // Enhanced holographic interaction effects (MATCHING ENGINE)
303
+ float mouseDist = length(uv - (u_mouse - 0.5) * vec2(aspectRatio, 1.0));
304
+
305
+ // Multi-layer mouse glow with holographic ripples
306
+ float mouseGlow = exp(-mouseDist * 1.2) * u_mouseIntensity * 0.25;
307
+ float mouseRipple = sin(mouseDist * 15.0 - u_time * 0.003) * exp(-mouseDist * 2.0) * u_mouseIntensity * 0.1;
308
+ color += vec3(mouseGlow + mouseRipple) * baseColor * 0.8;
309
+
310
+ // Enhanced click pulse with interference
311
+ float clickPulse = u_clickIntensity * exp(-mouseDist * 1.8) * 0.4;
312
+ float clickRing = sin(mouseDist * 20.0 - u_clickIntensity * 5.0) * u_clickIntensity * 0.15;
313
+ color += vec3(clickPulse + clickRing, (clickPulse + clickRing) * 0.6, (clickPulse + clickRing) * 1.2);
314
+
315
+ // Holographic interference from interactions
316
+ float interference = sin(mouseDist * 25.0 + u_time * 0.002) * u_mouseIntensity * 0.05;
317
+ color += vec3(interference) * baseColor;
318
+
319
+ gl_FragColor = vec4(color, 0.95);
320
+ }
321
+ `
322
+ };
323
+ }
324
+
325
+ getSystemStyles() {
326
+ return `
327
+ .visualization-area {
328
+ border: 2px solid rgba(255, 100, 255, 0.4);
329
+ box-shadow:
330
+ 0 0 30px rgba(255, 100, 255, 0.3),
331
+ inset 0 0 20px rgba(255, 100, 255, 0.1);
332
+ background: rgba(255, 100, 255, 0.02);
333
+ }
334
+
335
+ .card-title {
336
+ color: #ff64ff;
337
+ text-shadow: 0 0 20px rgba(255, 100, 255, 0.8);
338
+ }
339
+
340
+ .system-badge.holographic {
341
+ box-shadow: 0 0 15px rgba(255, 100, 255, 0.5);
342
+ animation: holo-glow 2s ease-in-out infinite alternate;
343
+ }
344
+
345
+ @keyframes holo-glow {
346
+ from { box-shadow: 0 0 15px rgba(255, 100, 255, 0.5); }
347
+ to { box-shadow: 0 0 25px rgba(255, 100, 255, 0.8); }
348
+ }
349
+ `;
350
+ }
351
+
352
+ generateSystemContent(parameters) {
353
+ return `<canvas id="holographic-canvas"></canvas>`;
354
+ }
355
+
356
+ getSystemJavaScript() {
357
+ return `
358
+ function initializeCard(params) {
359
+ const canvas = document.getElementById('holographic-canvas');
360
+ const gl = canvas.getContext('webgl');
361
+
362
+ if (!gl) {
363
+ throw new Error('WebGL not supported');
364
+ }
365
+
366
+ // Resize canvas
367
+ function resize() {
368
+ canvas.width = canvas.clientWidth;
369
+ canvas.height = canvas.clientHeight;
370
+ gl.viewport(0, 0, canvas.width, canvas.height);
371
+ }
372
+ window.addEventListener('resize', resize);
373
+ resize();
374
+
375
+ // Create shader program
376
+ function createShader(type, source) {
377
+ const shader = gl.createShader(type);
378
+ gl.shaderSource(shader, source);
379
+ gl.compileShader(shader);
380
+
381
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
382
+ console.error('Shader compile error:', gl.getShaderInfoLog(shader));
383
+ gl.deleteShader(shader);
384
+ return null;
385
+ }
386
+ return shader;
387
+ }
388
+
389
+ const vertexShader = createShader(gl.VERTEX_SHADER, vertexShaderSource);
390
+ const fragmentShader = createShader(gl.FRAGMENT_SHADER, fragmentShaderSource);
391
+
392
+ const program = gl.createProgram();
393
+ gl.attachShader(program, vertexShader);
394
+ gl.attachShader(program, fragmentShader);
395
+ gl.linkProgram(program);
396
+
397
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
398
+ console.error('Program link error:', gl.getProgramInfoLog(program));
399
+ return;
400
+ }
401
+
402
+ // Set up buffers
403
+ const positions = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);
404
+ const positionBuffer = gl.createBuffer();
405
+ gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
406
+ gl.bufferData(gl.ARRAY_BUFFER, positions, gl.STATIC_DRAW);
407
+
408
+ const positionLocation = gl.getAttribLocation(program, 'a_position');
409
+ gl.enableVertexAttribArray(positionLocation);
410
+ gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
411
+
412
+ // Get uniform locations
413
+ const uniforms = {
414
+ resolution: gl.getUniformLocation(program, 'u_resolution'),
415
+ time: gl.getUniformLocation(program, 'u_time'),
416
+ mouse: gl.getUniformLocation(program, 'u_mouse'),
417
+ geometry: gl.getUniformLocation(program, 'u_geometry'),
418
+ density: gl.getUniformLocation(program, 'u_density'),
419
+ speed: gl.getUniformLocation(program, 'u_speed'),
420
+ color: gl.getUniformLocation(program, 'u_color'),
421
+ intensity: gl.getUniformLocation(program, 'u_intensity'),
422
+ roleDensity: gl.getUniformLocation(program, 'u_roleDensity'),
423
+ roleSpeed: gl.getUniformLocation(program, 'u_roleSpeed'),
424
+ colorShift: gl.getUniformLocation(program, 'u_colorShift'),
425
+ chaosIntensity: gl.getUniformLocation(program, 'u_chaosIntensity'),
426
+ mouseIntensity: gl.getUniformLocation(program, 'u_mouseIntensity'),
427
+ clickIntensity: gl.getUniformLocation(program, 'u_clickIntensity'),
428
+ densityVariation: gl.getUniformLocation(program, 'u_densityVariation'),
429
+ geometryType: gl.getUniformLocation(program, 'u_geometryType'),
430
+ chaos: gl.getUniformLocation(program, 'u_chaos'),
431
+ morph: gl.getUniformLocation(program, 'u_morph'),
432
+ touchMorph: gl.getUniformLocation(program, 'u_touchMorph'),
433
+ touchChaos: gl.getUniformLocation(program, 'u_touchChaos'),
434
+ scrollParallax: gl.getUniformLocation(program, 'u_scrollParallax'),
435
+ gridDensityShift: gl.getUniformLocation(program, 'u_gridDensityShift'),
436
+ colorScrollShift: gl.getUniformLocation(program, 'u_colorScrollShift'),
437
+ audioDensityBoost: gl.getUniformLocation(program, 'u_audioDensityBoost'),
438
+ audioMorphBoost: gl.getUniformLocation(program, 'u_audioMorphBoost'),
439
+ audioSpeedBoost: gl.getUniformLocation(program, 'u_audioSpeedBoost'),
440
+ audioChaosBoost: gl.getUniformLocation(program, 'u_audioChaosBoost'),
441
+ audioColorShift: gl.getUniformLocation(program, 'u_audioColorShift'),
442
+ rot4dXW: gl.getUniformLocation(program, 'u_rot4dXW'),
443
+ rot4dYW: gl.getUniformLocation(program, 'u_rot4dYW'),
444
+ rot4dZW: gl.getUniformLocation(program, 'u_rot4dZW')
445
+ };
446
+
447
+ // Animation loop
448
+ const startTime = Date.now();
449
+
450
+ function render() {
451
+ const time = Date.now() - startTime;
452
+
453
+ gl.useProgram(program);
454
+
455
+ // Apply holographic density scaling (0.6-7.5 range)
456
+ const scaledDensity = 0.6 + (parseFloat(params.gridDensity || 15) - 5) / 95 * 6.9;
457
+
458
+ // Convert HSL to RGB for color uniform (MATCHING ENGINE)
459
+ const hue = (parseFloat(params.hue) || 280) / 360; // Default to magenta
460
+ const saturation = parseFloat(params.saturation) || 0.8;
461
+ const lightness = Math.max(0.2, Math.min(0.8, parseFloat(params.intensity) || 0.6));
462
+
463
+ // HSL to RGB conversion
464
+ const hslToRgb = (h, s, l) => {
465
+ let r, g, b;
466
+ if (s === 0) {
467
+ r = g = b = l; // achromatic
468
+ } else {
469
+ const hue2rgb = (p, q, t) => {
470
+ if (t < 0) t += 1;
471
+ if (t > 1) t -= 1;
472
+ if (t < 1/6) return p + (q - p) * 6 * t;
473
+ if (t < 1/2) return q;
474
+ if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
475
+ return p;
476
+ };
477
+ const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
478
+ const p = 2 * l - q;
479
+ r = hue2rgb(p, q, h + 1/3);
480
+ g = hue2rgb(p, q, h);
481
+ b = hue2rgb(p, q, h - 1/3);
482
+ }
483
+ return [r, g, b];
484
+ };
485
+
486
+ const rgbColor = hslToRgb(hue, saturation, lightness);
487
+
488
+ // Set uniforms (MATCHING ENGINE EXACTLY)
489
+ gl.uniform2f(uniforms.resolution, canvas.width, canvas.height);
490
+ gl.uniform1f(uniforms.time, time);
491
+ gl.uniform2f(uniforms.mouse, 0.5, 0.5); // Static for card
492
+ gl.uniform1f(uniforms.geometryType, parseFloat(params.geometry) || 0);
493
+ gl.uniform1f(uniforms.density, scaledDensity);
494
+ gl.uniform1f(uniforms.speed, parseFloat(params.speed) || 0.5);
495
+ gl.uniform3fv(uniforms.color, new Float32Array(rgbColor));
496
+ gl.uniform1f(uniforms.intensity, parseFloat(params.intensity) || 0.6);
497
+ gl.uniform1f(uniforms.roleDensity, 1.0); // Content layer
498
+ gl.uniform1f(uniforms.roleSpeed, 0.9); // Content layer
499
+ gl.uniform1f(uniforms.colorShift, parseFloat(params.hue) || 280);
500
+ gl.uniform1f(uniforms.chaosIntensity, parseFloat(params.chaos) || 0.2);
501
+ gl.uniform1f(uniforms.mouseIntensity, 0.0); // Static for card
502
+ gl.uniform1f(uniforms.clickIntensity, 0.0); // Static for card
503
+ gl.uniform1f(uniforms.densityVariation, 0.0);
504
+ gl.uniform1f(uniforms.geometryType, parseFloat(params.geometry) || 0);
505
+ gl.uniform1f(uniforms.chaos, parseFloat(params.chaos) || 0.2);
506
+ gl.uniform1f(uniforms.morph, parseFloat(params.morphFactor) || 1.0);
507
+
508
+ // Touch and scroll uniforms (static for card)
509
+ gl.uniform1f(uniforms.touchMorph, 0.0);
510
+ gl.uniform1f(uniforms.touchChaos, 0.0);
511
+ gl.uniform1f(uniforms.scrollParallax, 0.0);
512
+ gl.uniform1f(uniforms.gridDensityShift, 0.0);
513
+ gl.uniform1f(uniforms.colorScrollShift, 0.0);
514
+
515
+ // Audio uniforms (static for card)
516
+ gl.uniform1f(uniforms.audioDensityBoost, 0.0);
517
+ gl.uniform1f(uniforms.audioMorphBoost, 0.0);
518
+ gl.uniform1f(uniforms.audioSpeedBoost, 0.0);
519
+ gl.uniform1f(uniforms.audioChaosBoost, 0.0);
520
+ gl.uniform1f(uniforms.audioColorShift, 0.0);
521
+
522
+ // 4D rotation uniforms
523
+ gl.uniform1f(uniforms.rot4dXW, parseFloat(params.rot4dXW) || 0);
524
+ gl.uniform1f(uniforms.rot4dYW, parseFloat(params.rot4dYW) || 0);
525
+ gl.uniform1f(uniforms.rot4dZW, parseFloat(params.rot4dZW) || 0);
526
+
527
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
528
+
529
+ requestAnimationFrame(render);
530
+ }
531
+
532
+ render();
533
+ console.log('✅ Holographic trading card initialized with exact engine matching');
534
+ }
535
+ `;
536
+ }
537
+
538
+ getCardTitle(parameters) {
539
+ return `HOLOGRAPHIC ${this.getGeometryName(parameters)} MATRIX`;
540
+ }
541
+ }
542
+
543
+ export default HolographicCardGenerator;