@vib3code/sdk 2.0.1-canary.261ce59 → 2.0.3-canary.0e9a1ac
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.
- package/CHANGELOG.md +36 -0
- package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
- package/DOCS/CLI_ONBOARDING.md +1 -1
- package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
- package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
- package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
- package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
- package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
- package/DOCS/PRODUCT_STRATEGY.md +63 -0
- package/DOCS/README.md +103 -0
- package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
- package/DOCS/ROADMAP.md +111 -0
- package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
- package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
- package/DOCS/STATUS.md +24 -0
- package/DOCS/SYSTEM_INVENTORY.md +33 -30
- package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
- package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
- package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
- package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
- package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
- package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
- package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
- package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +127 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +142 -0
- package/DOCS/dev-tracks/README.md +10 -0
- package/README.md +49 -88
- package/cpp/CMakeLists.txt +236 -0
- package/cpp/bindings/embind.cpp +269 -0
- package/cpp/build.sh +129 -0
- package/cpp/geometry/Crystal.cpp +103 -0
- package/cpp/geometry/Fractal.cpp +136 -0
- package/cpp/geometry/GeometryGenerator.cpp +262 -0
- package/cpp/geometry/KleinBottle.cpp +71 -0
- package/cpp/geometry/Sphere.cpp +134 -0
- package/cpp/geometry/Tesseract.cpp +94 -0
- package/cpp/geometry/Tetrahedron.cpp +83 -0
- package/cpp/geometry/Torus.cpp +65 -0
- package/cpp/geometry/WarpFunctions.cpp +238 -0
- package/cpp/geometry/Wave.cpp +85 -0
- package/cpp/include/vib3_ffi.h +238 -0
- package/cpp/math/Mat4x4.cpp +409 -0
- package/cpp/math/Mat4x4.hpp +209 -0
- package/cpp/math/Projection.cpp +142 -0
- package/cpp/math/Projection.hpp +148 -0
- package/cpp/math/Rotor4D.cpp +322 -0
- package/cpp/math/Rotor4D.hpp +204 -0
- package/cpp/math/Vec4.cpp +303 -0
- package/cpp/math/Vec4.hpp +225 -0
- package/cpp/src/vib3_ffi.cpp +607 -0
- package/cpp/tests/Geometry_test.cpp +213 -0
- package/cpp/tests/Mat4x4_test.cpp +494 -0
- package/cpp/tests/Projection_test.cpp +298 -0
- package/cpp/tests/Rotor4D_test.cpp +423 -0
- package/cpp/tests/Vec4_test.cpp +489 -0
- package/package.json +15 -4
- package/src/agent/index.js +1 -3
- package/src/agent/mcp/MCPServer.js +918 -0
- package/src/agent/mcp/index.js +1 -1
- package/src/agent/mcp/stdio-server.js +264 -0
- package/src/agent/mcp/tools.js +454 -0
- package/src/cli/index.js +376 -49
- package/src/core/CanvasManager.js +97 -204
- package/src/core/ErrorReporter.js +1 -1
- package/src/core/Parameters.js +1 -1
- package/src/core/VIB3Engine.js +93 -4
- package/src/core/VitalitySystem.js +53 -0
- package/src/core/index.js +18 -0
- package/src/core/renderers/FacetedRendererAdapter.js +10 -9
- package/src/core/renderers/HolographicRendererAdapter.js +13 -9
- package/src/core/renderers/QuantumRendererAdapter.js +11 -7
- package/src/creative/AestheticMapper.js +628 -0
- package/src/creative/ChoreographyPlayer.js +481 -0
- package/src/creative/index.js +11 -0
- package/src/export/TradingCardManager.js +3 -4
- package/src/export/index.js +11 -1
- package/src/faceted/FacetedSystem.js +241 -388
- package/src/holograms/HolographicVisualizer.js +29 -12
- package/src/holograms/RealHolographicSystem.js +194 -43
- package/src/math/index.js +7 -7
- package/src/polychora/PolychoraSystem.js +77 -0
- package/src/quantum/QuantumEngine.js +103 -66
- package/src/quantum/QuantumVisualizer.js +7 -2
- package/src/reactivity/index.js +3 -5
- package/src/render/LayerPresetManager.js +372 -0
- package/src/render/LayerReactivityBridge.js +344 -0
- package/src/render/LayerRelationshipGraph.js +610 -0
- package/src/render/MultiCanvasBridge.js +148 -25
- package/src/render/UnifiedRenderBridge.js +3 -0
- package/src/render/index.js +27 -2
- package/src/scene/index.js +4 -4
- package/src/shaders/faceted/faceted.frag.glsl +220 -80
- package/src/shaders/faceted/faceted.frag.wgsl +138 -97
- package/src/shaders/holographic/holographic.frag.glsl +28 -9
- package/src/shaders/holographic/holographic.frag.wgsl +107 -38
- package/src/shaders/quantum/quantum.frag.glsl +1 -0
- package/src/shaders/quantum/quantum.frag.wgsl +1 -1
- package/src/testing/ParallelTestFramework.js +2 -2
- package/src/viewer/GalleryUI.js +17 -0
- package/src/viewer/ViewerPortal.js +2 -2
- package/src/viewer/index.js +1 -1
- package/tools/headless-renderer.js +258 -0
- package/tools/shader-sync-verify.js +8 -4
- package/tools/site-analysis/all-reports.json +32 -0
- package/tools/site-analysis/combined-analysis.md +50 -0
- package/tools/site-analyzer.mjs +779 -0
- package/tools/visual-catalog/capture.js +276 -0
- package/tools/visual-catalog/composite.js +138 -0
- package/types/adaptive-sdk.d.ts +204 -5
- package/types/agent/cli.d.ts +78 -0
- package/types/agent/index.d.ts +18 -0
- package/types/agent/mcp.d.ts +87 -0
- package/types/agent/telemetry.d.ts +190 -0
- package/types/core/VIB3Engine.d.ts +26 -0
- package/types/core/index.d.ts +261 -0
- package/types/creative/AestheticMapper.d.ts +72 -0
- package/types/creative/ChoreographyPlayer.d.ts +96 -0
- package/types/creative/index.d.ts +17 -0
- package/types/export/index.d.ts +243 -0
- package/types/geometry/index.d.ts +164 -0
- package/types/math/index.d.ts +214 -0
- package/types/render/LayerPresetManager.d.ts +78 -0
- package/types/render/LayerReactivityBridge.d.ts +85 -0
- package/types/render/LayerRelationshipGraph.d.ts +174 -0
- package/types/render/index.d.ts +3 -0
- package/types/scene/index.d.ts +204 -0
- package/types/systems/index.d.ts +244 -0
- package/types/variations/index.d.ts +62 -0
- package/types/viewer/index.d.ts +225 -0
- /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
- /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
- /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
- /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
- /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
package/README.md
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
**General-purpose 4D rotation visualization SDK** for plugins, extensions, wearables, and agentic AI integration.
|
|
4
4
|
|
|
5
|
-
[](DOCS/STATUS.md#test-status)
|
|
6
|
+
[](DOCS/STATUS.md#vib3-sdk-status)
|
|
7
7
|
[](LICENSE)
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Documentation
|
|
12
|
+
|
|
13
|
+
The main documentation entrypoint is [`DOCS/README.md`](./DOCS/README.md), which includes canonical docs, persona-based reading paths, taxonomy, and source-of-truth ownership.
|
|
9
14
|
|
|
10
15
|
---
|
|
11
16
|
|
|
@@ -17,7 +22,7 @@
|
|
|
17
22
|
| **Rotation Planes** | 6 (XY, XZ, YZ + XW, YW, ZW) |
|
|
18
23
|
| **Geometries** | 24 per system (8 base × 3 cores) |
|
|
19
24
|
| **Canvas Layers** | 5 per system |
|
|
20
|
-
| **MCP Tools** |
|
|
25
|
+
| **MCP Tools** | 14 agent-accessible tools |
|
|
21
26
|
|
|
22
27
|
---
|
|
23
28
|
|
|
@@ -27,10 +32,10 @@
|
|
|
27
32
|
- **24 Geometry Variants:** 8 base shapes × 3 core warp types (Base, Hypersphere, Hypertetrahedron)
|
|
28
33
|
- **6D Rotation:** Full control over 3D planes (XY/XZ/YZ) and 4D hyperspace planes (XW/YW/ZW)
|
|
29
34
|
- **Audio Reactivity:** Real-time visualization response to audio input (all 3 systems)
|
|
30
|
-
- **Agentic Integration:** MCP server with
|
|
35
|
+
- **Agentic Integration:** MCP server with 14 tools for AI agent control
|
|
31
36
|
- **Cross-Platform:** Web, WASM, Flutter support
|
|
32
37
|
|
|
33
|
-
### New in v2.0.
|
|
38
|
+
### New in current release (v2.0.x)
|
|
34
39
|
|
|
35
40
|
- **Universal Spatial Input:** 8 input sources (tilt, gyroscope, gamepad, mouse, MIDI, audio, programmatic, perspective) with 6 built-in profiles (card tilt, wearable, game, VJ, UI, XR)
|
|
36
41
|
- **Creative Tooling:** 22 color presets, 14 easing transitions, 14 post-processing effects, keyframe timeline with BPM sync
|
|
@@ -42,56 +47,28 @@
|
|
|
42
47
|
|
|
43
48
|
## Quick Start
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
```bash
|
|
51
|
+
# Scaffold a new project
|
|
52
|
+
npx @vib3code/sdk init my-app
|
|
53
|
+
cd my-app
|
|
54
|
+
npm install
|
|
55
|
+
npm run dev
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or add to an existing project:
|
|
46
59
|
|
|
47
60
|
```bash
|
|
48
61
|
npm install @vib3code/sdk
|
|
49
62
|
```
|
|
50
63
|
|
|
51
|
-
### 2. Render in 5 lines
|
|
52
|
-
|
|
53
64
|
```javascript
|
|
54
65
|
import { VIB3Engine } from '@vib3code/sdk/core';
|
|
55
66
|
|
|
56
67
|
const engine = new VIB3Engine();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
engine.setParameter('hue', 200);
|
|
62
|
-
})();
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 3. Complete working example
|
|
66
|
-
|
|
67
|
-
Copy this into an HTML file and open it:
|
|
68
|
-
|
|
69
|
-
```html
|
|
70
|
-
<!DOCTYPE html>
|
|
71
|
-
<html>
|
|
72
|
-
<body style="margin:0;background:#000;">
|
|
73
|
-
<div id="vib3" style="width:100vw;height:100vh;"></div>
|
|
74
|
-
<script type="module">
|
|
75
|
-
import { VIB3Engine } from '@vib3code/sdk/core';
|
|
76
|
-
const engine = new VIB3Engine();
|
|
77
|
-
(async () => {
|
|
78
|
-
await engine.initialize('vib3');
|
|
79
|
-
await engine.switchSystem('quantum');
|
|
80
|
-
engine.setParameter('geometry', 10);
|
|
81
|
-
engine.setParameter('rot4dXW', 1.57);
|
|
82
|
-
})();
|
|
83
|
-
</script>
|
|
84
|
-
</body>
|
|
85
|
-
</html>
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 4. Or scaffold a full project
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
npx @vib3code/sdk init my-app
|
|
92
|
-
cd my-app
|
|
93
|
-
npm install
|
|
94
|
-
npm run dev
|
|
68
|
+
await engine.initialize();
|
|
69
|
+
await engine.switchSystem('quantum');
|
|
70
|
+
engine.setParameter('geometry', 10);
|
|
71
|
+
engine.setParameter('hue', 200);
|
|
95
72
|
```
|
|
96
73
|
|
|
97
74
|
### Development (this repo)
|
|
@@ -205,7 +182,7 @@ engine.randomizeAll();
|
|
|
205
182
|
engine.resetAll();
|
|
206
183
|
```
|
|
207
184
|
|
|
208
|
-
### Spatial Input API (v2.0.
|
|
185
|
+
### Spatial Input API (v2.0.x)
|
|
209
186
|
|
|
210
187
|
```javascript
|
|
211
188
|
// Enable spatial input with a profile
|
|
@@ -223,7 +200,7 @@ engine.setSpatialDramaticMode(true); // 8x amplification
|
|
|
223
200
|
// vjAudioSpatial, uiElement, immersiveXR
|
|
224
201
|
```
|
|
225
202
|
|
|
226
|
-
### Framework Integration (v2.0.
|
|
203
|
+
### Framework Integration (v2.0.x)
|
|
227
204
|
|
|
228
205
|
```javascript
|
|
229
206
|
// React
|
|
@@ -377,17 +354,17 @@ echo 'geometry 10' | node src/cli/index.js
|
|
|
377
354
|
│ │ ├── cli/ # CLI interface
|
|
378
355
|
│ │ └── telemetry/ # Instrumentation
|
|
379
356
|
│ ├── export/ # Export generators
|
|
380
|
-
│ ├── reactivity/ # Reactivity + SpatialInputSystem (
|
|
381
|
-
│ ├── creative/ # Color presets, transitions, post-FX, timeline (
|
|
382
|
-
│ ├── integrations/ # React, Vue, Svelte, Figma, Three.js, TD, OBS (
|
|
383
|
-
│ └── advanced/ # WebXR, WebGPU compute, MIDI, AI, Worker (
|
|
357
|
+
│ ├── reactivity/ # Reactivity + SpatialInputSystem (current release series)
|
|
358
|
+
│ ├── creative/ # Color presets, transitions, post-FX, timeline (current release series)
|
|
359
|
+
│ ├── integrations/ # React, Vue, Svelte, Figma, Three.js, TD, OBS (current release series)
|
|
360
|
+
│ └── advanced/ # WebXR, WebGPU compute, MIDI, AI, Worker (current release series)
|
|
384
361
|
├── tools/ # Tooling (+ shader-sync-verify.js)
|
|
385
362
|
├── cpp/ # C++ math core (WASM)
|
|
386
363
|
├── js/ # Client-side integration
|
|
387
|
-
├── tests/ # Test suite (
|
|
364
|
+
├── tests/ # Test suite (CI-tracked status)
|
|
388
365
|
├── DOCS/ # Documentation
|
|
389
366
|
│ ├── SYSTEM_INVENTORY.md # Complete system reference
|
|
390
|
-
│ ├── SYSTEM_AUDIT_2026-01-30.md # Full system audit
|
|
367
|
+
│ ├── archive/SYSTEM_AUDIT_2026-01-30.md # Full system audit (archived)
|
|
391
368
|
│ ├── CLI_ONBOARDING.md # Agent CLI setup
|
|
392
369
|
│ └── CONTROL_REFERENCE.md # UI parameters
|
|
393
370
|
└── types/ # TypeScript definitions
|
|
@@ -408,44 +385,28 @@ npm test -- --coverage
|
|
|
408
385
|
npm test -- tests/agent/AgentCLI.test.js
|
|
409
386
|
```
|
|
410
387
|
|
|
411
|
-
**Current Status:**
|
|
412
|
-
|
|
413
|
-
---
|
|
414
|
-
|
|
415
|
-
## Bundle Size
|
|
416
|
-
|
|
417
|
-
| Import | Gzipped | Description |
|
|
418
|
-
|--------|---------|-------------|
|
|
419
|
-
| Full package (npm) | ~653 KB | All systems, integrations, advanced features |
|
|
420
|
-
| `@vib3code/sdk/core` | ~15 KB | Engine only, no visualization systems |
|
|
421
|
-
| `+ quantum` | ~45 KB | Core + Quantum system |
|
|
422
|
-
| `+ faceted` | ~40 KB | Core + Faceted system |
|
|
423
|
-
| `+ holographic` | ~50 KB | Core + Holographic system |
|
|
424
|
-
|
|
425
|
-
Run `npm run analyze:bundle` to inspect your specific imports.
|
|
388
|
+
**Current Status:** See [`DOCS/STATUS.md`](DOCS/STATUS.md) for release and CI-linked test status.
|
|
426
389
|
|
|
427
390
|
---
|
|
428
391
|
|
|
429
392
|
## Documentation
|
|
430
393
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
|
434
|
-
|
|
435
|
-
| [`
|
|
436
|
-
| [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete
|
|
437
|
-
| [`DOCS/
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
|
442
|
-
|
|
443
|
-
| [`DOCS/
|
|
444
|
-
| [`
|
|
445
|
-
| [`DOCS/GPU_DISPOSAL_GUIDE.md`](DOCS/GPU_DISPOSAL_GUIDE.md) |
|
|
446
|
-
| [`
|
|
447
|
-
| [`DOCS/OBS_SETUP_GUIDE.md`](DOCS/OBS_SETUP_GUIDE.md) | OBS browser source integration |
|
|
448
|
-
| [`24-GEOMETRY-6D-ROTATION-SUMMARY.md`](24-GEOMETRY-6D-ROTATION-SUMMARY.md) | Geometry encoding formula and all 24 variants |
|
|
394
|
+
| Document | Description |
|
|
395
|
+
|----------|-------------|
|
|
396
|
+
| [`DOCS/STATUS.md`](DOCS/STATUS.md) | Canonical release status (version, date, platforms, CI test status) |
|
|
397
|
+
| [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete technical reference |
|
|
398
|
+
| [`DOCS/SYSTEM_AUDIT_2026-01-30.md`](DOCS/SYSTEM_AUDIT_2026-01-30.md) | Full system audit |
|
|
399
|
+
| [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete technical reference (v2.0.0) |
|
|
400
|
+
| [`DOCS/PRODUCT_STRATEGY.md`](DOCS/PRODUCT_STRATEGY.md) | Product strategy: personas, use-cases, differentiation, and metrics |
|
|
401
|
+
| [`DOCS/ROADMAP.md`](DOCS/ROADMAP.md) | Strategy goals mapped to technical epics and module ownership |
|
|
402
|
+
| [`DOCS/README.md`](DOCS/README.md) | Documentation index and navigation hub |
|
|
403
|
+
| [`DOCS/SYSTEM_AUDIT_2026-01-30.md`](DOCS/SYSTEM_AUDIT_2026-01-30.md) | Full system audit (v2.0.0) |
|
|
404
|
+
| [`DOCS/archive/SYSTEM_AUDIT_2026-01-30.md`](DOCS/archive/SYSTEM_AUDIT_2026-01-30.md) | Full system audit (v2.0.0, archived) |
|
|
405
|
+
| [`DOCS/CLI_ONBOARDING.md`](DOCS/CLI_ONBOARDING.md) | Agent CLI setup guide |
|
|
406
|
+
| [`DOCS/CONTROL_REFERENCE.md`](DOCS/CONTROL_REFERENCE.md) | UI parameter reference |
|
|
407
|
+
| [`24-GEOMETRY-6D-ROTATION-SUMMARY.md`](24-GEOMETRY-6D-ROTATION-SUMMARY.md) | Geometry encoding details |
|
|
408
|
+
| [`DOCS/GPU_DISPOSAL_GUIDE.md`](DOCS/GPU_DISPOSAL_GUIDE.md) | Resource management |
|
|
409
|
+
| [`CLAUDE.md`](CLAUDE.md) | AI/Developer technical reference |
|
|
449
410
|
|
|
450
411
|
---
|
|
451
412
|
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.20)
|
|
2
|
+
project(vib3_core VERSION 1.0.0 LANGUAGES CXX)
|
|
3
|
+
|
|
4
|
+
# C++20 required for concepts, ranges, and std::numbers
|
|
5
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
6
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
7
|
+
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
8
|
+
|
|
9
|
+
# Build options
|
|
10
|
+
option(VIB3_BUILD_WASM "Build WebAssembly module" ON)
|
|
11
|
+
option(VIB3_BUILD_TESTS "Build unit tests" ON)
|
|
12
|
+
option(VIB3_ENABLE_SIMD "Enable SIMD optimizations" ON)
|
|
13
|
+
option(VIB3_ENABLE_THREADS "Enable threading support" OFF)
|
|
14
|
+
|
|
15
|
+
# Output directories
|
|
16
|
+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
17
|
+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
18
|
+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
19
|
+
|
|
20
|
+
# Compiler warnings
|
|
21
|
+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
|
22
|
+
add_compile_options(
|
|
23
|
+
-Wall
|
|
24
|
+
-Wextra
|
|
25
|
+
-Wpedantic
|
|
26
|
+
-Wconversion
|
|
27
|
+
-Wsign-conversion
|
|
28
|
+
-Wno-unused-parameter
|
|
29
|
+
)
|
|
30
|
+
endif()
|
|
31
|
+
|
|
32
|
+
# SIMD support
|
|
33
|
+
if(VIB3_ENABLE_SIMD)
|
|
34
|
+
if(EMSCRIPTEN)
|
|
35
|
+
add_compile_options(-msimd128)
|
|
36
|
+
add_link_options(-msimd128)
|
|
37
|
+
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
|
38
|
+
# Detect CPU architecture
|
|
39
|
+
include(CheckCXXCompilerFlag)
|
|
40
|
+
check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2)
|
|
41
|
+
check_cxx_compiler_flag("-msse4.1" COMPILER_SUPPORTS_SSE41)
|
|
42
|
+
|
|
43
|
+
if(COMPILER_SUPPORTS_AVX2)
|
|
44
|
+
add_compile_options(-mavx2 -mfma)
|
|
45
|
+
add_definitions(-DVIB3_HAS_AVX2)
|
|
46
|
+
elseif(COMPILER_SUPPORTS_SSE41)
|
|
47
|
+
add_compile_options(-msse4.1)
|
|
48
|
+
add_definitions(-DVIB3_HAS_SSE41)
|
|
49
|
+
endif()
|
|
50
|
+
endif()
|
|
51
|
+
endif()
|
|
52
|
+
|
|
53
|
+
# Math library (required)
|
|
54
|
+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/math/Vec4.cpp")
|
|
55
|
+
add_library(vib3_math STATIC
|
|
56
|
+
math/Vec4.cpp
|
|
57
|
+
math/Rotor4D.cpp
|
|
58
|
+
math/Mat4x4.cpp
|
|
59
|
+
math/Projection.cpp
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
target_include_directories(vib3_math PUBLIC
|
|
63
|
+
${CMAKE_CURRENT_SOURCE_DIR}
|
|
64
|
+
)
|
|
65
|
+
else()
|
|
66
|
+
message(WARNING "VIB3: math/ directory not found, skipping vib3_math library")
|
|
67
|
+
endif()
|
|
68
|
+
|
|
69
|
+
# Geometry library (optional — may not exist in Flutter/submodule checkouts)
|
|
70
|
+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/geometry/GeometryGenerator.cpp")
|
|
71
|
+
add_library(vib3_geometry STATIC
|
|
72
|
+
geometry/GeometryGenerator.cpp
|
|
73
|
+
geometry/Tesseract.cpp
|
|
74
|
+
geometry/Tetrahedron.cpp
|
|
75
|
+
geometry/Sphere.cpp
|
|
76
|
+
geometry/Torus.cpp
|
|
77
|
+
geometry/KleinBottle.cpp
|
|
78
|
+
geometry/Fractal.cpp
|
|
79
|
+
geometry/Wave.cpp
|
|
80
|
+
geometry/Crystal.cpp
|
|
81
|
+
geometry/WarpFunctions.cpp
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
target_link_libraries(vib3_geometry PUBLIC vib3_math)
|
|
85
|
+
|
|
86
|
+
target_include_directories(vib3_geometry PUBLIC
|
|
87
|
+
${CMAKE_CURRENT_SOURCE_DIR}
|
|
88
|
+
)
|
|
89
|
+
else()
|
|
90
|
+
message(WARNING "VIB3: geometry/ directory not found, skipping vib3_geometry library")
|
|
91
|
+
endif()
|
|
92
|
+
|
|
93
|
+
# WebAssembly build
|
|
94
|
+
if(EMSCRIPTEN AND VIB3_BUILD_WASM AND TARGET vib3_math AND TARGET vib3_geometry)
|
|
95
|
+
# Combined WASM module
|
|
96
|
+
add_executable(vib3_wasm
|
|
97
|
+
bindings/embind.cpp
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
target_link_libraries(vib3_wasm PRIVATE
|
|
101
|
+
vib3_math
|
|
102
|
+
vib3_geometry
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# Emscripten settings
|
|
106
|
+
set_target_properties(vib3_wasm PROPERTIES
|
|
107
|
+
OUTPUT_NAME "vib3"
|
|
108
|
+
SUFFIX ".js"
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# Emscripten link options
|
|
112
|
+
target_link_options(vib3_wasm PRIVATE
|
|
113
|
+
# Output formats
|
|
114
|
+
-sWASM=1
|
|
115
|
+
-sMODULARIZE=1
|
|
116
|
+
-sEXPORT_NAME=createVIB3Module
|
|
117
|
+
-sEXPORT_ES6=1
|
|
118
|
+
|
|
119
|
+
# Memory settings
|
|
120
|
+
-sALLOW_MEMORY_GROWTH=1
|
|
121
|
+
-sINITIAL_MEMORY=16777216 # 16MB initial
|
|
122
|
+
-sMAXIMUM_MEMORY=268435456 # 256MB max
|
|
123
|
+
-sSTACK_SIZE=1048576 # 1MB stack
|
|
124
|
+
|
|
125
|
+
# Bindings
|
|
126
|
+
--bind
|
|
127
|
+
-sNO_DISABLE_EXCEPTION_CATCHING
|
|
128
|
+
|
|
129
|
+
# Optimizations
|
|
130
|
+
-sASSERTIONS=0
|
|
131
|
+
-sMALLOC=emmalloc
|
|
132
|
+
|
|
133
|
+
# Environment
|
|
134
|
+
-sENVIRONMENT=web,worker
|
|
135
|
+
-sFILESYSTEM=0
|
|
136
|
+
-sNO_EXIT_RUNTIME=1
|
|
137
|
+
|
|
138
|
+
# TypeScript definitions
|
|
139
|
+
--emit-tsd vib3.d.ts
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# SIMD for WASM
|
|
143
|
+
if(VIB3_ENABLE_SIMD)
|
|
144
|
+
target_link_options(vib3_wasm PRIVATE -msimd128)
|
|
145
|
+
endif()
|
|
146
|
+
|
|
147
|
+
# Threading for WASM (optional)
|
|
148
|
+
if(VIB3_ENABLE_THREADS)
|
|
149
|
+
target_link_options(vib3_wasm PRIVATE
|
|
150
|
+
-pthread
|
|
151
|
+
-sPTHREAD_POOL_SIZE=4
|
|
152
|
+
)
|
|
153
|
+
endif()
|
|
154
|
+
|
|
155
|
+
# Debug vs Release
|
|
156
|
+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
157
|
+
target_link_options(vib3_wasm PRIVATE
|
|
158
|
+
-sASSERTIONS=2
|
|
159
|
+
-sSAFE_HEAP=1
|
|
160
|
+
-sSTACK_OVERFLOW_CHECK=2
|
|
161
|
+
-g
|
|
162
|
+
)
|
|
163
|
+
else()
|
|
164
|
+
target_link_options(vib3_wasm PRIVATE
|
|
165
|
+
-O3
|
|
166
|
+
-flto
|
|
167
|
+
--closure 1
|
|
168
|
+
)
|
|
169
|
+
endif()
|
|
170
|
+
|
|
171
|
+
# Install WASM files
|
|
172
|
+
install(
|
|
173
|
+
FILES
|
|
174
|
+
${CMAKE_BINARY_DIR}/bin/vib3.js
|
|
175
|
+
${CMAKE_BINARY_DIR}/bin/vib3.wasm
|
|
176
|
+
${CMAKE_BINARY_DIR}/bin/vib3.d.ts
|
|
177
|
+
DESTINATION ${CMAKE_SOURCE_DIR}/../dist/wasm
|
|
178
|
+
)
|
|
179
|
+
endif()
|
|
180
|
+
|
|
181
|
+
# Native tests (not for WASM, only if sources exist)
|
|
182
|
+
if(VIB3_BUILD_TESTS AND NOT EMSCRIPTEN AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/Vec4_test.cpp")
|
|
183
|
+
enable_testing()
|
|
184
|
+
|
|
185
|
+
# Find or fetch GoogleTest
|
|
186
|
+
include(FetchContent)
|
|
187
|
+
FetchContent_Declare(
|
|
188
|
+
googletest
|
|
189
|
+
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
|
|
190
|
+
)
|
|
191
|
+
FetchContent_MakeAvailable(googletest)
|
|
192
|
+
|
|
193
|
+
# Math tests
|
|
194
|
+
if(TARGET vib3_math)
|
|
195
|
+
add_executable(math_tests
|
|
196
|
+
tests/Vec4_test.cpp
|
|
197
|
+
tests/Rotor4D_test.cpp
|
|
198
|
+
tests/Mat4x4_test.cpp
|
|
199
|
+
tests/Projection_test.cpp
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
target_link_libraries(math_tests PRIVATE
|
|
203
|
+
vib3_math
|
|
204
|
+
GTest::gtest_main
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
include(GoogleTest)
|
|
208
|
+
gtest_discover_tests(math_tests)
|
|
209
|
+
endif()
|
|
210
|
+
|
|
211
|
+
# Geometry tests
|
|
212
|
+
if(TARGET vib3_geometry AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/Geometry_test.cpp")
|
|
213
|
+
add_executable(geometry_tests
|
|
214
|
+
tests/Geometry_test.cpp
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
target_link_libraries(geometry_tests PRIVATE
|
|
218
|
+
vib3_geometry
|
|
219
|
+
GTest::gtest_main
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
gtest_discover_tests(geometry_tests)
|
|
223
|
+
endif()
|
|
224
|
+
endif()
|
|
225
|
+
|
|
226
|
+
# Print configuration summary
|
|
227
|
+
message(STATUS "")
|
|
228
|
+
message(STATUS "VIB3 Core Configuration:")
|
|
229
|
+
message(STATUS " Version: ${PROJECT_VERSION}")
|
|
230
|
+
message(STATUS " C++ Standard: ${CMAKE_CXX_STANDARD}")
|
|
231
|
+
message(STATUS " Build WASM: ${VIB3_BUILD_WASM}")
|
|
232
|
+
message(STATUS " Build Tests: ${VIB3_BUILD_TESTS}")
|
|
233
|
+
message(STATUS " Enable SIMD: ${VIB3_ENABLE_SIMD}")
|
|
234
|
+
message(STATUS " Enable Threads:${VIB3_ENABLE_THREADS}")
|
|
235
|
+
message(STATUS " Build Type: ${CMAKE_BUILD_TYPE}")
|
|
236
|
+
message(STATUS "")
|