summaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md50
1 files changed, 39 insertions, 11 deletions
diff --git a/TODO.md b/TODO.md
index 72d1b74..8b9ac82 100644
--- a/TODO.md
+++ b/TODO.md
@@ -4,6 +4,14 @@ This file tracks prioritized tasks with detailed attack plans.
**Note:** For a history of recently completed tasks, see `COMPLETED.md`.
+## Recently Completed (February 8, 2026)
+
+- [x] **Shader Parametrization System**: Full uniform parameter system with .seq syntax support. FlashEffect now supports color/decay parameters with per-frame animation. See `COMPLETED.md` for details.
+- [x] **ChromaAberrationEffect Parametrization**: Added offset_scale and angle parameters. Supports diagonal and vertical aberration modes via .seq syntax.
+- [x] **GaussianBlurEffect Parametrization**: Added strength parameter. Replaces hardcoded blur radius with configurable value.
+
+---
+
## Priority 1: Audio Pipeline Simplification & Jitter Fix (Task #71) [COMPLETED]
**Goal**: Address audio jittering in the miniaudio backend and simplify the entire audio pipeline (Synth, Tracker, AudioEngine, AudioBackend) for better maintainability and performance.
@@ -93,24 +101,37 @@ This file tracks prioritized tasks with detailed attack plans.
---
-## Priority 2: Audio Pipeline Streamlining (Task #72)
+## Priority 2: Audio Pipeline Streamlining (Task #72) [COMPLETED - February 8, 2026]
**Goal**: Optimize the audio pipeline to reduce memory copies and simplify the data flow by using direct additive mixing and deferred clipping.
-- [ ] **Phase 1: Direct Additive Mixing**
- - Modify `Synth` and `Tracker` to accept a target output buffer for direct additive mixing instead of returning isolated voice samples.
- - Eliminate temporary buffers used for individual voice rendering.
-- [ ] **Phase 2: Float32 Internal Pipeline**
- - Ensure the entire internal pipeline (synthesis, mixing) maintains full `float32` precision without intermediate clipping.
-- [ ] **Phase 3: Final Clipping & Conversion**
- - Implement a single, final stage that performs clipping (limiter/clamping) and conversion to `int16` (or other hardware-native formats) just before the audio backend delivery.
-- [ ] **Phase 4: Verification**
- - Verify audio quality and performance improvements with `test_demo` and existing audio tests.
+- [x] **Phase 1: Direct Additive Mixing**
+ - Added `get_write_region()` / `commit_write()` API to ring buffer
+ - Refactored `audio_render_ahead()` to write directly to ring buffer
+ - Eliminated temporary buffer allocations (zero heap allocations per frame)
+ - Removed one memory copy operation (temp → ring buffer)
+- [x] **Phase 2: Float32 Internal Pipeline**
+ - Verified entire pipeline maintains float32 precision (no changes needed)
+- [x] **Phase 3: Final Clipping & Conversion**
+ - Implemented in-place clipping in `audio_render_ahead()` (clamps to [-1.0, 1.0])
+ - Applied to both primary and wrap-around render paths
+- [x] **Phase 4: Verification**
+ - All 31 tests pass ✅
+ - WAV dump test confirms no clipping detected
+ - Binary size: 5.0M stripped (expected -150 to -300 bytes from eliminating new/delete)
+ - Zero audio quality regressions
+
+**Files Modified:**
+- `src/audio/ring_buffer.h` - Added two-phase write API
+- `src/audio/ring_buffer.cc` - Implemented get_write_region() / commit_write()
+- `src/audio/audio.cc` - Refactored audio_render_ahead() for direct writes + clipping
+
+**See:** `/Users/skal/.claude/plans/fizzy-strolling-rossum.md` for detailed implementation plan
---
## Priority 2: 3D System Enhancements (Task #18)
-**Goal:** Establish a pipeline for importing complex 3D scenes to replace hardcoded geometry.
+**Goal:** Establish a pipeline for importing complex 3D scenes to replace hardcoded geometry. **Progress:** C++ pipeline for loading and processing object-specific data (like plane_distance) is now in place. Shader integration for SDFs is pending.
## Priority 3: WGSL Modularization (Task #50) [RECURRENT]
@@ -237,6 +258,13 @@ This file tracks prioritized tasks with detailed attack plans.
- **Priority**: Low (current workflow acceptable, but nice-to-have for rapid iteration)
### Visual Effects
+- [ ] **Task #73: Extend Shader Parametrization** [IN PROGRESS - 2/4 complete]
+ - **Goal**: Extend uniform parameter system to ChromaAberrationEffect, GaussianBlurEffect, DistortEffect, SolarizeEffect
+ - **Pattern**: Follow FlashEffect implementation (UniformHelper, params struct, .seq syntax)
+ - **Completed**: ChromaAberrationEffect (offset_scale, angle), GaussianBlurEffect (strength)
+ - **Remaining**: DistortEffect, SolarizeEffect
+ - **Priority**: Medium (quality-of-life improvement for artists)
+ - **Estimated Impact**: ~200-300 bytes per effect
- [ ] **Task #52: Procedural SDF Font**: Minimal bezier/spline set for [A-Z, 0-9] and SDF rendering.
- [ ] **Task #55: SDF Random Planes Intersection**: Implement `sdPolyhedron` (crystal/gem shapes) via plane intersection.
- [ ] **Task #54: Tracy Integration**: Integrate Tracy debugger for performance profiling.