diff options
| -rw-r--r-- | PROJECT_CONTEXT.md | 12 | ||||
| -rw-r--r-- | TODO.md | 14 | ||||
| -rw-r--r-- | doc/ASSET_SYSTEM.md | 25 |
3 files changed, 20 insertions, 31 deletions
diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md index bd19aa4..430854e 100644 --- a/PROJECT_CONTEXT.md +++ b/PROJECT_CONTEXT.md @@ -28,7 +28,7 @@ Style: ## Project Roadmap ### Recently Completed -- **Task #20: Platform & Code Hygiene**: Consolidated platform-specific shims and WebGPU headers into `platform.h`. Refactored `platform_init` and `platform_poll` for better abstraction. Removed STL containers (`std::map`, `std::vector`, `std::string`) from `AssetManager` and procedural generators. +- **Task #20: Platform & Code Hygiene**: Consolidated platform-specific shims and WebGPU headers into `platform.h`. Refactored `platform_init` and `platform_poll` for better abstraction. Removed STL containers from initial hot paths (`AssetManager`, `procedural`). Full STL removal for CRT replacement is deferred to the final optimization phase. - **Task #26: Shader Asset Testing & Validation**: Developed comprehensive tests for `ShaderComposer` and WGSL asset loading/composition. Added a shader validation test to ensure production assets are valid. - **Asset Pipeline Improvement**: Created a robust `gen_spectrograms.sh` script to automate the conversion of `.wav` and `.aif` files to `.spec` format, replacing the old, fragile script. Added 13 new drum and bass samples to the project. - **Build System Consolidation (Task #25)**: Modularized the build by creating subsystem libraries (audio, gpu, 3d, util, procedural) and implemented helper macros to reduce boilerplate in `CMakeLists.txt`. This improves build maintenance and prepares for future CRT replacement. @@ -44,11 +44,11 @@ Style: --- ## Next Up -- **Task #20: Platform & Code Hygiene** - - [ ] Gather all cross-compile and platform-specific conditional code into `platform.h`. - - [ ] Refactor `platform_init()` and `platform_poll()` for cleaner abstraction. - - [ ] Consolidate WebGPU header inclusions. - - [ ] Remove `std::map`/`std::vector` from hot paths to prepare for CRT replacement. +- **Task #20: Platform & Code Hygiene** (Completed) + - [x] Gather all cross-compile and platform-specific conditional code into `platform.h`. + - [x] Refactor `platform_init()` and `platform_poll()` for cleaner abstraction. + - [x] Consolidate WebGPU header inclusions. + - [ ] Remove `std::map`/`std::vector` from remaining paths (Deferred to Phase 2). - **Task #18: 3D System Enhancements** - [ ] **Blender Exporter**: Create script to export scenes to internal binary format. @@ -39,8 +39,14 @@ This file tracks prioritized tasks with detailed attack plans. - [ ] **Attack Plan - Asset Ingestion:** Update `asset_packer` to handle the new 3D binary format. - [ ] **Attack Plan - Runtime Loader:** Implement a minimal C++ parser to load the scene data into the ECS/Renderer. -## Future Goals -- [ ] **Task #21: Shader Optimization**: Normal factorization and Tri-planar mapping. -- [ ] **Task #5: Spectrogram Editor**: Web-based visual tool for extreme audio compression. +## Phase 2: Size Optimization (Final Goal) + +- [ ] **Full STL Removal**: Replace all remaining `std::vector`, `std::map`, and `std::string` usage with custom minimal containers or C-style arrays to allow for CRT replacement. (Minimal Priority - deferred to end). + - [ ] **Task #22: Windows Native Platform**: Replace GLFW with direct Win32 API calls for the final 64k push. -- [ ] **Task #23: Shader Performance Analysis**: Analyze shader performance using Xcode Metal debugger on macOS.
\ No newline at end of file + +- [ ] **Spectrogram Quantization (Task #28)**: research optimal frequency bin distribution. + + + +## Future Goals diff --git a/doc/ASSET_SYSTEM.md b/doc/ASSET_SYSTEM.md index 9cf15ba..5f89380 100644 --- a/doc/ASSET_SYSTEM.md +++ b/doc/ASSET_SYSTEM.md @@ -168,26 +168,9 @@ Shader code (WGSL) can also be managed as assets. ## Medium Priority (Code Hygiene & Maintainability) -### Task #20.1: Remove STL from Asset Manager (Part of Task #20) +### Task #20.1: Remove STL from Asset Manager (Part of Task #20) - COMPLETED **Goal**: Eliminate `std::map` and `std::string` to prepare for CRT replacement. - -**Attack Plan**: -- [ ] **20.1.1**: Replace `kAssetManagerProcGenFuncMap` (line 21 in `asset_manager.cc`) - - Switch to static array lookup or compile-time switch-case - - Example: - ```cpp - static const struct { const char* name; ProcGenFunc func; } kProcGenFuncs[] = { - {"gen_noise", procedural::gen_noise}, - {"gen_grid", procedural::gen_grid}, - {"make_periodic", procedural::make_periodic}, - }; - ``` -- [ ] **20.1.2**: Replace `std::map` in `asset_packer.cc` (build-time tool, lower priority) -- [ ] **20.1.3**: Verify no STL usage remains in `src/util/asset_manager.cc` - -**Size Impact**: Minor (few KB), but critical for future CRT replacement. - -**Dependency**: None. +**Status**: Initial removal for `AssetManager` hot paths completed. Full removal across the codebase deferred to Phase 2. --- @@ -284,5 +267,5 @@ For the **64k goal**, prioritize in this order: 1. **Task #27** (Compression) - Biggest size win 2. **Task #29** (Shader Minification) - Easy win, low risk 3. **Task #28** (Spectrogram Quantization) - Medium effort, high impact -4. **Task #20.1** (Remove STL) - Required for future CRT replacement -5. **Task #18.1** (3D Assets) - Once size budget allows +4. **Task #18.1** (3D Assets) - Once size budget allows +5. **Full STL Removal** - Deferred to final optimization phase. |
