summaryrefslogtreecommitdiff
path: root/src/3d
AgeCommit message (Collapse)Author
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 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 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 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.
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 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: 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).
4 daysfeat: Implement hybrid rendering with SDF primitivesskal
- Added SDF logic for Sphere, Box, and Torus in WGSL. - Implemented hybrid normal calculation (analytical for sphere, numerical fallback). - Updated Renderer3D to dispatch object types to shader. - Updated test_3d_render to display mixed SDF shapes (Sphere, Torus, Box). - Added BOX to ObjectType enum.
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.