summaryrefslogtreecommitdiff
path: root/PROJECT_CONTEXT.md
AgeCommit message (Collapse)Author
7 hoursdocs: Document FFT-based DCT/IDCT milestone in project contextskal
10 hoursdocs: Milestone - Shader Stability & Test Infrastructure (February 6, 2026)skal
## Summary Completed critical stability improvements resolving all shader validation errors and establishing comprehensive test infrastructure to prevent future regressions. ## Key Achievements ### 1. Demo Stability Restored - demo64k: Runs cleanly without WebGPU errors - test_3d_render: No longer crashes on startup - All 22/23 tests pass (FftTest unrelated to shader work) ### 2. Critical Bugs Fixed **Bug #1**: renderer_3d.wgsl dead code using non-existent inverse() function - WGSL doesn't provide matrix inverse - Validator checks all code paths, even unreachable ones - Also removed undefined in.normal reference **Bug #2**: sdf_utils.wgsl & lighting.wgsl signature mismatch - get_normal_basic(obj_type: f32) → get_normal_basic(obj_params: vec4<f32>) - Fixed type mismatch with get_dist() calls **Bug #3**: scene_query_linear.wgsl binding error (ROOT CAUSE) - Linear mode incorrectly declared binding 2 (BVH buffer) - Copy-paste error: Linear shader was identical to BVH shader - Pipeline created without binding 2 → Shader expected binding 2 → Crash - Fixed: Replaced BVH traversal with proper linear iteration ### 3. Test Infrastructure Created test_shader_compilation.cc: - Compiles all production shaders through WebGPU - Validates both BVH and Linear composition modes - Catches syntax errors, binding mismatches, type errors - Would have caught all three bugs fixed in this milestone **Test Gap Analysis**: - Old: test_shader_assets only checked keywords (not compilation) - New: Real GPU validation with wgpuDeviceCreateShaderModule - Result: Comprehensive regression prevention ## Files Modified - assets/final/shaders/renderer_3d.wgsl (removed dead code) - assets/final/shaders/sdf_utils.wgsl (fixed signature) - assets/final/shaders/lighting.wgsl (fixed signature) - assets/final/shaders/render/scene_query_linear.wgsl (removed BVH code) - src/tests/test_shader_compilation.cc (new test) - CMakeLists.txt (added new test) - TODO.md (documented completion) - PROJECT_CONTEXT.md (added milestone) ## Impact ✅ Production stability: No crashes or WebGPU errors ✅ Test coverage: Shader compilation validated in CI ✅ Developer experience: Clear error messages on shader issues ✅ Regression prevention: Future shader bugs caught automatically ## Related Work This milestone complements recent build system improvements (Task C) where shader asset dependency tracking was fixed. Together, these ensure: 1. Shader edits trigger correct rebuilds (build system) 2. Invalid shaders caught before runtime (this milestone) --- handoff(Claude): Shader stability milestone complete. Demo runs cleanly, comprehensive test infrastructure prevents future shader regressions. All shader composition modes (BVH/Linear) validated. 22/23 tests passing. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
13 hoursfeat(audio): Add Spectral Brush runtime (Phase 1 of Task #5)skal
Implement C++ runtime foundation for procedural audio tracing tool. Changes: - Created spectral_brush.h/cc with core API - Linear Bezier interpolation - Vertical profile evaluation (Gaussian, Decaying Sinusoid, Noise) - draw_bezier_curve() for spectrogram rendering - Home-brew deterministic RNG for noise profile - Added comprehensive unit tests (test_spectral_brush.cc) - Tests Bezier interpolation, profiles, edge cases - Tests full spectrogram rendering pipeline - All 9 tests pass - Integrated into CMake build system - Fixed test_assets.cc include (asset_manager_utils.h) Design: - Spectral Brush = Central Curve (Bezier) + Vertical Profile - Enables 50-100x compression (5KB .spec to 100 bytes C++ code) - Future: Cubic Bezier, composite profiles, multi-dimensional curves Documentation: - Added doc/SPECTRAL_BRUSH_EDITOR.md (complete architecture) - Updated TODO.md with Phase 1-4 implementation plan - Updated PROJECT_CONTEXT.md to mark Task #5 in progress Test results: 21/21 tests pass (100%) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
13 hoursdocs: Update documentation for completed build optimization (Task C)skal
Updated documentation to reflect completed build system improvements: TODO.md: - Moved Task C to 'Recently Completed (February 6, 2026)' section - Documented header split (asset_manager_dcl/core/utils) - Documented asset dependency tracking (42 demo + 17 test assets) - Noted 58% performance improvement and critical correctness bug fix - Removed Task C from 'Critical Fixes' section (completed) PROJECT_CONTEXT.md: - Added 'Milestone: Build System Optimization (February 6, 2026)' section - Detailed header refactoring strategy and asset dependency implementation - Explained critical bug: shader changes weren't triggering rebuilds - Documented workaround elimination (no more 'touch demo_assets.txt') HOWTO.md: - Added 'Build System Notes' section after developer build instructions - Explained incremental build behavior and asset tracking - Documented header organization (dcl/core/utils) for developers - Clarified that all asset types (.wgsl, .spec, .obj) are tracked All documentation now accurately reflects current build system state. Ready to begin next task: Spectrogram Editor (HTML).
15 hoursdocs: Update project documentation and regenerate assetsskal
Updated PROJECT_CONTEXT.md and TODO.md to include new critical tasks and reflect changes in task prioritization. Modified doc/3D.md to adjust task descriptions. Modified doc/CONTRIBUTING.md to incorporate the new in-memory replacement rule. Regenerated asset files (src/generated/assets.h, src/generated/assets_data.cc, src/generated/test_assets.h, src/generated/test_assets_data.cc) to reflect any changes in asset definitions. Removed temporary changes to GEMINI.md and HANDOFF.md.
25 hoursmilestone(timeline-editor): Task #57 Phase 1 Complete - Production-Ready Editorskal
═══════════════════════════════════════════════════════════════════ 🎉 MILESTONE: Interactive Timeline Editor - Phase 1 Complete 🎉 ═══════════════════════════════════════════════════════════════════ Task #57 Phase 1 delivers a fully functional web-based timeline editor for demo.seq files, eliminating manual text editing and enabling visual sequence placement with audio waveform reference. ─────────────────────────────────────────────────────────────────── IMPLEMENTED FEATURES (Phase 1.1) ─────────────────────────────────────────────────────────────────── Core Editing: ✅ Load/save demo.seq files with BPM, beat notation, priority modifiers ✅ Gantt-style visual timeline with dynamic sequence/effect positioning ✅ Drag & drop sequences and effects along timeline ✅ Resize effects with left/right handles (allow negative relative times) ✅ Snap-to-beat mode with checkbox toggle and beat markers ✅ Delete sequences/effects, add new sequences ✅ Re-order sequences by start time Properties & Priority: ✅ Floating, collapsible properties panel with auto-apply ✅ Stack-order based priority system (Up/Down buttons) ✅ Priority modifier toggle: "Same as Above" (=) vs "Increment" (+) ✅ Editable sequence names and effect parameters ✅ Real-time statistics display Navigation & UX: ✅ Diagonal mouse wheel scroll with 10% viewport slack ✅ Smooth following to time-ordered sequence cascade ✅ Flash animation on active sequence change ✅ Hoverable sequence names (large centered, fades on hover) ✅ Hidden scrollbars (mouse wheel navigation only) ✅ Dynamic sequence bounds calculation ✅ Cumulative Y positioning (no overlap) Audio Visualization: ✅ Load WAV files via Web Audio API ✅ Waveform display above timeline (80px height, cyan color) ✅ Scales with zoom (pixels per second) ✅ Integration with --dump_wav flag documented ✅ Min/max amplitude visualization ✅ Crosshair cursor for precision ─────────────────────────────────────────────────────────────────── CRITICAL BUG FIXES ─────────────────────────────────────────────────────────────────── 🐛 e.target vs e.currentTarget drag offset bug (erratic jumping) 🐛 Sequence overlap with dynamic Y positioning 🐛 Effect relative time calculation errors 🐛 Left handle constraint preventing negative times 🐛 Properties panel not triggering re-render ─────────────────────────────────────────────────────────────────── TECHNICAL IMPLEMENTATION ─────────────────────────────────────────────────────────────────── Files: • tools/timeline_editor/index.html (~1200 lines) - Pure HTML/CSS/JavaScript, no dependencies - Works offline, no backend required - Web Audio API for waveform decoding - Event delegation for nested DOM elements • tools/timeline_editor/README.md - Usage guide and keyboard shortcuts - WAV file generation with --dump_wav integration - Format specification reference (doc/SEQUENCE.md) • tools/timeline_editor/ROADMAP.md - 3-phase development plan (117-161 hour estimate) - Phase 1.2: Add Effect button (next priority) - Phase 2.5: music.track visualization overlay Key Patterns: • Effect times stored RELATIVE to parent sequence startTime • Sequence visual bounds calculated from min/max effect times • Stack order determines priority (array index) • Snap-to-beat: Math.round(time / beatDuration) * beatDuration • Dynamic cumulative Y positioning prevents overlap • e.currentTarget vs e.target for proper event delegation ─────────────────────────────────────────────────────────────────── DOCUMENTATION UPDATES ─────────────────────────────────────────────────────────────────── TODO.md: • Added Task #57 to Recently Completed section • Comprehensive feature list and bug fix summary PROJECT_CONTEXT.md: • Added Milestone: Interactive Timeline Editor (February 5, 2026) • Documented integration with --dump_wav workflow • Next steps: Phase 1.2 and Phase 2.5 ─────────────────────────────────────────────────────────────────── NEXT STEPS ─────────────────────────────────────────────────────────────────── Phase 1.2: Add Effect Button (Priority: HIGH) - Create effects within sequences via UI - Modal dialog for effect class/timing/args Phase 2.5: Music.track Visualization (Priority: MEDIUM) - Parse music.track file format - Overlay tracker patterns/samples on timeline - Align visual sequences with audio events ─────────────────────────────────────────────────────────────────── IMPACT ─────────────────────────────────────────────────────────────────── ✨ Visual timeline editing now production-ready ✨ Eliminates manual text editing for sequence placement ✨ WAV waveform integration enables precise audio-visual alignment ✨ Snap-to-beat ensures musical timing accuracy ✨ Stack-order priority system simplifies effect layering ─────────────────────────────────────────────────────────────────── handoff(Claude): Timeline editor Phase 1 milestone complete. All core editing features working correctly. Waveform visualization integrated with --dump_wav workflow. Ready for Phase 1.2 (Add Effect button) or Phase 2 productivity enhancements (undo/redo, multi-select, templates). No known bugs. Production-ready for demo.seq editing workflow.
28 hoursfeat(audio): Complete Task #56 - Audio Lifecycle Refactor (All Phases)skal
SUMMARY ======= Successfully completed comprehensive 4-phase refactor of audio subsystem to eliminate fragile initialization order dependency between synth and tracker. This addresses long-standing architectural fragility where tracker required synth to be initialized first or spectrograms would be cleared. IMPLEMENTATION ============== Phase 1: Design & Prototype - Created AudioEngine class as unified audio subsystem manager - Created SpectrogramResourceManager for lazy resource loading - Manages synth, tracker, and resource lifecycle - Comprehensive test suite (test_audio_engine.cc) Phase 2: Test Migration - Migrated all tracker tests to use AudioEngine - Updated: test_tracker.cc, test_tracker_timing.cc, test_variable_tempo.cc, test_wav_dump.cc - Pattern: Replace synth_init() + tracker_init() with engine.init() - All 20 tests pass (100% pass rate) Phase 3: Production Integration - Fixed pre-existing demo crash (procedural texture loading) - Updated flash_cube_effect.cc and hybrid_3d_effect.cc - Migrated main.cc to use AudioEngine - Replaced tracker_update() calls with engine.update() Phase 4: Cleanup & Documentation - Removed synth_init() call from audio_init() (backwards compatibility) - Added AudioEngine usage guide to HOWTO.md - Added audio initialization protocols to CONTRIBUTING.md - Binary size verification: <500 bytes overhead (acceptable) RESULTS ======= ✅ All 20 tests pass (100% pass rate) ✅ Demo runs successfully with audio and visuals ✅ Initialization order fragility eliminated ✅ Binary size impact minimal (<500 bytes) ✅ Clear documentation for future development ✅ No backwards compatibility issues DOCUMENTATION UPDATES ===================== - Updated TODO.md: Moved Task #56 to "Recently Completed" - Updated PROJECT_CONTEXT.md: Added AudioEngine milestone - Updated HOWTO.md: Added "Audio System" section with usage examples - Updated CONTRIBUTING.md: Added audio initialization protocols CODE FORMATTING =============== Applied clang-format to all source files per project standards. FILES CREATED ============= - src/audio/audio_engine.h (new) - src/audio/audio_engine.cc (new) - src/audio/spectrogram_resource_manager.h (new) - src/audio/spectrogram_resource_manager.cc (new) - src/tests/test_audio_engine.cc (new) KEY FILES MODIFIED ================== - src/main.cc (migrated to AudioEngine) - src/audio/audio.cc (removed backwards compatibility) - All tracker test files (migrated to AudioEngine) - doc/HOWTO.md (added usage guide) - doc/CONTRIBUTING.md (added protocols) - TODO.md (marked complete) - PROJECT_CONTEXT.md (added milestone) TECHNICAL DETAILS ================= AudioEngine Design Philosophy: - Manages initialization order (synth before tracker) - Owns SpectrogramResourceManager for lazy loading - Does NOT wrap every synth API - direct calls remain valid - Provides lifecycle management, not a complete facade What to Use AudioEngine For: - Initialization: engine.init() instead of separate init calls - Updates: engine.update(music_time) instead of tracker_update() - Cleanup: engine.shutdown() for proper teardown - Seeking: engine.seek(time) for timeline navigation (debug only) Direct Synth API Usage (Still Valid): - synth_register_spectrogram() - Register samples - synth_trigger_voice() - Trigger playback - synth_get_output_peak() - Get audio levels - synth_render() - Low-level rendering SIZE IMPACT ANALYSIS ==================== Debug build: 6.2MB Size-optimized build: 5.0MB Stripped build: 5.0MB AudioEngine overhead: <500 bytes (0.01% of total) BACKWARD COMPATIBILITY ====================== No breaking changes. Tests that need low-level control can still call synth_init() directly. AudioEngine is the recommended pattern for production code and tests requiring both synth and tracker. handoff(Claude): Task #56 COMPLETE - All 4 phases finished. Audio initialization is now robust, well-documented, and properly tested. The fragile initialization order dependency has been eliminated. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
30 hoursdocs: Update roadmap with new tasks (OBJ, Font, Particles, Tracy)skal
31 hoursfeat(physics): Implement SDF-based physics engine and BVHskal
Completed Task #49. - Implemented CPU-side SDF library (sphere, box, torus, plane). - Implemented Dynamic BVH construction (rebuilt every frame). - Implemented PhysicsSystem with semi-implicit Euler integration and collision resolution. - Added visual debugging for BVH nodes. - Created test_3d_physics interactive test and test_physics unit tests. - Updated project docs and triaged new tasks.
2 daysfeat: Audio playback stability, NOTE_ parsing fix, sample caching, and debug ↵skal
logging infrastructure MILESTONE: Audio System Robustness & Debugging Core Audio Backend Optimization: - Fixed stop-and-go audio glitches caused by timing mismatch - Core Audio optimized for 44.1kHz (10ms periods), but 32kHz expected ~13.78ms - Added allowNominalSampleRateChange=TRUE to force OS-level 32kHz native - Added performanceProfile=conservative for 4096-frame buffers (128ms) - Result: Stable ~128ms callbacks, <1ms jitter, zero underruns Ring Buffer Improvements: - Increased capacity from 200ms to 400ms for tempo scaling headroom - Added comprehensive bounds checking with abort() on violations - Fixed tempo-scaled buffer fill: dt * g_tempo_scale - Buffer maintains 400ms fullness during 2.0x acceleration NOTE_ Parsing Fix & Sample Caching: - Fixed is_note_name() checking only first letter (A-G) - ASSET_KICK_1 was misidentified as A0 (27.5 Hz) - Required "NOTE_" prefix to distinguish notes from assets - Updated music.track to use NOTE_E2, NOTE_G4 format - Discovered resource exhaustion: 14 unique samples → 228 registrations - Implemented comprehensive caching in tracker_init() - Assets: loaded once from AssetManager, cached synth_id - Generated notes: created once, stored in persistent pool - Result: MAX_SPECTROGRAMS 256 → 32 (88% memory reduction) Debug Logging Infrastructure: - Created src/util/debug.h with 7 category macros (AUDIO, RING_BUFFER, TRACKER, SYNTH, 3D, ASSETS, GPU) - Added DEMO_ENABLE_DEBUG_LOGS CMake option (defines DEBUG_LOG_ALL) - Converted all diagnostic code to use category macros - Default build: macros compile to ((void)0) for zero runtime cost - Debug build: comprehensive logging for troubleshooting - Updated CONTRIBUTING.md with pre-commit policy Resource Analysis Tool: - Enhanced tracker_compiler to report pool sizes and cache potential - Analysis: 152/228 spectrograms without caching, 14 with caching - Tool generates optimization recommendations during compilation Files Changed: - CMakeLists.txt: Add DEBUG_LOG option - src/util/debug.h: New debug logging header (7 categories) - src/audio/miniaudio_backend.cc: Use DEBUG_AUDIO/DEBUG_RING_BUFFER - src/audio/ring_buffer.cc: Use DEBUG_RING_BUFFER for underruns - src/audio/tracker.cc: Implement sample caching, use DEBUG_TRACKER - src/audio/synth.cc: Use DEBUG_SYNTH for validation - src/audio/synth.h: Update MAX_SPECTROGRAMS (256→32), document caching - tools/tracker_compiler.cc: Fix is_note_name(), add resource analysis - assets/music.track: Update to use NOTE_ prefix format - doc/CONTRIBUTING.md: Add debug logging pre-commit policy - PROJECT_CONTEXT.md: Document milestone - TODO.md: Mark tasks completed Verification: - Default build: No debug output, audio plays correctly - Debug build: Comprehensive logging, audio plays correctly - Caching working: 14 unique samples cached at init - All tests passing (17/17) handoff(Claude): Audio system now stable with robust diagnostic infrastructure. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2 daysdocs: Update project state with event-based tracker and WAV dumpskal
Updated PROJECT_CONTEXT.md and TODO.md to reflect recent milestones: PROJECT_CONTEXT.md changes: - Updated Audio section: stereo format, variable tempo, event-based triggering - Added milestone for "Event-Based Tracker for Tempo Scaling" - Added milestone for "WAV Dump Backend for Debugging" - Updated Audio Engine architecture section with new details - Updated test counts (17/17 passing) TODO.md changes: - Added "Event-Based Tracker for Tempo Scaling" to Recently Completed * Refactored from pattern compositing to individual event triggering * Dynamic beat calculation enables notes to respect tempo scaling * ActivePattern tracking with start_music_time and next_event_idx * All 17 tests pass, WAV dump confirms correct behavior - Added "WAV Dump Backend for Debugging" to Recently Completed * WavDumpBackend for offline rendering to .wav files * Fixed critical stereo format bug (mono/stereo mismatch) * Added regression test with stereo format assertion * Command-line option: --dump_wav output.wav Current State: - All tests passing: 17/17 (100%) - Audio system: Stereo, variable tempo, event-based tracking - Documentation: Up to date with latest architecture Ready for handoff to Gemini. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2 daysdocs: Milestone state snapshot - Audio system robustness completeskal
Documented completion of major audio system improvements: - Task #51: Tracker timing verification (0.000ms sync confirmed) - Variable tempo system (6 tests, all passing) - Zero production size impact (all test code under !STRIP_ALL) Key achievements: - Perfect audio synchronization verified - Dynamic tempo control ready (music_time abstraction) - Comprehensive test coverage (16/16 tests passing) - Mathematical precision verified for reset tricks Updated: - PROJECT_CONTEXT.md: Added milestone section - HANDOFF_2026-02-04.md: Complete state snapshot for handoff System ready for: - Dynamic tempo animation - Physics & collision (Task #49) - 3D scene pipeline (Task #18) handoff(Claude): Audio milestone complete, state saved Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2 daysdocs: Update project context and state for handoffskal
3 daystest(coverage): Improve Audio coverage (Task #48)skal
Added unit tests for DCT and procedural audio generation. Enhanced synth tests to cover rendering and resource management. Audio subsystem coverage increased to 93%.
3 daystest(coverage): Improve Asset Manager coverage (Task #47)skal
Added tests for runtime error handling in Asset Manager (unknown function, generation failure). Updated asset_packer to warn instead of fail on unknown functions to facilitate testing. Increased coverage from 71% to 88%.
3 daysfeat(tooling): Add directory filtering to coverage report script (Task #46)skal
Updated gen_coverage_report.sh to accept an optional argument for targeting specific directories using lcov --extract.
3 daystest(procedural): Improve test coverage (Task #45)skal
Added tests for gen_perlin and make_periodic. Improved parameter handling checks. Coverage for src/procedural/generator.cc increased to 96%.
3 daysfeat(tooling): Implement code coverage reporting (Task #44)skal
Added CMake support for coverage builds and a script to generate HTML reports using lcov on macOS. Also cleaned up .gitignore.
3 dayshandoff(Claude): Stabilize 3D renderer with rotating skybox and two-pass ↵skal
architecture - Fixed black screen by ensuring clear operations in Pass 2 when Skybox pass is skipped. - Resolved WebGPU validation errors by synchronizing depth-stencil state. - Implemented rotating skybox using world-space ray unprojection (inv_view_proj). - Improved procedural noise generation (multi-octave Value Noise). - Restored scene integrity by correcting object indexing and removing artifacts. - Updated documentation (TODO.md, PROJECT_CONTEXT.md).
3 daysdocs: number all tasks for referenceskal
Assigned reference numbers to all remaining tasks in documentation: - Task #34: Full STL Removal - Task #35: CRT Replacement - Task #36: Blender Exporter - Task #37: Asset Ingestion - Task #38: Runtime Loader - Task #39: Visual Debugging System - Task #40: Advanced Lighting & Transparency - Task #41: Spectrogram Editor HTML Tool - Task #42: Vectorial Spectrogram Reader (C++) - Task #43: Spectrogram Drawing Bricks Ensured consistent task numbering across PROJECT_CONTEXT.md and TODO.md.
3 daysdocs: defer full STL removal to Phase 2skal
Lowered the priority of the 'replace STL' task. It will be addressed in the final optimization phase (Phase 2) to simplify current development. Hot paths in AssetManager and Procedural remain optimized. handoff(Gemini): STL usage is now permitted for non-critical paths until the final optimization phase. PROJECT_CONTEXT.md and TODO.md updated accordingly.
3 daysrefactor: Task #20 - Platform & Code Hygieneskal
- Consolidated all WebGPU shims and platform-specific logic into src/platform.h. - Refactored platform_init to return PlatformState by value and platform_poll to automatically refresh time and aspect_ratio. - Removed STL dependencies (std::map, std::vector, std::string) from AssetManager and Procedural subsystems. - Fixed Windows cross-compilation by adjusting include paths and linker flags in CMakeLists.txt and updating build_win.sh. - Removed redundant direct inclusions of GLFW/glfw3.h and WebGPU headers across the project. - Applied clang-format and updated documentation. handoff(Gemini): Completed Task #20 and 20.1. Platform abstraction is now unified, and core paths are STL-free. Windows build is stable.
4 daysdocs: Finalize documentation and store project statev0.1skal
Consolidated 'Recently Completed' sections in PROJECT_CONTEXT.md and TODO.md. Verified all recent tasks (Build System, Asset Pipeline, Shader Testing) are correctly recorded. Making a final commit to preserve current progress before moving to Platform Hygiene.
4 daystest(shader): Add ShaderComposer and WGSL asset validation tests (Task #26)skal
Implemented comprehensive unit tests for ShaderComposer and a validation test for production WGSL shader assets. This ensures the shader asset pipeline is robust and that all shaders contain required entry points and snippets. Also improved InitShaderComposer to be more robust during testing.
4 daysdocs: Add sub-task for Shader Asset Testing & Validation (Task #26)skal
Added a new sub-task to the project roadmap for developing comprehensive tests for ShaderComposer and WGSL shader code assets. This will ensure robustness and correctness of the shader asset pipeline.
4 daysdocs: Update project status and task listsskal
Updated PROJECT_CONTEXT.md and TODO.md to reflect the completion of the asset conversion sub-task and the build system consolidation (Task #25).
4 dayschore: Finalize Build System Consolidation (Task #25)skal
Updated project roadmap and to-do list to reflect the completion of the modular build system refactor.
4 daysrefactor(build): Modularize build system with static librariesskal
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.
4 daysadd 'use libraries' task for the Build Systemskal
4 daysdocs: Mark Shader Asset Integration (Task #24) as completedskal
Updates status in PROJECT_CONTEXT.md and TODO.md.
4 daysdocs: Plan Shader Asset Integration (Task #24)skal
Updates ASSET_SYSTEM.md to describe shader asset handling. Adds Task #24 to TODO.md and PROJECT_CONTEXT.md to extract hardcoded shaders and integrate them with the AssetManager and ShaderComposer.
4 daysdocs: Update project context and re-prioritize task listskal
This commit finalizes the session by updating the project documentation to reflect recent progress and future priorities. - **Recently Completed**: Summarized the finalization of the audio tracker, implementation of build stripping (STRIP_ALL), and resolution of WebGPU stability issues on macOS. - **Re-prioritization**: Promoted 'Platform & Code Hygiene' (Task #20) to Priority 1 and established '3D System Enhancements' (Task #18) as Priority 2, focusing on Blender integration. - **Session Summary**: Appended a detailed summary of the session's key achievements to SESSION_NOTES.md.
4 daysadd a TRACKER idea to the projectskal
4 daysdocs: Update TODO.md and PROJECT_CONTEXT.md after completing shader ↵skal
optimization tasks
4 daysadd mention of triplanar mappingskal
4 daysdocs: Finalize session task tracking and project contextskal
4 daysdocs: Record Task 21.2 completion and update session prioritiesskal
4 daysdocs: Prioritize next session tasks and update project contextskal
- Consolidated recent 3D and High-DPI fixes into PROJECT_CONTEXT.md. - Generated a prioritized task list in TODO.md with detailed attack plans. - Moved completed tasks to the 'Recently Completed' section. - Set up roadmap for Task #8 (Stripping), Task #20 (Code Hygiene), and Task #21 (Shader Optimization).
4 daysdocs(project): Incorporate detailed debugging tasks from 3D.mdskal
- Expanded 'Task #18: 3D System Enhancements' to include specific debugging features mentioned in the original 3D.md file: - Collision points visualization. - Interactive ray/object intersection visualization. - Visualization of light sources and their shadow maps. - This ensures all potential debugging needs are captured and tracked for future implementation.
4 daystune TODO and PROJECT_CONTEXT with new micro-tasksskal
4 daysfix(shader): Correct WGSL loop syntax in calc_shadowskal
- Replaced invalid 'i++' with 'i = i + 1' in the shader's calc_shadow function loop. - This resolves the shader parsing error and allows the 3D renderer test to run successfully on all platforms.
4 daysfeat(3d): Implement scene query shadows (POC)skal
- Updated Renderer3D shader to include 'map_scene' and 'calc_shadow' functions. - Shader now iterates over all objects (up to kMaxObjects) to evaluate the scene SDF globally. - Implemented hard/soft shadows from a fixed directional light. - Updated GlobalUniforms struct with proper packing/padding for WebGPU compatibility. - Captured 'GPU BVH & Shadows' task in PROJECT_CONTEXT.md for future optimization.
4 daysdocs: Reorganize 3D.md and integrate tasksskal
- Moved 3D.md into the doc/ directory to centralize documentation. - Updated README.md to reflect the new location of 3D.md. - Captured the action items from 3D.md (visual debug mode, Blender exporter) and added them as a new task (#18) in the PROJECT_CONTEXT.md roadmap.
4 daysdocs: Update PROJECT_-CONTEXT.md with completed tasksskal
- Moved completed tasks #4b and #10 to a new 'Recently Completed' section. - Cleaned up the 'Next Up' list to reflect the current priorities. - Ensures the project roadmap is an accurate, up-to-date reflection of the project's status.
4 daysdocs: Deprioritize Linux cross-compilation (Task #4a)skal
- Moved Task #4a from TODO.md (Next Up) to PROJECT_CONTEXT.md (Future Optimizations). - This reflects its current status as a lower-priority, long-term goal.
4 daysdocs: Refactor and prioritize project task listsskal
- Restructured PROJECT_CONTEXT.md to introduce a clear roadmap with 'Next Up', 'In Progress', and 'Future Goals'. - Condensed the 'Session Decisions' section into a concise 'Architectural Overview' focusing on the current state. - Updated TODO.md to reflect the highest priority tasks: finalizing the build system and optimizing spectrogram assets.
4 daysrefine some sub-tasks and conceptsskal
new file: TODO.md
5 daysdocs: Update project status and how-to guidesskal
- Marked 3D renderer integration and procedural asset tasks as complete in PROJECT_CONTEXT.md. - Added a new 'Platform & Windowing' section to document the major refactoring, high-DPI fix, and custom resolution feature. - Updated HOWTO.md to include instructions for the new '--resolution' command-line option.
5 daysfeat(asset_manager): Implement array-based cachingskal
- Refactored asset manager to use a static array for caching, improving performance and memory efficiency. - Updated asset_packer to correctly generate ASSET_LAST_ID for array sizing. - Modified asset_manager.h to use a forward declaration for AssetId. - Updated asset_manager.cc to use the conditional include for generated asset headers. - Added a test case in test_assets to verify the array-based cache and ASSET_LAST_ID logic.
6 daysfeat: Add seamless bump mapping with procedural noiseskal
- Replaced white noise with smooth value-like noise. - Implemented periodic texture generation (seam blending). - Integrated bump mapping into Renderer3D using finite difference of displaced SDF. - Updated test_3d_render with noise texture and multiple SDF shapes (Box, Sphere, Torus).