diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-03 09:19:16 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-03 09:19:16 +0100 |
| commit | 04e1c8800f81d7f01e7f52546c75fc39779f72ae (patch) | |
| tree | e3a6adc0e5b647f636d99312ff24f0cb58eed9d4 /TODO.md | |
| parent | 249ee6e8de55b2313c86299d66b1d51abcaec130 (diff) | |
refactor(build): Modularize build system with static libraries
Completed the first part of Task #25. Created static libraries for each subsystem (audio, gpu, 3d, util, procedural) and refactored all executables to link against them. This improves modularity and simplifies the build process. Also fixed linker errors related to glfw, wgpu, and miniaudio.
Diffstat (limited to 'TODO.md')
| -rw-r--r-- | TODO.md | 25 |
1 files changed, 10 insertions, 15 deletions
@@ -2,37 +2,32 @@ This file tracks prioritized tasks with detailed attack plans. -## Priority 1: Platform & Code Hygiene (Task #20) +## Priority 1: Build System Consolidation (Task #25) +**Goal:** Modularize the project and simplify CMake maintenance. +- [ ] **Attack Plan - Subsystem Libraries:** Group source files into static libraries (`audio`, `gpu`, `3d`, `util`) to reduce link line complexity. +- [ ] **Attack Plan - CMake Macros:** Implement `add_demo_library` and `add_demo_executable` macros to handle platform-specific definitions and warnings uniformly. +- [ ] **Attack Plan - Host Tool Helpers:** Consolidate code generation targets into a single CMake helper. + +## Priority 2: Platform & Code Hygiene (Task #20) **Goal:** Clean up the codebase for easier cross-platform maintenance and CRT replacement. - [ ] **Attack Plan - Header Consolidation:** Move all `#ifdef` logic for WebGPU headers and platform-specific shims into `src/platform.h`. - [ ] **Attack Plan - Refactor platform_init:** Change `void platform_init(PlatformState* state, ...)` to `PlatformState platform_init(...)`. - [ ] **Attack Plan - Unified Poll:** Incorporate `platform_get_time()` and `platform_get_aspect_ratio()` updates into `platform_poll()`. - [ ] **Attack Plan - Standard Container Removal:** Replace `std::map`, `std::string`, and `std::vector` in performance-critical or size-sensitive paths with simpler C-style alternatives. -## Priority 2: 3D System Enhancements (Task #18) +## Priority 3: 3D System Enhancements (Task #18) **Goal:** Establish a pipeline for importing complex 3D scenes to replace hardcoded geometry. - [ ] **Attack Plan - Blender Exporter:** Create a Python script (`tools/blender_export.py`) to export meshes/cameras/lights to a binary asset format. - [ ] **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. -## Priority 3: Shader Optimization (Task #21) -**Goal:** Improve GPU performance and reduce shader source bloat. -- [ ] **Attack Plan - Normal Factorization:** Create a standard WGSL helper for normal calculation to avoid duplicate code in every effect. -- [ ] **Attack Plan - Tri-planar Mapping:** Implement bi/tri-planar mapping for procedural textures to improve visual quality on complex SDFs. - ## Future Goals +- [ ] **Task #21: Shader Optimization**: Normal factorization and Tri-planar mapping. - [ ] **Task #5: Spectrogram Editor**: Web-based visual tool for extreme audio compression. -- [ ] **Task #18-B: GPU BVH**: Optimize scene queries with a GPU-based BVH for the new 3D system. - [ ] **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. -## Phase 2: Advanced Size Optimization -- [ ] **Task #22**: Windows Native Platform (Win32 API) - ## Recently Completed +- [x] **Asset System Robustness**: Fixed static initialization order issues by wrapping the asset table in a singleton-style getter (`GetAssetRecordTable()`). - [x] **Shader Asset Integration (Task #24)**: Extracted hardcoded shaders to `.wgsl` assets, updated `asset_packer` for string safety, and refactored C++ code to use `GetAsset`. - [x] **WebGPU Stability & macOS Fixes**: Resolved surface creation failures by adding `GLFW_EXPOSE_NATIVE_COCOA` and fixed validation errors in surface configuration and render pass attachments. -- [x] **Final Build Stripping (Task #8)**: Implemented `STRIP_ALL` macro to remove CLI parsing and debug info. Optimized macOS linker flags (`-dead_strip`). -- [x] **Tracker Asset Sample Integration**: Modified `assets/music.track` for `SAMPLE ASSET_NAME` syntax, updated `tools/tracker_compiler.cc` for parsing and code generation, and finalized `src/audio/tracker.cc` for unified asset sample pasting. -- [x] **Minimal Audio Tracker**: Implemented a pattern and score-based audio tracker system. Details in `doc/TRACKER.md`. -- [x] **WGSL Library (Task 21.1)**: Implemented ShaderComposer for modular WGSL snippet management. |
