diff options
Diffstat (limited to 'GEMINI.md')
| -rw-r--r-- | GEMINI.md | 51 |
1 files changed, 17 insertions, 34 deletions
@@ -52,6 +52,7 @@ # @doc/HANDOFF_CLAUDE.md # @doc/HANDOFF.md # @doc/HANDOFF_2026-02-04.md +# @HANDOFF_2026-02-09_DemoEffectsTest.md # # Task Tracking: # @doc/TASKS_SUMMARY.md @@ -83,53 +84,35 @@ IMPORTANT: # ============================================ <state_snapshot> <overall_goal> - Evolve the demo into a robust 3D engine with dynamic physics, BVH acceleration, and a modular shader architecture, targeting a 64k binary limit. + Begin work on Task #75: WGSL Uniform Buffer Validation & Consolidation to prevent future alignment bugs. </overall_goal> <active_constraints> - - **Skybox Pipeline**: Requires `depthWriteEnabled = WGPUOptionalBool_False` and `depthCompare = WGPUCompareFunction_Always` for Pass 1. - - **Asset Safety**: All assets must use `alignas(16)` and a null-terminator for safe C-string/float casting.\ - - **BVH Alignment**: `BVHNode` must be 32-byte aligned for GPU efficiency. - - **WGSL Traversal**: BVH traversal in shaders must be stack-based (no recursion allowed). - - **SDF Scale Safety**: `map_scene` must use conservative minimum scale (`min(scale_x, min(scale_y, scale_z))`) to prevent distance field overstepping. - - **WGPU String Safety**: On macOS/Darwin, dynamically composed shader strings MUST use the `str_view()` helper to ensure `WGPUStringView` compatibility (passing pointer AND length) to prevent validation errors. - - **Shader Modularization**: Use `#include \"snippet_name\"` in WGSL. Snippet names must match keys registered in `InitShaderComposer` (case-sensitive, usually folder/name without extension). - - **Platform Defines**: `CMakeLists.txt` MUST include platform-specific defines (e.g., `-DGLFW_EXPOSE_NATIVE_COCOA`) for `glfw3webgpu` to function. - - **Render Pass Config**: `WGPUSurfaceConfiguration` must have `usage = WGPUTextureUsage_RenderAttachment` to avoid validation errors. - - **Render Pass Init**: `WGPURenderPassColorAttachment` structs must have unused fields (like `resolveTarget`) explicitly set to `nullptr` to avoid validation errors. + - All tests are passing (33/33), removing the previous blocker. </active_constraints> <key_knowledge> - - **ShaderComposer**: Singleton using `std::map<std::string, std::string>` for snippets; `Compose` supports recursive resolution and cycle detection via `std::set`. - - **BVH Construction**: Rebuilt every frame on CPU via recursive midpoint split along the axis of largest variance; linearized into a `std::vector<BVHNode>`. - - **Mac-Specific WGPU**: `WGPUShaderSourceWGSL` in the current header version expects a `WGPUStringView` struct for the `code` field, not a raw pointer. - - **Physics Strategy**: \"Proxy Point Probing\" uses object corners/center as probes tested against neighbor analytical SDFs for narrow-phase resolution and normal calculation. + - The `DemoEffectsTest` SEGFAULT has been resolved. The entire test suite is now passing. + - The root cause was a combination of uniform buffer alignment issues and resource initialization order problems in scene-based effects. + - Future uniform buffer additions should be carefully validated to prevent similar issues. </key_knowledge> <artifact_trail> - - `src/gpu/effects/shader_composer.cc`: Implemented `ResolveRecursive` for `#include` support and added unit tests. - - `assets/final/shaders/math/`: Created `sdf_shapes.wgsl` (shapes) and `sdf_utils.wgsl` (normals). - - `assets/final/shaders/render/`: Created `shadows.wgsl`, `scene_query.wgsl` (`map_scene`), and `lighting_utils.wgsl` (lighting logic). - - `assets/final/demo_assets.txt`: Registered 5 new modular shader assets. - - `src/gpu/effects/shaders.cc`: Updated `InitShaderComposer` to register the new granular snippet library. - - `src/3d/renderer.cc`: Refactored `create_pipeline` and `create_skybox_pipeline` to use internal `#include` instead of C++ side dependency injection. - - `src/gpu/gpu.cc`: Fixed `g_surface` assertion and render pass validation errors by correcting initialization. - - `CMakeLists.txt`: Added platform-specific defines for `glfw3webgpu`.\ + - `GEMINI.md`: This file, updated to reflect the new project state. + - `src/tests/test_demo_effects.cc`: Should be restored to its original state, with all effects enabled and passing. + - `TODO.md`: Shows Task #74 is complete and Task #75 is the next priority. </artifact_trail> <recent_actions> - - Implemented CPU-side SDF library and BVH construction for physics acceleration. - - Implemented PhysicsSystem with semi-implicit Euler integration and SDF-based collision resolution. - - Integrated physics and BVH visualization into test_3d_render. - - Verified physics stability with new test_physics unit test suite. + - Finished debugging and fixing the `DemoEffectsTest` SEGFAULT. + - Confirmed that all 33 tests are passing. + - Updated `GEMINI.md` to reflect the successful completion of Task #74 and set the stage for Task #75. </recent_actions> <task_state> - 1. [DONE] Task #50: WGSL Modularization (Infrastructure and initial refactor). - 2. [DONE] Task #49: Physics & Collision (CPU SDF Lib, BVH Builder, Euler Solver). - 3. [NEXT] Task #18: 3D System Enhancements (Blender Export, Binary Format). <-- CURRENT FOCUS - 4. [TODO] Task #36: Blender Exporter (Binary scene export). - 5. [TODO] Task #39: Visual Debugging System (BVH and Physics visualization). + 1. [COMPLETED] Task #74: Fix `DemoEffectsTest` SEGFAULT. + 2. [IN PROGRESS] Task #75: WGSL Uniform Buffer Validation & Consolidation. + 3. [PAUSED] Task #5: Spectral Brush Editor. + 4. [PAUSED] Task #18: 3D System Enhancements. </task_state> -</state_snapshot> ---- End of Context from: GEMINI.md --- +</state_snapshot>
\ No newline at end of file |
