summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2 daysfeat(assets): Enforce 16-byte alignment and string safetyskal
Updates asset_packer to align static asset arrays to 16 bytes and append a null-terminator. This allows assets to be safely reinterpreted as typed pointers (e.g., float*, const char*) without copying. Updates AssetManager documentation to reflect these guarantees.
2 daysfeat: Finalize tracker asset-sample integration with unified pasting strategyskal
3 daysfeat: Complete audio tracker system integration and testsskal
3 daysfeat: Integrate tracker system and update project context documentationskal
- Implemented the basic tracker system with runtime support (tracker.h, tracker.cc). - Added a sample music track file (assets/music.track). - Created a tracker compiler tool (tools/tracker_compiler.cc) to generate music data. - Updated CMakeLists.txt to build the tracker compiler and integrate generated data. - Updated GEMINI.md to reflect new file locations and project context.
3 daysfix(gpu): Resolve high-DPI squished rendering and 3D shadow bugsskal
- Implemented dynamic resolution support in all shaders and effects. - Added explicit viewport setting for all render passes to ensure correct scaling. - Fixed 3D shadow mapping by adding PLANE support and standardizing soft shadow logic. - Propagated resize events through the Effect hierarchy. - Applied project-wide code formatting.
3 daysfeat(build): Add check_all script and optimize spectoolskal
- Task #4b: Added scripts/check_all.sh to build and test all platform targets (native and Windows cross-compile) to ensure pre-commit stability. - Task #10: Modified spectool to trim both leading and trailing silent frames from generated .spec files, reducing asset size.
3 daysfix(build): Add compatibility for older wgpu-native headersskal
- Added preprocessor definitions for 'WGPUOptionalBool_True' and 'WGPUOptionalBool_False' to ensure successful cross-compilation against the older wgpu-native headers used for the Windows build. - This resolves the build failures in the Windows CI/check script.
3 daysrefactor(build): Centralize generated files and clean up project layoutskal
- Task A: Centralized all generated code (assets, timeline) into a single directory to create a single source of truth. - Task A: Isolated test asset generation into a temporary build directory, preventing pollution of the main source tree. - Task B: Vertically compacted all C/C++ source files by removing superfluous newlines. - Task C: Created a top-level README.md with project overview and file descriptions. - Task D: Moved non-essential documentation into a directory to reduce root-level clutter.
3 daysrefactor(platform): Encapsulate state in PlatformState structskal
- Replaced all global static variables in the platform layer with a single PlatformState struct. - Updated all platform function signatures to accept a pointer to this struct, making the implementation stateless and more modular. - Refactored main.cc, tests, and tools to instantiate and pass the PlatformState struct. - This improves code organization and removes scattered global state.
3 daysfeat(platform): Fix high-DPI scaling and add resolution optionskal
- Fixed a 'squished' viewport bug on high-DPI (Retina) displays by querying the framebuffer size in pixels instead of using the window size in points. - Centralized window dimension management within the platform layer. - Added a '--resolution WxH' command-line option to allow specifying a custom window size at startup. This option is stripped in STRIP_ALL builds. - Updated all test and tool executables to use the new platform API.
4 daysfeat(gpu/assets): Fix tests, integrate bumpy 3D renderer and procedural assetsskal
- Fixed test_sequence by restoring MainSequence::init_test for mocking. - Corrected CMakeLists.txt dependencies and source groupings to prevent duplicate symbols. - standardizing Effect constructor signature for seq_compiler compatibility. - Implemented Hybrid3DEffect using bumpy Renderer3D and procedural NOISE_TEX. - Updated MainSequence to support depth buffer for 3D elements. - Formatted all source files with clang-format.
4 daysfeat(gpu): Integrate bumpy 3D renderer into main demoskal
- Added depth buffer support to MainSequence. - Implemented Hybrid3DEffect for the main timeline. - Fixed effect initialization order in MainSequence. - Ensured depth-stencil compatibility for all scene effects. - Updated demo sequence with 3D elements and post-processing.
4 daysfeat(assets): Implement procedural asset generation pipelineskal
- Updated asset_packer to parse PROC(...) syntax. - Implemented runtime dispatch in AssetManager for procedural generation. - Added procedural generator functions (noise, grid, periodic). - Added comprehensive tests for procedural asset lifecycle.
4 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.
4 daysChore: Apply clang-format to the codebaseskal
5 daysclang-formatskal
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 seq-compiler help messageskal
5 daysadd testing for sequenceskal
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: 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 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.
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
8 daysfix the spec editor a bitskal
8 daysfeat(gemini): Add .geminiignore fileskal
Propose and add a .geminiignore file to exclude build artifacts, dependency build outputs, archives, temporary files, and IDE configurations from Gemini's analysis and operations.
8 daysfix(editor): Correct CSS formatting issuesskal
Cleaned up CSS formatting in style.css to resolve potential parsing errors and ensure proper styling of elements, including buttons and layout.
8 daysrefactor(editor): Complete rewrite of script.js for stability and correctnessskal
Addressed all reported errors by completely restructuring script.js to ensure correct function definition order, fixing the 2x vertical scaling issue in frequency mapping, and confirming SDF logic and audio playback dependencies. - All global variables, constants, utility functions, element declarations, event listeners, and main logic functions are now correctly ordered. - and corrected to use for proper frequency mapping.
8 daysfix(editor): Resolve all scoping, ordering, and scaling issuesskal
Completely restructured script.js to guarantee correct function definition order and fixed the 2x vertical scaling issue in frequency mapping. - Moved all utility functions (audio, SDF, coordinate/frequency mapping) to be defined before their use. - Corrected and to use for accurate frequency scaling. - Ensured all button element declarations and event listeners are correctly placed at the top of the script to prevent initialization errors.
8 daysfix(editor): Final resolution of initialization and scoping errors in script.jsskal
Completely restructured script.js to place all global variables, constants, button declarations, and event listeners at the top of the file. This definitively resolves 'Uncaught ReferenceError: Cannot access ... before initialization' errors and ensures proper scoping for all functions, including .
8 daysfix(editor): Resolve button initialization errorsskal
Restructured script.js to move all button element declarations and their event listeners to the top of the script, immediately after global constants. This resolves the 'Uncaught ReferenceError: Cannot access 'button' before initialization' errors by ensuring elements are initialized before being accessed.
8 daysfeat(editor): Implement SDFs for drawing primitives and fix spectrogram clearingskal
Refactored drawing primitives in the spectrogram editor to use Signed Distance Functions (SDFs), providing smoother and more flexible shape generation. - : Now stores shape parameters in SDF-friendly world coordinates (frame and log-scaled frequency) and includes a parameter for each shape. - : Completely rewritten to utilize SDFs (, , ) for applying shape effects to the spectrogram data, including attenuation with . - Fixed an issue where the generated spectrogram was not being cleared to zero, ensuring a blank canvas for new drawings.
8 daysfix(editor): Resolve 'canvasToSpectrogramCoords is not defined' error (final ↵skal
attempt) Moved all spectrogram coordinate and frequency mapping utility functions to the top of to ensure they are defined before any other functions attempt to use them. This is a crucial scoping fix.
8 daysfix(editor): Resolve 'canvasToSpectrogramCoords is not defined' errorskal
Moved all spectrogram coordinate and frequency mapping utility functions to the top of to ensure they are defined before any other functions attempt to use them. This resolves the 'canvasToSpectrogramCoords is not defined' error caused by incorrect function scoping.
8 daysfeat(editor): Full ellipse support and minor fixesskal
This commit finalizes the ellipse drawing and application logic within the spectrogram editor. - : Implemented robust ellipse creation and with correct logarithmic frequency mapping. - Fixed several issues related to state synchronization and button management. - Minor styling and HTML updates for consistency.
8 daysfeat(editor): Implement ellipse drawing and application logicskal
Adds full support for drawing and applying ellipse shapes to the spectrogram data, correctly handling logarithmic frequency mapping. - : Refined ellipse creation to use accurate logarithmic frequency calculations for minBin and maxBin. - : Implemented the algorithm to draw an ellipse on the spectrogram data, ensuring correct placement and amplitude application. - Uses and for precise frequency mapping.
8 daysfix(editor): Resolve duplicate variable declarations in script.jsskal
Consolidated all button element declarations into a single block to prevent 'Identifier has already been declared' errors.
8 daysfeat(editor): Implement logarithmic frequency scaleskal
Enhances spectrogram visualization by mapping frequency bins to a logarithmic Y-axis, providing better perceptual uniformity. - : Renders frequency data using a logarithmic scale. - Coordinate mapping utilities (, ): Updated to support logarithmic frequency mapping. - : Shape creation now uses the logarithmic mapping for accurate placement in frequency space.
8 daysfeat(editor): Add audio playback and redo functionalityskal
Enhances the spectrogram editor with audio playback capabilities and a redo button. - : Added 'Listen Original' and 'Listen Generated' buttons, and a 'Redo' button. - : Added styling for the new buttons. - : Implemented JavaScript IDCT, Hanning window, and for audio synthesis. - Connected playback buttons to audio functionality. - Fully implemented logic.
8 daysfeat(editor): Implement drawing tools and advanced undo/redoskal
This commit significantly enhances the web spectrogram editor by implementing core drawing tools (line, ellipse, noise) and a robust undo/redo system. - and : Added redo button and styling. - : Implemented canvas event handling, dynamic shape previews, and the logic for lines and noise rectangles. - : Now reconstructs the spectrogram from a clean base, allowing proper undo/redo. - : Uses an improved color gradient for better visualization. - : Stores original spectrogram data for persistent state management.
8 daysfeat(editor): Implement basic undo/redo functionalityskal
Adds the core logic for managing an action history stack and an undo button. - Initializes undoStack, redoStack, and MAX_HISTORY_SIZE. - Implements addAction to record operations and clear redoStack. - Implements handleUndo to revert actions and manage stacks. - Adds placeholder for redrawCanvas and updateUndoRedoButtons.
8 daysdocs: Finalize project state synchronizationskal
Updates all relevant Markdown files to reflect the completed asset system and build pipeline. - Updates PROJECT_CONTEXT.md with latest architectural decisions. - Updates GEMINI.md with the full list of relevant files. - Adds initial scaffolding for the web editor. - Cleans up any lingering issues with asset generation paths.
8 daysfeat(editor): Scaffold web spectrogram editorskal
Initial setup for the spectrogram editor tool. - Created tools/editor/index.html, script.js, and style.css. - Added basic structure for WAV loading, visualization, and tool controls.
8 daysfeat(spectool): Optimize .spec file size by trimming trailing zerosskal
Implements logic to remove unused trailing zero frames from spectrogram data before saving, reducing file size and improving loading efficiency.