summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
3 daysrefactor: Shader Asset Integration (Task #24)skal
Extracted all hardcoded WGSL shaders into external assets. Updated AssetManager to handle shader snippets. Refactored Renderer3D, VisualDebug, and Effects to load shaders via the AssetManager, enabling better shader management and composition.
3 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.
3 daysfeat: Finalize tracker asset-sample integration with unified pasting strategyskal
3 daysremove generated assets which shouldn't be in gitskal
3 daysupdate the melody a bitskal
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 daysupdate TODO and fix shaders.ccskal
3 dayschore: Add BUILD.md, Task 23 to TODO.md, and GPU perf define placeholderskal
3 daysfeat(test): Add comprehensive math and shader composer testsskal
- Implemented test_shader_composer.cc to verify WGSL snippet assembly. - Expanded test_maths.cc with rigorous matrix inversion and transposition checks. - Verified that A * inv(A) equals Identity for various TRS combinations. - Updated CMakeLists.txt to include the new test targets.
3 daysfix(3d): Stabilize shadows and isolate floor grid textureskal
- Reverted floor to BOX (SDF) for robust shadow receipt. - Updated shader to apply grid pattern ONLY to instance 0 (floor) or PLANE objects. - Restored noise-based texturing for floating cubes and other SDF primitives. - Verified that shadows and textures are now correctly applied across all scene elements.
3 daysfix(3d): Distinguish floor grid from object texturesskal
- Switched floor back to PLANE type in test_3d_render. - Updated fragment shader to apply grid pattern ONLY to PLANE objects. - Restored noise-based bump mapping and texturing for BOX and other SDF primitives. - Verified correct visual appearance of floating cubes (no fixed grid).
3 daysfeat(3d): Implement Task 21.1 WGSL Library & Composerskal
- Implemented ShaderComposer for modular WGSL snippet management. - Factored out common math, primitives, lighting, and ray-box helpers. - Refactored Renderer3D to use dynamic shader composition. - Consolidated high-DPI and shadow robustness fixes into final shader structure.
3 daystest(3d): Enlarge objects and pack them closer to the centerskal
- Increased number of random objects to 30. - Enlarged base scale of all objects. - Restricted object distribution radius to encourage inter-object shadows. - Scaled up center torus and moving sphere.
3 daysfix(3d): Resolve spherical distortion in floor grid textureskal
- Corrected world-space position calculation in SDF fragment shader. - Transformed local hit point back to world space using the model matrix. - Restored accurate planar p.xz mapping for the floor grid.
3 daysfeat(3d): Implement tight ray bounds for SDF raymarchingskal
- Added Ray-Box intersection in local space to derive precise t_entry and t_exit. - Optimized fragment shader to only march between box intersection points. - Improved robustness of SDF rendering for non-uniform scaled objects. - Verified correct texturing and shadow casting on all primitives.
3 daysfix(3d): Tighten torus proxy hull and ensure floor grid visibilityskal
- Adjusted Torus proxy hull in vs_main to 1.5x0.5x1.5 for better SDF fit. - Updated VisualDebug::add_box to use per-object local extents. - Standardized floor grid mapping in fs_main using planar p.xz projection. - Verified non-uniform scale and rotation robustness in test_3d_render.
3 dayschore: Apply final code formatting and cleanupskal
3 daysfix(3d): Restore visible grid texture on floor planeskal
- Implemented planar (p.xz) grid mapping for BOX objects in the SDF path. - Standardized grid generation logic between raster and SDF paths for consistency. - Ensured grid is high-contrast and clearly visible on the floor.
3 daysfix(3d): Tighten torus bounding box and restore object texturesskal
- Adjusted Torus proxy hull in vs_main to fit unit dimensions (1.4x0.4x1.4). - Updated VisualDebug to support per-object local extents, improving wireframe accuracy. - Restored procedural floor grid and SDF bump mapping in the fragment shader. - Added varied scaling to test scene objects to verify transform robustness.
3 daysfix(3d): Correct debug box transforms and restore object texturesskal
- Updated VisualDebug to accept mat4 transforms, enabling wireframes to follow rotating objects. - Restored SDF bump mapping and floor grid texture in the fragment shader. - Added vec4::xyz() helper to mini_math.h. - Fixed Renderer3D to pass the full model matrix for debug visualization.
3 daysfix(3d): Unify all objects to SDF path for consistent shadowsskal
- Updated ObjectData to include inv_model for reliable world-to-local mapping. - Enabled SDF raymarching path for all objects in test_3d_render (floor is now a large SDF BOX). - Implemented robust normal calculation using SDF gradient for all objects. - Standardized lighting (light_dir = 1,1,1) and diffuse+ambient model. - Refined calc_shadow with instance-based skip_idx and robust bias. - Fixed non-uniform scale handling in shader by extracting min scale from model matrix.
3 daysfix(3d): Unify SDF path for all objects and stabilize shadowsskal
- Converted floor in test_3d_render to a large SDF BOX for consistent shading. - Standardized lighting (light_dir = 1,1,1) and normal calculation for all objects. - Fixed calc_shadow bias and skip_idx to reliably prevent self-shadowing. - Improved raymarching robustness in fs_main to find exact SDF hit points.
3 daysfix(3d): Restore and enhance 3D shadowsskal
- Elevated objects in test_3d_render to avoid shadow occlusion. - Slanted light direction for more visible, elongated shadows. - Sharpened shadows by increasing k constant to 32. - Cleaned up debug printfs from previous turns. - Maintained skip_idx logic for robust self-shadowing prevention.
3 daysfix(3d): Revert to working N-1 shadow configurationskal
- Reverted floor to CUBE (rasterized) at index 0. - Restored vertical lighting and original soft shadow loop (k=8, t+=h). - Maintained instance-based skip_idx for generic self-shadowing prevention. - Confirmed map_scene correctly skips the floor, allowing other objects to cast shadows on it.
3 daysfix(3d): Resolve missing shadows on floor planeskal
- Switched floor from rasterized CUBE to SDF PLANE for consistent shadow mapping. - Implemented skip_idx in map_scene to properly prevent self-shadowing. - Standardized soft shadow logic with improved bias and step size. - Increased object elevation and adjusted light direction for more visible shadows. - Enabled debug boxes in test_3d_render.
3 daysflesh out extra details in the MD filesskal
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(3d): Use procedural grid for floor and revert object noiseskal
- Reverted test_3d_render to use the global 'noise' texture for floating objects, restoring their bump mapping. - Implemented a procedural grid directly in the fragment shader for rasterized objects (floor). - Inverted the grid color scheme (black lines on a lighter background) as requested. - This ensures accurate object bump mapping and clear shadow visibility on the floor without requiring multiple texture bindings.
3 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.
3 daystest(3d): Add procedural grid to floor and enable texturingskal
- Modified 'test_3d_render' to generate and use a procedural 'grid' texture for the floor. - Updated fragment shader to sample the texture for rasterized objects, adding a grid pattern to the floor. - This provides visual detail and contrast, making raymarched shadows much easier to observe and verify.
3 daysfix(3d): Fix shader syntax error and duplicate declarationskal
- Removed duplicate 'light_dir' declaration in the shader. - Fixed a syntax error (duplicate closing raw string delimiter) that caused shader compilation failure. - Verified all targets build and run correctly with 'check_all.sh'.
3 daysfix(3d): Resolve shader validation error and tune shadowsskal
- Fixed 'redefinition of light_dir' shader validation error by centralizing the light definition at the top of fs_main. - Further brightened the floor in 'test_3d_render' for better shadow contrast. - Reduced shadow bias and made the light more vertical to ensure shadows are clearly visible on all surfaces.
3 daysfeat(3d): Implement unified shadow system with non-uniform scale supportskal
- Part 1: Unified shadow calculation in fragment shader for both SDF and rasterized objects. - Part 2: Added 'model_inverse_transpose' to ObjectData to correctly transform normals for non-uniformly scaled objects. - Part 3: Brightened the floor in 'test_3d_render' to make shadows visible. - Verified correct lighting and shadows on the non-uniformly scaled floor.
3 daysfeat(3d): Support non-uniform scale and shadows on rasterized objectsskal
- Implemented full support for non-uniform scaling by calculating and passing the 'model_inverse_transpose' matrix to the shader for correct normal transformation. - Added 'transpose()' and 'inverse()' methods to the 'mat4' class in 'mini_math.h'. - Refactored the shader to use the new matrix for lighting rasterized objects. - Updated the test scene to use a rasterized floor (CUBE) instead of an SDF one, ensuring it receives correct lighting and shadows even with non-uniform scale.
3 daysfeat(3d): Unify shadow calculations in shaderskal
- Refactored the fragment shader to calculate raymarched shadows for all fragments, not just SDF objects. - This enables rasterized objects (like the floor) to receive shadows from SDF objects, fixing the missing shadows in the test scene. - This serves as a proof-of-concept for a unified lighting pipeline.
3 daysfix(3d): Correct shadow bug with non-uniform scaleskal
- Changed the floor object in 'test_3d_render' from SDF BOX to rasterized CUBE. - This prevents the non-uniform scale of the floor from breaking the scene-wide SDF query used for shadow calculations. - The lighting and shadows now render correctly in the more complex test scene.
3 daystest(3d): Enhance test scene with more objectsskal
- Updated 'src/tests/test_3d_render.cc' to populate the scene with a large floor and 30 randomly placed objects (spheres, boxes, tori). - This provides a more complex environment to verify the new shadow mapping implementation.
3 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.
3 daysfeat(3d): Add scaffolding for visual debugging (Task #18a)skal
- Added 'src/3d/visual_debug.h/cc' to implement wireframe rendering. - Integrated VisualDebug into Renderer3D with a static global toggle. - Added '--debug' command-line option to 'demo64k' and 'test_3d_render' to enable wireframes. - Updated 'src/gpu/effects/hybrid_3d_effect.h' to expose the debug setter (reverted later as static method used). - Ensured full cross-platform compatibility (native and Windows) for the new debug module. - All code guarded by STRIP_ALL for final release.
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.
4 daysfeat(visuals): Increase 3D object size and add erratic camera motionskal
- Increased the scale of orbiting 3D objects by 40% for more visual impact. - Replaced the smooth, predictable camera animation with a non-linear, eased motion. - Applied different easing frequencies to camera radius, height, and orbit to create an erratic, dramatic effect with sudden acceleration and braking.
4 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.
4 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 daystry to fix the messskal
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 robust procedural asset generation pipelineskal
- Updated asset_packer to correctly parse PROC(...) syntax using regex, handling nested commas. - Implemented runtime dispatch in AssetManager for procedural generation with dynamic memory management. - Added procedural generator functions (noise, grid, periodic). - Added comprehensive tests for procedural asset lifecycle (generation, caching, invalidation). - Fixed C++ string literal escaping in asset_packer.
4 daysfeat(assets): Implement procedural asset generation pipelineskal
- Updated asset_packer to parse PROC(...) syntax with robust regex. - Implemented runtime dispatch in AssetManager for procedural generation. - Added procedural generator functions (noise, grid, periodic). - Added comprehensive tests for procedural asset lifecycle.