summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
4 daysfeat: Implement 3D system and procedural texture managerskal
- Extended mini_math.h with mat4 multiplication and affine transforms. - Implemented TextureManager for runtime procedural texture generation and GPU upload. - Added 3D system components: Camera, Object, Scene, and Renderer3D. - Created test_3d_render mini-demo for interactive 3D verification. - Fixed WebGPU validation errors regarding depthSlice and unimplemented WaitAny.
5 daysChore: Apply clang-format to the codebaseskal
5 daysRefactor: Move common GPU fields to base Effect classesskal
Moved WGPUDevice, WGPUQueue, and GpuBuffer uniforms_ into the base Effect and PostProcessEffect classes. Updated all derived effect classes to use these inherited members and refactored their constructors. Also fixed associated compilation errors in test files and adjusted a printf statement.
5 daysRefactor: Split demo effects and shaders into individual filesskal
Split src/gpu/demo_effects.cc into individual .cc files for each effect and created separate files for post-processing helpers and WGSL shaders. Updated src/gpu/demo_effects.h to be a central header for all effect-related declarations and adjusted CMakeLists.txt accordingly.
5 daysformat shader codeskal
5 daysclang-formatskal
5 daysfix(build): resolve cross-platform build configuration errorsskal
- Corrected signature in for macOS native builds to match the 5-parameter definition. - Conditionally compiled assignments in for native builds and removed the definition for Windows from , resolving 'no member named ' errors in Windows cross-compilation. - Verified all macOS native build configurations (Debug, Size-Optimized, Final/Strip, Developer/All Options, Tests Only, Tools Only) and the Windows cross-compilation build are now compiling successfully.
5 daysstyle: add vertical compression rules to clang-formatskal
- Enabled AllowShortFunctionsOnASingleLine: All - Enabled AllowShortBlocksOnASingleLine: Always - Enabled AllowShortIfStatementsOnASingleLine: Always - Enabled AllowShortLoopsOnASingleLine: true - Set MaxEmptyLinesToKeep: 1 - Applied formatting to all source files.
5 daysrefactor: move generated asset files to src/generated/skal
- Updated CMakeLists.txt to generate assets.h and assets_data.cc in src/generated/. - Updated scripts/gen_assets.sh to reflect the new output location. - Modified asset_packer.cc to generate correct include paths in assets_data.cc. - Updated source files (main.cc, asset_manager.cc, test_assets.cc) to include headers from the 'generated/' subdirectory. - Ensured all targets have correct include paths to find generated headers. - Removed stale generated files from src/.
5 daysfix(gpu): resolve multiple WebGPU validation and runtime errorsskal
- Fixed 'Invalid sample count 0' and 'Invalid anisotropic clamp: 0' by ensuring explicit pipeline and sampler states. - Resolved WGSL parsing errors by replacing swizzle assignments in compute shaders. - Fixed 'Texture destroyed' error in render_frame by reordering command submission and resource presentation/release. - Added WGPU_DEPTH_SLICE_UNDEFINED for Windows compatibility and ensured consistent resolveTarget initialization. - Cleaned up PassthroughEffect bind group layout mismatch and redundant string helper definitions. - Verified all tests pass and applied consistent formatting.
5 daysfix: Resolve all remaining linking and include errors for Sequence/Effect testsskal
Corrects CMakeLists.txt to properly link test_sequence against GLFW and WGPU_LIBRARY. Ensures correct include paths for wgpu headers. Updates demo_effects.cc stub implementations. Finalizes test suite for sequence/effect system.
5 daysadd testing for sequenceskal
5 daysfix: Resolve all build/linking errors for Sequence/Effect testsskal
Adds missing source files and libraries for test_sequence target in CMakeLists.txt. Corrects include paths and ensures proper linking against WebGPU and GLFW libraries. All test suites now compile and pass.
5 daystest: Finalize sequence/effect system testsskal
Refines tests for the sequence and effect system to focus on logic (init, start, end calls) rather than GPU output, as full GPU mocking is complex. Updates HOWTO.md to reflect this.
5 daystools: Improve seq_compiler usage with example commandskal
Adds a copy-pasteable example line to the seq_compiler usage message when run without arguments.
5 daysfix: Cross-compilation and style complianceskal
Fixes seq_compiler build for Windows cross-compilation. Moves common WebGPU compatibility shims to gpu.h. Applies project-wide coding style via clang-format. Verified on both macOS (native) and Windows (cross-compile).
5 daysfeat: Full implementation of post-processing pipeline and new effectsskal
Completes the multi-pass rendering engine and implements all requested effects: MovingEllipse, ParticleSpray, GaussianBlur, Solarize, Distort, and ChromaAberration. Includes WGSL shaders for all effects and logic for time-varying parameters via uniforms.
5 daysfeat: Multi-pass rendering architecture and effect stubsskal
Implements a post-processing pipeline using offscreen framebuffers. Adds stubs for MovingEllipse, ParticleSpray, GaussianBlur, Solarize, Distort, and ChromaAberration effects. Updates MainSequence to orchestrate the scene pass and post-processing chain.
5 daysfeat: Implement Sequence Compiler for data-driven choreographyskal
Adds a 'seq_compiler' tool that converts a text-based timeline (assets/demo.seq) into a generated C++ file. This allows editing effect sequences and timing without modifying engine code. Replaces manual sequence creation with a generated 'LoadTimeline' function.
5 daysopt: Guard debug/seek features with STRIP_ALLskal
Ensures that code related to the --seek command line option (simulation loops, silent audio rendering) is completely compiled out when the DEMO_STRIP_ALL build option is enabled, preserving the 64k size constraint.
5 daysfeat: Add --seek command line option for fast-forward debuggingskal
This feature allows developers to jump to a specific time in the demo sequence (e.g., './demo64k --seek 10.5'). It simulates the game logic, audio state (rendering silent buffers), and visual physics (compute shaders) from t=0 up to the target time before starting real-time playback. Audio initialization is refactored to separate device init and start.
5 daysfeat: Implement Sequence and Effect system for demo choreographyskal
Refactors the rendering pipeline into a modular Sequence/Effect system. 'MainSequence' manages the final frame rendering and a list of 'Sequence' layers. 'Sequence' manages a timeline of 'Effect' objects (start/end/priority). Concrete effects (Heptagon, Particles) are moved to 'demo_effects.cc'. Updates main loop to pass beat and aspect ratio.
5 daysupdate session with mix fixesskal
5 daysfix: Resolve macOS build breakage and restore tools audio supportskal
Updates gpu.cc to handle modern wgpu-native callback signatures (5 args) for macOS while maintaining Windows compatibility. Modifies audio.cc and CMakeLists.txt to ensure miniaudio encoding features are only stripped from the demo binary, not the tools (spectool/tests).
5 daysopt: Disable unused audio formats (FLAC, WAV, MP3) and encoding in miniaudioskal
Reduces Windows binary size from 461KB to 356KB (UPX packed) by stripping unused decoders and encoders from the runtime build. Tools (spectool) retain WAV/MP3 support.
5 daysupdate state in .md filesskal
5 daysAdd Windows cross-compilation support (MinGW) and emulation (Wine)skal
6 daysChore: Add missing newlines at end of source filesskal
6 daysChore: Remove trailing whitespaces across the codebaseskal
6 daysImplement procedural audio generation, spectral effects, and WebGPU particle ↵skal
system
6 daysadd notesskal
6 daysenforce code styleskal
6 daysadd mini_math.h header-only vector libskal
8 daysremove shader.wgslskal
8 dayssimplify shaderskal
8 daysfix the audioskal
8 daysstyle updateskal
8 daysperf(synth): Optimize Hamming window generationskal
Moves the Hamming window initialization from synth_render to synth_init() to ensure it's generated only once, improving performance.
8 daysfeat(visuals): Add rotation, color shifts, and improved beat-syncskal
Implements a more dynamic and reactive visual system. - Updated synth.cc: Faster peak decay for better response. - Updated gpu.cc: Added time-based rotation and Hue shifting; implemented reactive clear-color flashes. - Updated main.cc: Corrected peak scaling (8x multiplier) and integrated time-based animation.
8 daysfeat(visuals): Enhance colors and add background flashesskal
Improves the audio-visual synchronization by increasing peak amplification and adding dynamic background flashes. - src/gpu/gpu.cc: Updated fragment shader with more vibrant hue calculation and implemented reactive clear color for flashes. - src/main.cc: Increased peak multiplier to 150x and added non-linear boost for strong peaks.
8 daysfeat(assets): Separate demo and test asset listsskal
Renamed demo assets to 'demo_assets.txt' and created 'test_assets_list.txt' for AssetManagerTest to prevent interference. - Updated CMakeLists.txt to generate separate headers for demo and test. - Updated test_assets.cc to conditionally include the test-specific header. - Incorporated gen_assets.sh into the 'final' target.
8 daysfeat(demo): Add drum sequence using embedded assetsskal
Incorporates kick1.spec, snare1.spec, and hihat1.spec into the demo sequence. - Updated assets.txt with new drum identifiers. - Implemented register_spec_asset helper in main.cc to load spectral data. - Added 8th-note sequencer triggering a simple drum and bass pattern.
8 daysrefactor(assets): Optimize asset retrieval using array lookupskal
This refactors the asset management system to be more efficient and cleaner. - Moved common GetAsset/DropAsset logic to src/util/asset_manager.cc. - Changed retrieval to use an array of records (AssetRecord) for O(1) lookups instead of a switch statement. - Updated asset_packer to generate only raw data and the record array.
8 daysupdate asset systemskal
8 daysdocs: Update project context and session notesskal
Summarizes recent implementations including Asset Management, audio/visual fixes, and style improvements.
8 daysstyle: Add 3-line descriptive headers to all source filesskal
This commit applies a new project-wide rule that every source file must begin with a concise 3-line comment header describing its purpose. - Updated CONTRIBUTING.md with the new rule. - Applied headers to all .cc and .h files in src/ and tools/. - Fixed various minor compilation errors and missing includes discovered during the header update process.
8 daystest(assets): Add functional tests for asset management systemskal
This commit makes the asset packer fully functional and adds an end-to-end test suite. - Updated asset_packer.cc to read file contents and embed them as hex arrays. - Added actual asset files (null.bin, test_asset.txt) for testing. - Implemented src/tests/test_assets.cc to verify data integrity at runtime. - Refactored CMakeLists.txt to handle generated file dependencies correctly.
8 daysfeat(assets): Implement basic asset packing systemskal
Introduces a new asset management system to embed binary assets directly into the demo executable. - Creates the directory for asset definition and an descriptor file. - Implements to generate (with enum and declaration) and (with placeholder data). - Integrates into CMake build, making depend on the generated asset files. - Adds minimal integration in and documentation in . This addresses Task 9 (compact in-line and off-line asset system).
9 daysbuild: Finalize WebGPU integration and platform fixesskal
Includes correct CMake configuration for GLFW native access, Objective-C++ compilation for the helper library on macOS, and applies clang-format to modified sources.
9 daysfix(gpu): Ensure shader entry points are preserved in STRIP_ALL buildskal
The build was stripping all strings, including critical shader entry points ('vs_main', 'fs_main'), causing a runtime panic. Introduced for optional debug labels (which are stripped) and restored to always return the string content for functional requirements.