@vib3code/sdk 2.0.1 → 2.0.3-canary.0a63e71
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 +245 -0
- package/DOCS/ANDROID_DEPLOYMENT.md +59 -0
- package/DOCS/ARCHITECTURE.md +1 -0
- package/DOCS/CI_TESTING.md +2 -0
- package/DOCS/CLI_ONBOARDING.md +3 -1
- package/DOCS/CONTROL_REFERENCE.md +2 -0
- package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +119 -0
- package/DOCS/ENV_SETUP.md +2 -0
- package/DOCS/EPIC_SCROLL_EVENTS.md +775 -0
- package/DOCS/EXPANSION_DESIGN.md +979 -0
- package/DOCS/EXPANSION_DESIGN_ULTRA.md +389 -0
- package/DOCS/EXPORT_FORMATS.md +2 -0
- package/DOCS/GPU_DISPOSAL_GUIDE.md +2 -0
- package/DOCS/HANDOFF_LANDING_PAGE.md +156 -0
- package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +495 -0
- package/DOCS/LICENSING_TIERS.md +2 -0
- package/DOCS/MASTER_PLAN_2026-01-31.md +4 -2
- package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +939 -0
- package/DOCS/OBS_SETUP_GUIDE.md +2 -0
- package/DOCS/OPTIMIZATION_PLAN_MATH.md +119 -0
- package/DOCS/PRODUCT_STRATEGY.md +65 -0
- package/DOCS/PROJECT_SETUP.md +2 -0
- package/DOCS/README.md +105 -0
- package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +99 -0
- package/DOCS/RENDERER_LIFECYCLE.md +2 -0
- package/DOCS/REPO_MANIFEST.md +2 -0
- package/DOCS/ROADMAP.md +113 -0
- package/DOCS/SCROLL_TIMELINE_v3.md +271 -0
- package/DOCS/SITE_REFACTOR_PLAN.md +102 -0
- package/DOCS/STATUS.md +26 -0
- package/DOCS/SYSTEM_INVENTORY.md +37 -32
- package/DOCS/TELEMETRY_EXPORTS.md +2 -0
- package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +87 -0
- package/DOCS/VISUAL_ANALYSIS_FACETAD.md +135 -0
- package/DOCS/VISUAL_ANALYSIS_SIMONE.md +97 -0
- package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +88 -0
- package/DOCS/WEBGPU_STATUS.md +121 -38
- package/DOCS/XR_BENCHMARKS.md +2 -0
- package/DOCS/archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +1 -0
- package/DOCS/archive/DEV_TRACK_ANALYSIS.md +1 -0
- package/DOCS/archive/DEV_TRACK_PLAN_2026-01-07.md +1 -0
- package/DOCS/archive/SESSION_014_PLAN.md +1 -0
- package/DOCS/archive/SESSION_LOG_2026-01-07.md +1 -0
- package/DOCS/archive/STRATEGIC_BLUEPRINT_2026-01-07.md +1 -0
- package/DOCS/archive/SYSTEM_AUDIT_2026-01-30.md +1 -0
- package/DOCS/archive/WEBGPU_STATUS_2026-02-15_STALE.md +1 -0
- package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +3 -1
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +233 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +129 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +144 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-16.md +110 -0
- package/DOCS/dev-tracks/PERF_UPGRADE_2026-02-16.md +310 -0
- package/DOCS/dev-tracks/README.md +12 -0
- package/README.md +26 -13
- 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/docs/webgpu-live.html +1 -1
- package/package.json +41 -30
- package/src/agent/index.js +1 -3
- package/src/agent/mcp/MCPServer.js +1220 -144
- package/src/agent/mcp/index.js +1 -1
- package/src/agent/mcp/stdio-server.js +264 -0
- package/src/agent/mcp/tools.js +498 -31
- package/src/cli/index.js +431 -47
- 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/experimental/GameLoop.js +72 -0
- package/src/experimental/LatticePhysics.js +100 -0
- package/src/experimental/LiveDirector.js +143 -0
- package/src/experimental/PlayerController4D.js +154 -0
- package/src/experimental/VIB3Actor.js +138 -0
- package/src/experimental/VIB3Compositor.js +117 -0
- package/src/experimental/VIB3Link.js +122 -0
- package/src/experimental/VIB3Orchestrator.js +146 -0
- package/src/experimental/VIB3Universe.js +109 -0
- package/src/experimental/demos/CrystalLabyrinth.js +202 -0
- package/src/export/TradingCardManager.js +3 -4
- package/src/export/index.js +11 -1
- package/src/faceted/FacetedSystem.js +260 -394
- package/src/games/glyph-war/GlyphWarVisualizer.js +641 -0
- package/src/geometry/generators/Crystal.js +2 -2
- package/src/geometry/warp/HypersphereCore.js +53 -24
- package/src/holograms/HolographicVisualizer.js +84 -98
- package/src/holograms/RealHolographicSystem.js +194 -43
- package/src/math/Mat4x4.js +308 -105
- package/src/math/Rotor4D.js +124 -40
- package/src/math/Vec4.js +200 -103
- 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 +31 -22
- 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/ShaderLoader.js +38 -0
- package/src/render/ShaderProgram.js +4 -4
- package/src/render/UnifiedRenderBridge.js +4 -1
- package/src/render/backends/WebGPUBackend.js +8 -4
- package/src/render/index.js +27 -2
- package/src/scene/Node4D.js +74 -24
- package/src/scene/index.js +4 -4
- package/src/shaders/common/geometry24.glsl +65 -0
- package/src/shaders/common/geometry24.wgsl +54 -0
- package/src/shaders/common/rotation4d.glsl +4 -4
- package/src/shaders/common/rotation4d.wgsl +2 -2
- package/src/shaders/common/uniforms.wgsl +15 -8
- package/src/shaders/faceted/faceted.frag.glsl +220 -80
- package/src/shaders/faceted/faceted.frag.wgsl +144 -90
- package/src/shaders/holographic/holographic.frag.glsl +28 -9
- package/src/shaders/holographic/holographic.frag.wgsl +112 -41
- package/src/shaders/quantum/quantum.frag.glsl +1 -0
- package/src/shaders/quantum/quantum.frag.wgsl +6 -4
- package/src/testing/ParallelTestFramework.js +2 -2
- package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +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 +14 -8
- 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/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +0 -34
- package/DOCS/DEV_TRACK_ANALYSIS.md +0 -77
- package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +0 -42
- package/DOCS/SESSION_014_PLAN.md +0 -195
- package/DOCS/SESSION_LOG_2026-01-07.md +0 -56
- package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +0 -72
- package/DOCS/SYSTEM_AUDIT_2026-01-30.md +0 -738
- /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
3
|
+
# Visual Analysis: clickerss.com
|
|
4
|
+
|
|
5
|
+
**Captured: 2026-02-10 via Playwright with wheel-based scrolling**
|
|
6
|
+
**Method**: Real Chromium screenshots at 5 scroll positions (wheel events)
|
|
7
|
+
**Page height**: 9,950px (~11x viewport)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Scroll Journey (Frame by Frame)
|
|
12
|
+
|
|
13
|
+
### s00 — Top (scrollY=0)
|
|
14
|
+
**Dramatic B&W hero photograph**
|
|
15
|
+
- Background: pure white
|
|
16
|
+
- Massive B&W photograph: woman's face looking upward, cropped tight
|
|
17
|
+
- Image fills ~90% of viewport width, extends below fold
|
|
18
|
+
- "CLICKERSS" wordmark top-left in thin spaced uppercase
|
|
19
|
+
- Grid/dot icon center-top (hamburger/menu)
|
|
20
|
+
- Shopping bag icon top-right with "0"
|
|
21
|
+
- No other text or elements visible — the photograph IS the hero
|
|
22
|
+
- **Pattern**: Photography-as-hero. No text tagline, no CTA button, no gradient. Just a massive, emotional B&W portrait. The image does all the talking.
|
|
23
|
+
|
|
24
|
+
### s01 — scrollY=2400
|
|
25
|
+
**Massive serif typography with text-image overlap**
|
|
26
|
+
- Left side: HUGE serif italic text — "CADA CAMPAÑA TIENE UN PROPOSITO." (~150px+ font)
|
|
27
|
+
- Text fills entire left half of viewport
|
|
28
|
+
- Right side at midpoint: device mockups (laptop + phone) showing portfolio work
|
|
29
|
+
- Below-right: MORE massive serif text — "ELEVAR MARCAS QUE DESEAN MARCAR LA DIFERENCIA"
|
|
30
|
+
- Bottom-left: portfolio image (fashion/beauty brand "MAISON LINA")
|
|
31
|
+
- The text and images OVERLAP — text runs behind/through images, images overlap text
|
|
32
|
+
- **Pattern**: Text-image interweaving. The massive serif text and the portfolio images occupy the SAME space, overlapping. Neither takes precedence — they share the viewport, creating a collage-like effect. This is the "text as visual element" pattern taken to an extreme.
|
|
33
|
+
|
|
34
|
+
### s02 — scrollY=4800
|
|
35
|
+
**Product photography + service description**
|
|
36
|
+
- Top-left: iPhone product photos (phone shown from behind, showing camera modules)
|
|
37
|
+
- Images are placed asymmetrically, partially overlapping
|
|
38
|
+
- Right side: "VIDEOS CORPORATIVOS" heading in serif
|
|
39
|
+
- Below: "CONTAMOS TU HISTORIA DE MANERA UNICA" subheading
|
|
40
|
+
- Body text paragraph below
|
|
41
|
+
- Lower-left: portrait photo of man with flowing hair, cropped as rectangle
|
|
42
|
+
- Clean white background throughout
|
|
43
|
+
- **Pattern**: Asymmetric service showcase. Product photos LEFT, description text RIGHT. Portrait photo breaks the pattern by appearing lower-left. The layout is deliberately irregular.
|
|
44
|
+
|
|
45
|
+
### s03 — scrollY=7200
|
|
46
|
+
**Mixed content section**
|
|
47
|
+
- Various portfolio/service content
|
|
48
|
+
- Continuing the white background
|
|
49
|
+
- Images and text positioned asymmetrically
|
|
50
|
+
- No dark/light mode switch — entire site stays on white
|
|
51
|
+
|
|
52
|
+
### s04 — scrollY=9050 (bottom)
|
|
53
|
+
**CTA footer with massive typography**
|
|
54
|
+
- ENORMOUS serif text: "TU PRESENCIA DIGITAL ESTA A PUNTO DE DESPEGAR" (fills ~60% of viewport height)
|
|
55
|
+
- Arrow → + call-to-action body text below
|
|
56
|
+
- Footer nav: HOME, SERVICIOS, PORTFOLIO, SOBRE MI, CONTACTO, COMPRAR (all spaced across full width)
|
|
57
|
+
- Thin horizontal rule
|
|
58
|
+
- Bottom bar: legal links + copyright
|
|
59
|
+
- **Pattern**: Typography-as-CTA. Instead of a small "Contact us" button, the entire viewport is filled with massive serif text that IS the CTA. The typography scale makes the message impossible to ignore.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Key Design Patterns for VIB3+ Translation
|
|
64
|
+
|
|
65
|
+
### 1. Photography-as-Hero (No Competing Elements)
|
|
66
|
+
The hero has ONE thing: a massive photograph. No text overlay, no buttons, no gradients. The image fills the space and the viewer must engage with it.
|
|
67
|
+
**For VIB3+**: The opening cinematic with VIB3CODE text mask should have the visualizer as the ONLY visual element — no competing UI, no description text. Let the GPU canvas be the hero image equivalent.
|
|
68
|
+
|
|
69
|
+
### 2. Text-Image Interweaving
|
|
70
|
+
Typography and images share the same spatial region, overlapping deliberately. Text runs behind images; images overlap text boundaries. Neither element "wins" — they coexist.
|
|
71
|
+
**For VIB3+**: Cascade card overlays could have text that extends BEYOND the card boundaries, overlapping into adjacent cards. The `.cascade-overlay` text could be positioned to extend past the clip-path edge.
|
|
72
|
+
|
|
73
|
+
### 3. Massive Serif Typography as Primary Visual Element
|
|
74
|
+
Text isn't just information — it's the dominant visual pattern. Lines of text at 100-200px size create visual rhythm and weight comparable to images.
|
|
75
|
+
**For VIB3+**: Section titles could be dramatically larger — not just `3rem` headings but `clamp(4rem, 12vw, 10rem)` viewport-filling text.
|
|
76
|
+
|
|
77
|
+
### 4. Consistent White Background (No Mode Switching)
|
|
78
|
+
Unlike Simone's dark/light mode transitions, clickerss stays on white throughout. All visual variety comes from photography and typography scale.
|
|
79
|
+
**For VIB3+**: This validates that NOT every section needs a color mode switch. Some sections can maintain a consistent background and let the visualizer parameters alone create the visual change.
|
|
80
|
+
|
|
81
|
+
### 5. CTA as Giant Typography
|
|
82
|
+
The footer CTA fills the viewport with a single sentence. The scale of the text makes it feel like a billboard or poster.
|
|
83
|
+
**For VIB3+**: The CTA section could use massive outlined text (similar to Simone's footer "SIMONE" strokes) rather than a traditional button layout.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
*Analysis based on actual Playwright screenshots captured with wheel-event scrolling.*
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
3
|
+
# Visual Analysis: facetad.com
|
|
4
|
+
|
|
5
|
+
**Captured: 2026-02-10 via Playwright with wheel-based scrolling**
|
|
6
|
+
**Method**: Real Chromium screenshots at 10 scroll positions (wheel events)
|
|
7
|
+
**Page height**: 15,082px (~16.8x viewport)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Scroll Journey (Frame by Frame)
|
|
12
|
+
|
|
13
|
+
### s00 — Top (scrollY=0)
|
|
14
|
+
**Ultra-minimal hero: single line of text on vast cream emptiness**
|
|
15
|
+
- Background: warm cream/off-white (#F5F0EB range)
|
|
16
|
+
- Centered text: "We approach every facet of design with a sense of wonder."
|
|
17
|
+
- Text is small, light gray, serif — occupies maybe 5% of viewport
|
|
18
|
+
- Tiny chevron/scroll indicator below text
|
|
19
|
+
- No nav, no logo visible at top — just vast empty space above and below
|
|
20
|
+
- **Pattern**: Extreme negative space. The emptiness IS the design. Forces the eye to the single sentence.
|
|
21
|
+
|
|
22
|
+
### s01 — scrollY=1680
|
|
23
|
+
**Parallelogram image explosion around centered logo**
|
|
24
|
+
- FACET logo + "ARCHITECTURAL DESIGN" centered
|
|
25
|
+
- Tagline below logo
|
|
26
|
+
- 6+ architectural photos SCATTERED around the logo in **parallelogram/skewed clip-paths**
|
|
27
|
+
- Images are different sizes, at different angles/positions
|
|
28
|
+
- Images overlap each other and the logo text
|
|
29
|
+
- Some images partially exit viewport edges
|
|
30
|
+
- **Pattern**: Scattered parallelogram gallery. Images use CSS `transform: skew()` or `clip-path: polygon()` to create non-rectangular shapes. Creates a chaotic but visually rich collage effect.
|
|
31
|
+
|
|
32
|
+
### s02 — scrollY=3360
|
|
33
|
+
**Full parallelogram gallery — maximum density**
|
|
34
|
+
- ~20+ architectural photos visible, ALL in parallelogram shapes
|
|
35
|
+
- Images scattered across entire viewport at various sizes (small thumbnails to medium)
|
|
36
|
+
- FACET logo still centered but partially obscured by overlapping images
|
|
37
|
+
- Some images overlap each other creating depth layers
|
|
38
|
+
- Images appear to float at different z-levels
|
|
39
|
+
- **Pattern**: This is the peak of the scatter effect. The sheer density + non-rectangular shapes + overlap creates an effect like looking through a shattered window at many projects simultaneously. Very strong depth illusion.
|
|
40
|
+
|
|
41
|
+
### s03 — scrollY=5040
|
|
42
|
+
**Large diagonal project images**
|
|
43
|
+
- Two massive project photos with strong diagonal clip-path edges
|
|
44
|
+
- Top: building at dusk with warm-lit windows, cut diagonally
|
|
45
|
+
- Bottom-right: bright blue architectural image, also cut diagonally
|
|
46
|
+
- A red/orange geometric element visible at top-right (matching brand color)
|
|
47
|
+
- Images take up most of viewport, overlapping
|
|
48
|
+
- **Pattern**: From scattered small thumbnails, the images have GROWN into massive hero-sized images. The diagonal edges create dramatic slash transitions between photos. This is the parallelogram theme at architectural scale.
|
|
49
|
+
|
|
50
|
+
### s04 — scrollY=6720
|
|
51
|
+
**Single massive image with diagonal wipe to cream**
|
|
52
|
+
- Top-left: large project photo (modern building exterior with glass, lawn, outdoor seating)
|
|
53
|
+
- Diagonal edge cuts from top-left to bottom-right
|
|
54
|
+
- Below the diagonal: pure cream emptiness
|
|
55
|
+
- The diagonal creates a dramatic "wipe" transition from content to void
|
|
56
|
+
- **Pattern**: Diagonal section transition. Not horizontal, not curved — a sharp diagonal slash separates photo content from empty space. This is how facetad handles section boundaries.
|
|
57
|
+
|
|
58
|
+
### s05 — scrollY=8400
|
|
59
|
+
**Markets section: overlapping photos + text**
|
|
60
|
+
- Top: "MARKETS WE SERVE" heading in red/terracotta
|
|
61
|
+
- Two large photos side by side showing hospitality interior (bar/restaurant)
|
|
62
|
+
- Photos overlap slightly, creating a diptych
|
|
63
|
+
- Right side: "HOSPITALITY" heading in red italic + body text paragraph
|
|
64
|
+
- Classic asymmetric layout: images LEFT, text RIGHT
|
|
65
|
+
- **Pattern**: Asymmetric portfolio section — large overlapping photos paired with small text. The overlap between the two photos adds depth.
|
|
66
|
+
|
|
67
|
+
### s06 — scrollY=10080
|
|
68
|
+
**Services section: clean asymmetric layout**
|
|
69
|
+
- "OUR DESIGN SERVICES" heading top-left in small red text
|
|
70
|
+
- "ARCHITECTURE" heading in large red italic text, left side
|
|
71
|
+
- Body text paragraph below heading
|
|
72
|
+
- Large architectural rendering (aerial view of commercial building) floats right at ~55% width
|
|
73
|
+
- Image has subtle shadow/depth
|
|
74
|
+
- Clean, spacious layout with generous white space
|
|
75
|
+
- **Pattern**: Standard asymmetric card (text left, image right) but with extreme white space. The image is large and positioned to feel like it's floating above the page.
|
|
76
|
+
|
|
77
|
+
### s07 — scrollY=11760
|
|
78
|
+
**Services continued + diagonal color transition beginning**
|
|
79
|
+
- "OUR DESIGN SERVICES" still visible at top
|
|
80
|
+
- "FF&E" heading in red italic with body text, left side
|
|
81
|
+
- No image — text only section
|
|
82
|
+
- Bottom of viewport: the red/terracotta color BEGINS appearing as a diagonal band
|
|
83
|
+
- The diagonal enters from bottom-right, cutting upward to the left
|
|
84
|
+
- **Pattern**: The diagonal section divider is introducing the red brand color. It's the same diagonal slash pattern but now used for a full COLOR MODE TRANSITION (cream → red).
|
|
85
|
+
|
|
86
|
+
### s08 — scrollY=13440
|
|
87
|
+
**Full diagonal color split: red to cream**
|
|
88
|
+
- Top ~40%: solid red/terracotta (#C0392B range)
|
|
89
|
+
- Diagonal slash cuts from upper-left to lower-right
|
|
90
|
+
- Bottom ~60%: back to cream
|
|
91
|
+
- "START A CONVERSATION" in large red italic text on cream
|
|
92
|
+
- "Talk with one of our award-winning architects about your next project." body text
|
|
93
|
+
- "Schedule A Call" link in red
|
|
94
|
+
- **Pattern**: The CTA section uses the diagonal color split as a dramatic reveal. The red block slides away diagonally to reveal the CTA on cream. Creates a cinematic wipe effect.
|
|
95
|
+
|
|
96
|
+
### s09 — scrollY=14182 (bottom)
|
|
97
|
+
**Footer: diagonal split cream/red**
|
|
98
|
+
- Top-left: cream background with FACET logo + address + contact info
|
|
99
|
+
- Diagonal divider cuts from upper-right to lower-left
|
|
100
|
+
- Bottom-right: solid red/terracotta background with nav links + social links + subscribe form
|
|
101
|
+
- "SUBSCRIBE" heading with email input and "SUBMIT" button
|
|
102
|
+
- "Website by Novel" credit at bottom-left
|
|
103
|
+
- **Pattern**: Footer echoes the diagonal theme. The entire footer is split diagonally — warm cream on one side, brand red on the other. The diagonal is the site's signature visual motif from hero through footer.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Key Design Patterns for VIB3+ Translation
|
|
108
|
+
|
|
109
|
+
### 1. Parallelogram/Skewed Image Gallery
|
|
110
|
+
Project images use non-rectangular clip-paths (parallelograms, rhomboids). Images are scattered at different sizes, positions, and overlap each other. This creates a shattered-glass collage effect with real depth.
|
|
111
|
+
**For VIB3+**: Cascade cards could use parallelogram clip-paths instead of rectangles. The clip-path morphing system already supports polygon interpolation — add skewed/angled shapes to the shape sequence.
|
|
112
|
+
|
|
113
|
+
### 2. Diagonal Section Dividers
|
|
114
|
+
Every section boundary uses a diagonal slash — not horizontal lines, not curves. The same angle (~30-40 degrees) is used consistently.
|
|
115
|
+
**For VIB3+**: Section dividers could use angled clip-paths or CSS `polygon()` instead of horizontal borders. The diagonal creates much more visual energy than straight horizontal lines.
|
|
116
|
+
|
|
117
|
+
### 3. Density Progression (Sparse → Dense → Sparse)
|
|
118
|
+
The page starts with extreme emptiness (one line of text), builds to maximum density (20+ scattered images), then relaxes back to spacious layouts before ending with another sparse CTA.
|
|
119
|
+
**For VIB3+**: The morph stages should follow this arc — start minimal, build to visual complexity peak, then settle.
|
|
120
|
+
|
|
121
|
+
### 4. Diagonal Color Mode Transitions
|
|
122
|
+
The cream → red transition doesn't happen at a horizontal boundary. A diagonal band of red slashes across the viewport, creating a cinematic wipe effect.
|
|
123
|
+
**For VIB3+**: Dark/light mode switches could use diagonal clip-path animations instead of straight horizontal borders.
|
|
124
|
+
|
|
125
|
+
### 5. Extreme Negative Space
|
|
126
|
+
The hero is 95% empty. Text occupies a tiny fraction of the viewport. This forces attention and creates anticipation.
|
|
127
|
+
**For VIB3+**: The opening cinematic should start sparse — let the visualizer breathe in vast empty space before the content builds up.
|
|
128
|
+
|
|
129
|
+
### 6. Consistent Brand Angle
|
|
130
|
+
The diagonal angle is THE signature of the site. It appears in: image clip-paths, section dividers, color transitions, footer layout. The same ~30deg angle repeats everywhere.
|
|
131
|
+
**For VIB3+**: Pick a consistent geometric motif and repeat it across different contexts — clip-paths, dividers, card shapes, overlay patterns.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
*Analysis based on actual Playwright screenshots captured with wheel-event scrolling.*
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
3
|
+
# Visual Analysis: weare-simone.webflow.io
|
|
4
|
+
|
|
5
|
+
**Captured: 2026-02-10 via Playwright with wheel-based scrolling**
|
|
6
|
+
**Method**: Real Chromium screenshots at 8 scroll positions (wheel events trigger Lenis/GSAP)
|
|
7
|
+
**Page height**: 12,062px (~13.4x viewport)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Scroll Journey (Frame by Frame)
|
|
12
|
+
|
|
13
|
+
### s00 — Top (scrollY=0)
|
|
14
|
+
**Giant "SIMONE" wordmark fills ~80% of viewport width**
|
|
15
|
+
- Background: warm cream/off-white with subtle noise texture
|
|
16
|
+
- Typography: black, extremely bold condensed sans-serif, all caps
|
|
17
|
+
- Text takes up full viewport — no other content visible except:
|
|
18
|
+
- Small "SIMONE" logo top-left (dark teal, tiny)
|
|
19
|
+
- Green pill-shaped nav button top-right with dot indicators
|
|
20
|
+
- Minimal nav links: "Work", "About", "Contact"
|
|
21
|
+
- **Pattern**: Hero section is JUST typography. No images, no gradients. The text IS the design. Massive scale creates impact.
|
|
22
|
+
|
|
23
|
+
### s01 — scrollY=2400
|
|
24
|
+
**Complete mode switch: cream → dark teal**
|
|
25
|
+
- Background: deep dark teal (#0A3239 range) with subtle noise texture
|
|
26
|
+
- Large white serif/display text: "What if we could alter reality *for the better?*"
|
|
27
|
+
- "for the better?" in lime/chartreuse green (#CCFF66)
|
|
28
|
+
- Below: smaller body text (cream colored) explaining studio mission
|
|
29
|
+
- Content sits within a large rounded-corner container (~24px radius)
|
|
30
|
+
- **Pattern**: DRAMATIC full-palette inversion at section boundary. The entire color scheme flips. This is the "dark/light mode threshold" pattern.
|
|
31
|
+
|
|
32
|
+
### s02 — scrollY=4800
|
|
33
|
+
**Asymmetric case study card (IKEA)**
|
|
34
|
+
- Still dark teal background
|
|
35
|
+
- Large serif heading: "Transform how we browse"
|
|
36
|
+
- Small body text on left side
|
|
37
|
+
- IKEA logo (white on dark)
|
|
38
|
+
- Green pill button: "View case study" with arrow
|
|
39
|
+
- **Product image floats right**: desk lamp in dark tones, offset ~60% to the right
|
|
40
|
+
- Below: "Turn up the magic" heading beginning to enter viewport
|
|
41
|
+
- **Pattern**: Asymmetric card layout. Text content LEFT, floating product image RIGHT. The image is positioned outside the text column — creates overlap depth.
|
|
42
|
+
|
|
43
|
+
### s03 — scrollY=7200
|
|
44
|
+
**Sephora + Nike stacked case studies**
|
|
45
|
+
- Top: Sephora section ending — "Draw people into your world..." text top-right
|
|
46
|
+
- Sephora logo centered, "View case study" green pill
|
|
47
|
+
- Red 3D cosmetic product floats LEFT (~25% from left edge)
|
|
48
|
+
- Bottom half: Nike "Get people moving" section beginning
|
|
49
|
+
- Nike logo at bottom
|
|
50
|
+
- **Pattern**: Alternating asymmetry — IKEA had image RIGHT, Sephora has image LEFT, Nike will have image RIGHT. This creates a zigzag visual rhythm as you scroll.
|
|
51
|
+
|
|
52
|
+
### s04 — scrollY=9600
|
|
53
|
+
**Client logos strip on cream background**
|
|
54
|
+
- Mode switch BACK to light: cream/off-white background
|
|
55
|
+
- Three logos visible: Dior, Monzo, Disney
|
|
56
|
+
- Very clean, minimal spacing
|
|
57
|
+
- Logos are small and muted (dark teal on cream)
|
|
58
|
+
- **Pattern**: Palate cleanser section. After intense dark case studies, a minimal light section resets visual fatigue. Brief breathing room.
|
|
59
|
+
|
|
60
|
+
### s05 — scrollY=11162 (bottom)
|
|
61
|
+
**CTA footer with marquee**
|
|
62
|
+
- Mode switch back to dark teal
|
|
63
|
+
- "Ready to alter reality?" centered heading (small, white)
|
|
64
|
+
- GIANT horizontal marquee: "Work with us" repeated, scrolling horizontally
|
|
65
|
+
- Green circular CTA button between the marquee text repetitions
|
|
66
|
+
- Below the marquee: "SIMONE" in massive OUTLINED/STROKE typography (no fill, just border)
|
|
67
|
+
- Footer bar: © 2026, Instagram, LinkedIn, "Site by Kin", 1% Planet badge
|
|
68
|
+
- **Pattern**: The footer echoes the hero — same giant "SIMONE" text but now as outlined strokes instead of filled. Creates bookend/closure. The horizontal marquee adds perpetual motion.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Key Design Patterns for VIB3+ Translation
|
|
73
|
+
|
|
74
|
+
### 1. Typography-As-Hero
|
|
75
|
+
The hero section has NOTHING except giant text. No background effects, no images. The text IS the visual impact. For VIB3+: the opening cinematic should let the visualizer fill the entire space without competing with too many UI elements.
|
|
76
|
+
|
|
77
|
+
### 2. Hard Dark/Light Mode Switches
|
|
78
|
+
Sections don't cross-fade between modes — they SNAP. Cream → dark teal is a sharp boundary (though with Lenis smoothing it feels smooth). For VIB3+: system/parameter presets should change sharply at section boundaries, not gradually.
|
|
79
|
+
|
|
80
|
+
### 3. Zigzag Asymmetric Cards
|
|
81
|
+
Case study cards alternate: image-right → image-left → image-right. This creates visual rhythm and prevents monotony. For VIB3+: cascade cards or triptych panels should have alternating asymmetry rather than centered symmetry.
|
|
82
|
+
|
|
83
|
+
### 4. Floating Product Objects
|
|
84
|
+
Images are positioned OUTSIDE their text columns, overlapping into adjacent space. This creates real depth layers. For VIB3+: visualizer canvases could extend beyond their logical containers, bleeding into adjacent sections.
|
|
85
|
+
|
|
86
|
+
### 5. Marquee CTA
|
|
87
|
+
"Work with us" scrolls infinitely horizontally. This adds persistent motion that's independent of scroll position. For VIB3+: a parameter-driven text ticker or rotating geometry showcase could serve the same purpose.
|
|
88
|
+
|
|
89
|
+
### 6. Outlined Typography Echo
|
|
90
|
+
The hero's filled "SIMONE" becomes outlined/stroked at the footer. The same shape, different rendering. For VIB3+: the same geometry could be shown in different visualization systems at different scroll positions (Quantum fill → Faceted outline).
|
|
91
|
+
|
|
92
|
+
### 7. Subtle Noise Texture
|
|
93
|
+
Both light and dark backgrounds have a visible noise/grain texture overlay. This adds tactile quality and prevents "flat digital" feeling. For VIB3+: a CSS grain overlay on sections would add this same warmth.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
*Analysis based on actual Playwright screenshots captured with wheel-event scrolling.*
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
3
|
+
# Visual Analysis: tableside.com.au
|
|
4
|
+
|
|
5
|
+
**Captured: 2026-02-10 via Playwright with wheel-based scrolling**
|
|
6
|
+
**Method**: Real Chromium screenshots at 5 scroll positions (wheel events)
|
|
7
|
+
**Page height**: 8,370px (~9.3x viewport)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Scroll Journey (Frame by Frame)
|
|
12
|
+
|
|
13
|
+
### s00 — Top (scrollY=0)
|
|
14
|
+
**Bold typography hero with warm palette**
|
|
15
|
+
- Background: warm cream/beige (#F5EDE4 range)
|
|
16
|
+
- "TABLESIDE" logo top-left in coral/orange + "CREATIVES" subscript
|
|
17
|
+
- Hamburger menu (three lines) top-right in coral
|
|
18
|
+
- MASSIVE bold sans-serif text: "FOOD & DRINK DIGITAL CREATIVES" in coral/orange (#E85D3A range)
|
|
19
|
+
- Text fills ~70% of viewport, extremely bold weight (900+), tight line-height
|
|
20
|
+
- Below hero: "HOSPITALITY MARKETING AUSTRALIA" in black, right-aligned
|
|
21
|
+
- "WHAT WE DO" label left side
|
|
22
|
+
- Large body text in coral: "Crafting bold, unforgettable brands through content to propel hospitality and food & beverage businesses towards sustainable growth and standout success."
|
|
23
|
+
- Social links: INSTAGRAM, FACEBOOK, LINKEDIN, TIKTOK — right-aligned, stacked
|
|
24
|
+
- Chat widget bottom-right
|
|
25
|
+
- **Pattern**: Typography-as-hero with strong brand color. The hero text IS the brand statement, rendered in the signature coral color at maximum weight. Social links positioned as a sidebar element right-aligned.
|
|
26
|
+
|
|
27
|
+
### s01 — scrollY=2400
|
|
28
|
+
**Portfolio card: asymmetric split layout**
|
|
29
|
+
- Large food photography LEFT (~50% viewport width): close-up of artisanal pizza
|
|
30
|
+
- Card text RIGHT: "ROCCELLA EAST MELB" restaurant name + orange icon
|
|
31
|
+
- "WEB, CONTENT, PAID, SOCIAL & EDM" service tags + "+ INFO" link in coral
|
|
32
|
+
- Below: second portfolio card beginning — dark photo of restaurant interior
|
|
33
|
+
- "STEER DINING ROOM" title overlaid on dark photo, bottom-left
|
|
34
|
+
- **Pattern**: Asymmetric portfolio cards. Image takes one half, text the other. The split is ~50/50 with generous spacing. Different cards have different background treatments (light photo vs dark atmospheric photo).
|
|
35
|
+
|
|
36
|
+
### s02 — scrollY=4800
|
|
37
|
+
**Small dark portfolio card**
|
|
38
|
+
- Dark restaurant interior photo with chefs in white uniforms
|
|
39
|
+
- "WAGYU YA TEPPANYAKI" title overlaid top in white
|
|
40
|
+
- "WEB, CONTENT, PAID, SOCIALS & EDM" service tags bottom-left
|
|
41
|
+
- "YAKIKAMI" title visible below
|
|
42
|
+
- Card appears much smaller than previous cards (~40% viewport height)
|
|
43
|
+
- **Pattern**: Variable card sizing. Not all portfolio cards are the same size. This card is notably smaller and darker than the previous ones, creating visual rhythm through size variation.
|
|
44
|
+
|
|
45
|
+
### s03 — scrollY=7200
|
|
46
|
+
**CTA section with strong color**
|
|
47
|
+
- Solid coral/orange background filling top ~40% of viewport
|
|
48
|
+
- "READY TO TAKE A SEAT AT OUR TABLE?" in large white text, centered
|
|
49
|
+
- "BOOK FREE STRATEGY SESSION" button: white border on coral background, centered
|
|
50
|
+
- Below CTA: split-color footer section
|
|
51
|
+
- LEFT half: warm cream with contact info, address, phone, hours
|
|
52
|
+
- RIGHT half: dark navy (#1A1A3E) with food photography (overhead table shot with multiple dishes)
|
|
53
|
+
- Photo floats slightly above the navy background edge
|
|
54
|
+
|
|
55
|
+
### s04 — scrollY=7470 (bottom)
|
|
56
|
+
**Footer nav + legal**
|
|
57
|
+
- Footer navigation bar: HOME, WORK, SERVICES, ABOUT US, JOBS, CONTACT, NEWS (left-aligned in coral)
|
|
58
|
+
- Social links: INSTAGRAM, FACEBOOK, LINKEDIN (right-aligned in coral)
|
|
59
|
+
- Bottom bar: Privacy Policy, "TABLESIDE" centered logo, © 2024
|
|
60
|
+
- **Pattern**: Footer uses the brand coral for all link text against cream background. Clean horizontal nav layout.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Key Design Patterns for VIB3+ Translation
|
|
65
|
+
|
|
66
|
+
### 1. Three-Tone Palette (Cream + Coral + Navy)
|
|
67
|
+
The site uses exactly three colors consistently: warm cream background, coral/orange for typography and accents, dark navy for contrast sections. No gradients, no additional colors.
|
|
68
|
+
**For VIB3+**: A disciplined three-tone palette could anchor the landing page — e.g., dark background + one accent hue from the visualizer + white text.
|
|
69
|
+
|
|
70
|
+
### 2. Variable Portfolio Card Sizing
|
|
71
|
+
Portfolio cards are NOT uniform. Some span full viewport height, others are compact. Some have light photos, others have dark atmospheric shots. Size variation creates rhythm.
|
|
72
|
+
**For VIB3+**: Cascade cards don't all need to be the same size. The clip-path morphing system could make some cards appear larger (wider window) and others more compact (narrower window), even though the underlying card is the same size.
|
|
73
|
+
|
|
74
|
+
### 3. Split-Color Sections
|
|
75
|
+
The contact/footer area uses a vertical split: cream on the left, navy on the right, with a food photo bridging the two zones. This creates a strong compositional split.
|
|
76
|
+
**For VIB3+**: Could use a vertical split in the CTA or feature sections — one half showing one visualization system, the other showing a different one.
|
|
77
|
+
|
|
78
|
+
### 4. CTA as Bold Color Block
|
|
79
|
+
The CTA section is a solid block of coral color with white text. Simple, bold, impossible to scroll past without noticing.
|
|
80
|
+
**For VIB3+**: The CTA section could use a solid color block with a visualizer running behind it at low opacity, creating color + depth.
|
|
81
|
+
|
|
82
|
+
### 5. Service Tags as Metadata
|
|
83
|
+
Each portfolio card lists specific services (WEB, CONTENT, PAID, SOCIAL & EDM) in small uppercase text. This adds information density without cluttering the visual.
|
|
84
|
+
**For VIB3+**: Cascade cards could show parameter metadata (geometry name, system type, hue value) in small utility text that adds technical depth.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
*Analysis based on actual Playwright screenshots captured with wheel-event scrolling.*
|
package/DOCS/WEBGPU_STATUS.md
CHANGED
|
@@ -1,38 +1,121 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## What
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
3
|
+
# WebGPU Backend Status
|
|
4
|
+
|
|
5
|
+
**Last updated**: 2026-02-15
|
|
6
|
+
|
|
7
|
+
> Previous version archived at `DOCS/archive/WEBGPU_STATUS_2026-02-15_STALE.md`.
|
|
8
|
+
|
|
9
|
+
## Current State: Functional but Not Validated End-to-End
|
|
10
|
+
|
|
11
|
+
The WebGPU backend is **architecturally complete** — real device init, shader compilation, pipeline creation, uniform buffers, render passes. It is not a stub. However, no end-to-end browser validation has confirmed correct pixel output through the WebGPU path.
|
|
12
|
+
|
|
13
|
+
## What Is Implemented
|
|
14
|
+
|
|
15
|
+
| Component | Status | File |
|
|
16
|
+
|-----------|--------|------|
|
|
17
|
+
| Device/adapter/context init | Done | `src/render/backends/WebGPUBackend.js` (1410 lines) |
|
|
18
|
+
| Canvas configuration + resize | Done | WebGPUBackend.js |
|
|
19
|
+
| WGSL shader module compilation | Done | WebGPUBackend.js `compileShader()` |
|
|
20
|
+
| Fullscreen quad pipeline | Done | WebGPUBackend.js `createFullscreenPipeline()` |
|
|
21
|
+
| Custom geometry pipeline | Done | WebGPUBackend.js `createPipeline()` |
|
|
22
|
+
| Uniform buffer management | Done | WebGPUBackend.js `createCustomUniformBuffer()` / `updateCustomUniforms()` |
|
|
23
|
+
| Fullscreen quad rendering | Done | WebGPUBackend.js `renderFullscreenQuad()` |
|
|
24
|
+
| Geometry rendering | Done | WebGPUBackend.js `renderGeometry()` / `renderWithPipeline()` |
|
|
25
|
+
| Manual render pass control | Done | WebGPUBackend.js `beginRenderPass()` / `endRenderPass()` |
|
|
26
|
+
| Vertex/index buffer creation | Done | WebGPUBackend.js |
|
|
27
|
+
| Texture + sampler creation | Done | WebGPUBackend.js |
|
|
28
|
+
| Resource cleanup | Done | WebGPUBackend.js `dispose()` |
|
|
29
|
+
| WebGL/WebGPU bridge abstraction | Done | `src/render/UnifiedRenderBridge.js` |
|
|
30
|
+
| Uniform packing (JS → GPU) | Done | `packVIB3Uniforms()` in UnifiedRenderBridge.js |
|
|
31
|
+
| FacetedSystem WebGPU path | Done | `src/faceted/FacetedSystem.js` `initWithBridge()` |
|
|
32
|
+
|
|
33
|
+
## WGSL Shader Files
|
|
34
|
+
|
|
35
|
+
All seven WGSL files are real, substantive shaders (not stubs):
|
|
36
|
+
|
|
37
|
+
| File | Lines | Content |
|
|
38
|
+
|------|-------|---------|
|
|
39
|
+
| `src/shaders/common/fullscreen.vert.wgsl` | 18 | Fullscreen triangle vertex shader |
|
|
40
|
+
| `src/shaders/common/uniforms.wgsl` | 49 | Canonical VIB3Uniforms struct definition |
|
|
41
|
+
| `src/shaders/common/rotation4d.wgsl` | 87 | All six 4D rotation matrices + projection |
|
|
42
|
+
| `src/shaders/common/geometry24.wgsl` | 55 | All 24 geometry SDFs |
|
|
43
|
+
| `src/shaders/faceted/faceted.frag.wgsl` | 206 | Complete faceted fragment shader |
|
|
44
|
+
| `src/shaders/quantum/quantum.frag.wgsl` | 362 | Complete quantum fragment shader |
|
|
45
|
+
| `src/shaders/holographic/holographic.frag.wgsl` | 255 | Complete holographic fragment shader |
|
|
46
|
+
|
|
47
|
+
## Canonical Uniform Struct Layout
|
|
48
|
+
|
|
49
|
+
All WGSL uniform structs **must** match `packVIB3Uniforms()` in `UnifiedRenderBridge.js`. The canonical layout uses only `f32` scalars and one `vec2<f32>` to avoid WGSL alignment surprises:
|
|
50
|
+
|
|
51
|
+
```wgsl
|
|
52
|
+
struct VIB3Uniforms {
|
|
53
|
+
time: f32, // index 0
|
|
54
|
+
_pad0: f32, // index 1
|
|
55
|
+
resolution: vec2<f32>, // index 2-3
|
|
56
|
+
geometry: f32, // index 4
|
|
57
|
+
rot4dXY: f32, // index 5
|
|
58
|
+
rot4dXZ: f32, // index 6
|
|
59
|
+
rot4dYZ: f32, // index 7
|
|
60
|
+
rot4dXW: f32, // index 8
|
|
61
|
+
rot4dYW: f32, // index 9
|
|
62
|
+
rot4dZW: f32, // index 10
|
|
63
|
+
dimension: f32, // index 11
|
|
64
|
+
gridDensity: f32, // index 12
|
|
65
|
+
morphFactor: f32, // index 13
|
|
66
|
+
chaos: f32, // index 14
|
|
67
|
+
speed: f32, // index 15
|
|
68
|
+
hue: f32, // index 16
|
|
69
|
+
intensity: f32, // index 17
|
|
70
|
+
saturation: f32, // index 18
|
|
71
|
+
mouseIntensity: f32, // index 19
|
|
72
|
+
clickIntensity: f32, // index 20
|
|
73
|
+
bass: f32, // index 21
|
|
74
|
+
mid: f32, // index 22
|
|
75
|
+
high: f32, // index 23
|
|
76
|
+
layerScale: f32, // index 24
|
|
77
|
+
layerOpacity: f32, // index 25
|
|
78
|
+
_pad1: f32, // index 26
|
|
79
|
+
layerColorR: f32, // index 27
|
|
80
|
+
layerColorG: f32, // index 28
|
|
81
|
+
layerColorB: f32, // index 29
|
|
82
|
+
densityMult: f32, // index 30
|
|
83
|
+
speedMult: f32, // index 31
|
|
84
|
+
breath: f32, // index 32
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Rule**: Do NOT use `vec3<f32>` for layerColor — it triggers 16-byte alignment padding that breaks the flat Float32Array packing. Always use three separate f32 fields.
|
|
89
|
+
|
|
90
|
+
## System Integration
|
|
91
|
+
|
|
92
|
+
| System | WebGPU Path | Notes |
|
|
93
|
+
|--------|-------------|-------|
|
|
94
|
+
| **Faceted** | Single-canvas via UnifiedRenderBridge | Inline WGSL matches canonical layout. Only system with a complete WebGPU path wired in the demo page. |
|
|
95
|
+
| **Quantum** | Multi-canvas via MultiCanvasBridge | Requires 5 separate canvas DOM elements. Falls back to WebGL on `docs/webgpu-live.html` (single canvas). |
|
|
96
|
+
| **Holographic** | Multi-canvas via MultiCanvasBridge | Same 5-canvas requirement. Falls back to WebGL on demo page. |
|
|
97
|
+
|
|
98
|
+
## Remaining Work
|
|
99
|
+
|
|
100
|
+
1. **End-to-end browser validation** — Run FacetedSystem through WebGPU in a Chrome/Edge browser with WebGPU enabled and confirm correct visual output matches WebGL.
|
|
101
|
+
2. **Quantum/Holographic single-canvas path** — Either provide a single-canvas WebGPU fallback or create a demo page with the required 5-canvas DOM structure.
|
|
102
|
+
3. **Automated smoke test** — A Playwright test (with WebGPU-capable browser) that initializes the bridge, renders one frame, and confirms no errors.
|
|
103
|
+
4. **Shader sync verification** — Extend `tools/shader-sync-verify.js` to also verify WGSL struct layouts match `packVIB3Uniforms()`.
|
|
104
|
+
|
|
105
|
+
## Demo Page
|
|
106
|
+
|
|
107
|
+
`docs/webgpu-live.html` — Tries WebGPU for FacetedSystem, always WebGL for Quantum/Holographic. Shows green "WEBGPU" or yellow "WEBGL" badge.
|
|
108
|
+
|
|
109
|
+
## Testing
|
|
110
|
+
|
|
111
|
+
WebGPU cannot be validated in headless CI without GPU support. Strategy:
|
|
112
|
+
- CI: Run WebGL tests + shader lint + struct layout checks
|
|
113
|
+
- Manual: Smoke test in Chrome/Edge with `chrome://flags/#enable-unsafe-webgpu`
|
|
114
|
+
|
|
115
|
+
## File Locations
|
|
116
|
+
|
|
117
|
+
- Backend: `src/render/backends/WebGPUBackend.js`
|
|
118
|
+
- Bridge: `src/render/UnifiedRenderBridge.js`
|
|
119
|
+
- Packing: `packVIB3Uniforms()` in UnifiedRenderBridge.js
|
|
120
|
+
- WGSL shaders: `src/shaders/`
|
|
121
|
+
- Demo: `docs/webgpu-live.html`
|
package/DOCS/XR_BENCHMARKS.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
Last reviewed: 2026-02-17
|
|
2
|
+
|
|
1
3
|
# Dev Track Session — January 31, 2026
|
|
2
4
|
|
|
3
5
|
**Branch**: `claude/review-project-status-BwVbr`
|
|
@@ -87,7 +89,7 @@
|
|
|
87
89
|
| File | Purpose |
|
|
88
90
|
|------|---------|
|
|
89
91
|
| `DOCS/MASTER_PLAN_2026-01-31.md` | Master plan with 43 items |
|
|
90
|
-
| `DOCS/DEV_TRACK_SESSION_2026-01-31.md` | This session log |
|
|
92
|
+
| `DOCS/dev-tracks/DEV_TRACK_SESSION_2026-01-31.md` | This session log |
|
|
91
93
|
| `DOCS/OBS_SETUP_GUIDE.md` | OBS integration guide |
|
|
92
94
|
| `LICENSE` | MIT License |
|
|
93
95
|
| `CHANGELOG.md` | v1.0.0 + v2.0.0 release notes |
|