@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,367 @@
1
+ /**
2
+ * Render Module - VIB3+ SDK
3
+ *
4
+ * Complete rendering abstraction for 4D visualization:
5
+ * - GPU state management
6
+ * - Render command pattern
7
+ * - Command buffer batching and sorting
8
+ * - Framebuffer/render target abstraction
9
+ * - Shader program management
10
+ * - WebGL 2.0 backend
11
+ * - WebGPU backend (fullscreen quad / procedural shaders)
12
+ * - Unified render bridge (WebGL/WebGPU transparent switching)
13
+ */
14
+
15
+ // State management
16
+ export {
17
+ BlendMode,
18
+ DepthFunc,
19
+ CullFace,
20
+ PolygonMode,
21
+ StencilOp,
22
+ BlendState,
23
+ DepthState,
24
+ StencilState,
25
+ RasterizerState,
26
+ Viewport,
27
+ RenderState
28
+ } from './RenderState.js';
29
+
30
+ // Render commands
31
+ export {
32
+ CommandType,
33
+ PrimitiveType,
34
+ RenderCommand,
35
+ ClearCommand,
36
+ SetStateCommand,
37
+ BindShaderCommand,
38
+ BindTextureCommand,
39
+ BindVertexArrayCommand,
40
+ BindRenderTargetCommand,
41
+ SetUniformCommand,
42
+ DrawCommand,
43
+ DrawIndexedCommand,
44
+ DrawInstancedCommand,
45
+ DrawIndexedInstancedCommand,
46
+ SetViewportCommand,
47
+ CustomCommand
48
+ } from './RenderCommand.js';
49
+
50
+ // Command buffer
51
+ export {
52
+ SortMode,
53
+ CommandBuffer,
54
+ CommandBufferPool,
55
+ commandBufferPool
56
+ } from './CommandBuffer.js';
57
+
58
+ // Render targets
59
+ export {
60
+ TextureFormat,
61
+ AttachmentType,
62
+ FilterMode,
63
+ WrapMode,
64
+ AttachmentDescriptor,
65
+ RenderTarget,
66
+ RenderTargetPool,
67
+ renderTargetPool
68
+ } from './RenderTarget.js';
69
+
70
+ // Resource registry
71
+ export {
72
+ RenderResourceRegistry
73
+ } from './RenderResourceRegistry.js';
74
+
75
+ // Shader programs
76
+ export {
77
+ ShaderStage,
78
+ UniformType,
79
+ UniformDescriptor,
80
+ AttributeDescriptor,
81
+ ShaderSource,
82
+ ShaderProgram,
83
+ ShaderLib,
84
+ ShaderCache,
85
+ shaderCache
86
+ } from './ShaderProgram.js';
87
+
88
+ // WebGL backend
89
+ export {
90
+ WebGLBackend,
91
+ createWebGLBackend
92
+ } from './backends/WebGLBackend.js';
93
+
94
+ // WebGPU backend
95
+ export {
96
+ WebGPUBackend,
97
+ WebGPUFeatures,
98
+ WGSLShaderLib,
99
+ isWebGPUSupported,
100
+ getWebGPUFeatures,
101
+ createWebGPUBackend,
102
+ createWebGPUWithFallback
103
+ } from './backends/WebGPUBackend.js';
104
+
105
+ // Unified render bridge (WebGL/WebGPU transparent switching)
106
+ export {
107
+ UnifiedRenderBridge,
108
+ canUseWebGPU
109
+ } from './UnifiedRenderBridge.js';
110
+
111
+ // Shader loader (external shader file fetch + cache)
112
+ export {
113
+ ShaderLoader,
114
+ shaderLoader
115
+ } from './ShaderLoader.js';
116
+
117
+ // Multi-canvas bridge (5-layer orchestration for Quantum/Holographic)
118
+ export {
119
+ MultiCanvasBridge
120
+ } from './MultiCanvasBridge.js';
121
+
122
+ /**
123
+ * Create a complete rendering context
124
+ * @param {HTMLCanvasElement} canvas
125
+ * @param {object} [options]
126
+ * @returns {object} Rendering context with backend and helpers
127
+ */
128
+ export function createRenderContext(canvas, options = {}) {
129
+ if (options.backend === 'webgpu') {
130
+ return null;
131
+ }
132
+ const { createWebGLBackend } = require('./backends/WebGLBackend.js');
133
+ const backend = createWebGLBackend(canvas, options);
134
+
135
+ if (!backend) {
136
+ return null;
137
+ }
138
+
139
+ return {
140
+ backend,
141
+ canvas,
142
+ gl: backend.gl,
143
+
144
+ // Helper methods
145
+ createCommandBuffer: (opts) => new CommandBuffer(opts),
146
+ createRenderTarget: (width, height, opts) => new RenderTarget(width, height, opts),
147
+ createShader: (opts) => new ShaderProgram(opts),
148
+
149
+ // Dispose all
150
+ dispose() {
151
+ backend.dispose();
152
+ }
153
+ };
154
+ }
155
+
156
+ /**
157
+ * Create a rendering context (async, supports WebGPU).
158
+ * @param {HTMLCanvasElement} canvas
159
+ * @param {object} [options]
160
+ * @param {string} [options.backend] - 'webgl' or 'webgpu'
161
+ * @param {boolean} [options.preferWebGPU] - Try WebGPU first, fallback to WebGL
162
+ * @returns {Promise<object|null>}
163
+ */
164
+ export async function createRenderContextAsync(canvas, options = {}) {
165
+ // Use UnifiedRenderBridge for auto backend selection
166
+ if (options.preferWebGPU || options.backend === 'bridge') {
167
+ const bridge = await UnifiedRenderBridge.create(canvas, options);
168
+ if (bridge) {
169
+ return {
170
+ backend: bridge,
171
+ canvas,
172
+ backendType: bridge.backendType,
173
+ dispose() {
174
+ bridge.dispose();
175
+ }
176
+ };
177
+ }
178
+ // Fall through to direct WebGL
179
+ }
180
+
181
+ if (options.backend === 'webgpu') {
182
+ const backend = await createWebGPUBackend(canvas, options);
183
+
184
+ if (!backend) {
185
+ return null;
186
+ }
187
+
188
+ return {
189
+ backend,
190
+ canvas,
191
+ device: backend.device,
192
+ context: backend.context,
193
+ format: backend.format,
194
+ dispose() {
195
+ backend.dispose();
196
+ }
197
+ };
198
+ }
199
+
200
+ return createRenderContext(canvas, options);
201
+ }
202
+
203
+ /**
204
+ * Preset render states for common use cases
205
+ */
206
+ export const RenderPresets = {
207
+ /** Default opaque rendering */
208
+ opaque: () => RenderState.opaque(),
209
+
210
+ /** Alpha-blended transparent rendering */
211
+ transparent: () => RenderState.transparent(),
212
+
213
+ /** Additive blending for effects */
214
+ additive: () => RenderState.additive(),
215
+
216
+ /** Wireframe rendering */
217
+ wireframe: () => RenderState.wireframe(),
218
+
219
+ /** 4D geometry with W-depth sorting */
220
+ geometry4D: () => {
221
+ const state = RenderState.opaque();
222
+ state.depth.testEnabled = true;
223
+ state.depth.writeEnabled = true;
224
+ return state;
225
+ },
226
+
227
+ /** Transparent 4D with back-to-front sorting */
228
+ transparent4D: () => {
229
+ const state = RenderState.transparent();
230
+ state.depth.testEnabled = true;
231
+ state.depth.writeEnabled = false;
232
+ return state;
233
+ }
234
+ };
235
+
236
+ /**
237
+ * Common shader snippets for 4D rendering
238
+ */
239
+ export const Shader4D = {
240
+ /** All rotation functions for 6 planes */
241
+ rotation: ShaderLib.rotation4D,
242
+
243
+ /** Projection functions (perspective, stereographic, orthographic) */
244
+ projection: ShaderLib.projection4D,
245
+
246
+ /** Basic 4D vertex shader template */
247
+ basicVertex: ShaderLib.vertex4D,
248
+
249
+ /** Basic fragment shader with W-fog */
250
+ basicFragment: ShaderLib.fragment4D,
251
+
252
+ /**
253
+ * Generate complete vertex shader for 4D geometry
254
+ * @param {object} [options]
255
+ * @returns {string}
256
+ */
257
+ generateVertexShader(options = {}) {
258
+ const includeColor = options.color !== false;
259
+ const includeNormal = options.normal === true;
260
+
261
+ return `#version 300 es
262
+ precision highp float;
263
+
264
+ // 4D position
265
+ in vec4 a_position;
266
+ ${includeColor ? 'in vec4 a_color;' : ''}
267
+ ${includeNormal ? 'in vec4 a_normal;' : ''}
268
+
269
+ // Transforms
270
+ uniform mat4 u_modelMatrix;
271
+ uniform mat4 u_viewMatrix;
272
+ uniform mat4 u_projMatrix;
273
+ uniform mat4 u_rotation4D;
274
+ uniform float u_projDistance;
275
+
276
+ // Outputs
277
+ ${includeColor ? 'out vec4 v_color;' : ''}
278
+ ${includeNormal ? 'out vec3 v_normal;' : ''}
279
+ out float v_depth4D;
280
+ out vec3 v_position;
281
+
282
+ ${ShaderLib.rotation4D}
283
+ ${ShaderLib.projection4D}
284
+
285
+ void main() {
286
+ // Apply 4D rotation
287
+ vec4 rotated = u_rotation4D * a_position;
288
+
289
+ // Project 4D -> 3D
290
+ vec3 projected = projectPerspective(rotated, u_projDistance);
291
+
292
+ // Apply 3D transforms
293
+ vec4 worldPos = u_modelMatrix * vec4(projected, 1.0);
294
+ vec4 viewPos = u_viewMatrix * worldPos;
295
+ gl_Position = u_projMatrix * viewPos;
296
+
297
+ // Pass to fragment shader
298
+ v_position = worldPos.xyz;
299
+ v_depth4D = rotated.w;
300
+ ${includeColor ? 'v_color = a_color;' : ''}
301
+ ${includeNormal ? `
302
+ vec4 rotatedNormal = u_rotation4D * a_normal;
303
+ v_normal = normalize((u_modelMatrix * vec4(rotatedNormal.xyz, 0.0)).xyz);
304
+ ` : ''}
305
+ }`;
306
+ },
307
+
308
+ /**
309
+ * Generate complete fragment shader for 4D geometry
310
+ * @param {object} [options]
311
+ * @returns {string}
312
+ */
313
+ generateFragmentShader(options = {}) {
314
+ const includeColor = options.color !== false;
315
+ const includeLighting = options.lighting === true;
316
+ const includeWFog = options.wFog !== false;
317
+
318
+ return `#version 300 es
319
+ precision highp float;
320
+
321
+ ${includeColor ? 'in vec4 v_color;' : ''}
322
+ ${includeLighting ? 'in vec3 v_normal;' : ''}
323
+ in float v_depth4D;
324
+ in vec3 v_position;
325
+
326
+ uniform float u_wFogDistance;
327
+ uniform bool u_wFogEnabled;
328
+ ${includeColor ? '' : 'uniform vec4 u_baseColor;'}
329
+ ${includeLighting ? `
330
+ uniform vec3 u_lightDir;
331
+ uniform vec3 u_lightColor;
332
+ uniform vec3 u_ambientColor;
333
+ ` : ''}
334
+
335
+ out vec4 fragColor;
336
+
337
+ void main() {
338
+ ${includeColor ? 'vec4 color = v_color;' : 'vec4 color = u_baseColor;'}
339
+
340
+ ${includeLighting ? `
341
+ // Simple directional lighting
342
+ float NdotL = max(dot(v_normal, normalize(u_lightDir)), 0.0);
343
+ vec3 diffuse = u_lightColor * NdotL;
344
+ vec3 ambient = u_ambientColor;
345
+ color.rgb *= (ambient + diffuse);
346
+ ` : ''}
347
+
348
+ ${includeWFog ? `
349
+ // W-depth fog (fades objects far in 4th dimension)
350
+ if (u_wFogEnabled) {
351
+ float fogFactor = clamp(abs(v_depth4D) / u_wFogDistance, 0.0, 1.0);
352
+ color.a *= 1.0 - fogFactor;
353
+ }
354
+ ` : ''}
355
+
356
+ fragColor = color;
357
+ }`;
358
+ }
359
+ };
360
+
361
+ // Import classes for createRenderContext helper
362
+ import { CommandBuffer } from './CommandBuffer.js';
363
+ import { RenderTarget } from './RenderTarget.js';
364
+ import { RenderState } from './RenderState.js';
365
+ import { ShaderProgram, ShaderLib } from './ShaderProgram.js';
366
+ import { UnifiedRenderBridge } from './UnifiedRenderBridge.js';
367
+ import { createWebGPUBackend } from './backends/WebGPUBackend.js';