summaryrefslogtreecommitdiff
path: root/doc/COMPLETED.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/COMPLETED.md')
-rw-r--r--doc/COMPLETED.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/doc/COMPLETED.md b/doc/COMPLETED.md
index bac7206..a3c173d 100644
--- a/doc/COMPLETED.md
+++ b/doc/COMPLETED.md
@@ -2,8 +2,54 @@
This file tracks recently completed tasks, organized by completion date.
+## Archive Index
+
+Detailed historical documents have been moved to `doc/archive/` for reference:
+
+**Analysis & Architecture:**
+- ANALYSIS_VARIABLE_TEMPO.md, ANALYSIS_VARIABLE_TEMPO_V2.md
+- AUDIO_LIFECYCLE_REFACTOR.md, AUDIO_TIMING_ARCHITECTURE.md
+- BUILD_OPTIMIZATION_PROPOSAL.md, BUILD_OPTIMIZATION_PROPOSAL_V2.md
+- PLATFORM_ANALYSIS.md, SHADER_PARAMETRIZATION_PLAN.md
+
+**Handoffs & Summaries:**
+- HANDOFF.md, HANDOFF_2026-02-04.md, HANDOFF_2026-02-08.md, HANDOFF_CLAUDE.md
+- HANDOFF_SCENE_LOADER.md, HANDOFF_SPECTRAL_EDITOR.md
+- PLATFORM_SIDE_QUEST_SUMMARY.md, TASKS_SUMMARY.md
+
+**Debug Reports:**
+- DEBUG_SHADOWS.md, PEAK_FIX_SUMMARY.md, PEAK_METER_DEBUG.md
+- SAMPLE_ACCURATE_TIMING_FIX.md, VISUAL_DEBUG.md
+
+**Testing & Reports:**
+- FINAL_STRIP_REPORT.md, GPU_EFFECTS_TEST_ANALYSIS.md
+
+**Planning Docs:**
+- PHASE2_COMPRESSION.md, SPEC_EDITOR.md, STRIPPING.md
+
+Use `read @doc/archive/FILENAME.md` to access archived documents.
+
## Recently Completed (February 8, 2026)
+- [x] **Shader Parametrization System (Task #73 Phase 0)** (February 8, 2026)
+ - **Goal**: Enable per-frame dynamic parameters for shaders and effects via uniform buffers and .seq syntax
+ - **Implementation**:
+ - **Phase 1**: Created `UniformHelper` template in `src/gpu/uniform_helper.h` for type-safe uniform buffer management
+ - **Phase 2**: Added `FlashEffectParams` struct (color[3], decay_rate, trigger_threshold) and `FlashUniforms` struct with proper WGSL alignment
+ - **Phase 3**: Updated `flash_effect.cc` WGSL shader to use parameterized `flash_color` instead of hardcoded white
+ - **Phase 4**: Implemented per-frame parameter computation in `render()` method - animates color based on time/beat using sinusoidal modulation
+ - **Phase 5**: Extended `seq_compiler.cc` to parse key=value parameters from .seq files and generate struct initialization code
+ - **Critical Bugfix**: Fixed WGSL alignment issue where FlashUniforms was 24 bytes in C++ but shader expected 32 bytes
+ - Root cause: `vec3<f32>` has 16-byte alignment despite 12-byte size
+ - Solution: Added explicit padding (`_pad1[2]`, `_pad2`) and static_assert to enforce 32-byte struct size
+ - Result: Eliminated "Buffer is bound with size 24 where the shader expects 32" validation error
+ - **Syntax**: `EFFECT + FlashEffect 0 1 color=1.0,0.5,0.5 decay=0.95` in demo.seq
+ - **Files**: 11 changed (808+ / 40-), 3 new (uniform_helper.h, test_uniform_helper.cc, SHADER_PARAMETRIZATION_PLAN.md)
+ - **Result**: All 32/32 tests passing, demo runs without validation errors, system ready for extension to other effects
+ - **Commits**: c7d1dd7 (feature implementation), 775c0ea (alignment fix)
+ - **Size Impact**: ~400-500 bytes net (UniformHelper overhead + per-effect params)
+ - **Next**: Task #73 - Extend to ChromaAberrationEffect, GaussianBlurEffect, DistortEffect, SolarizeEffect
+
- [x] **3D Rendering & Shadow Improvements (Task A)** (February 8, 2026)
- [x] **Task A.1 (Shadow Investigation)**: Investigated mesh shadows appearing as bounding boxes. Documented that this is a design limitation of the hybrid renderer (AABB proxy for meshes in SDF pass). Created `doc/DEBUG_SHADOWS.md` with detailed analysis.
- [x] **Task A.2 (Plane Scaling Fix)**: Fixed `ObjectType::PLANE` distance calculation for non-uniform scaling.