diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-02 13:12:01 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-02 13:12:01 +0100 |
| commit | d1d87447ae44d85b15e748c5b1cc8ccd310f8740 (patch) | |
| tree | 215852cc15df71129b66f0d5c36ccf46930c8df7 /src/3d/renderer.cc | |
| parent | e0a92d8c7b5dea290155dd17784686fc9e95a029 (diff) | |
feat(3d): Add scaffolding for visual debugging (Task #18a)
- 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.
Diffstat (limited to 'src/3d/renderer.cc')
| -rw-r--r-- | src/3d/renderer.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/3d/renderer.cc b/src/3d/renderer.cc index db9d73d..adc9a5f 100644 --- a/src/3d/renderer.cc +++ b/src/3d/renderer.cc @@ -7,6 +7,10 @@ #include <cstring> #include <iostream> +#if !defined(STRIP_ALL) +bool Renderer3D::s_debug_enabled_ = false; +#endif + static const char* kShaderCode = R"( struct GlobalUniforms { view_proj: mat4x4<f32>, @@ -242,9 +246,17 @@ void Renderer3D::init(WGPUDevice device, WGPUQueue queue, create_default_resources(); create_pipeline(); + +#if !defined(STRIP_ALL) + visual_debug_.init(device_, format_); +#endif } void Renderer3D::shutdown() { +#if !defined(STRIP_ALL) + visual_debug_.shutdown(); +#endif + if (default_sampler_) wgpuSamplerRelease(default_sampler_); if (pipeline_) @@ -482,6 +494,19 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, if (instance_count > 0) { wgpuRenderPassEncoderDraw(pass, 36, instance_count, 0, 0); } + +#if !defined(STRIP_ALL) + if (s_debug_enabled_) { + for (const auto& obj : scene.objects) { + // Simple AABB approximation from scale + visual_debug_.add_box(obj.position, obj.scale, vec3(1.0f, 1.0f, 0.0f)); // Yellow boxes + } + + // Calculate ViewProj matrix for the debug renderer + mat4 view_proj = camera.get_projection_matrix() * camera.get_view_matrix(); + visual_debug_.render(pass, view_proj); + } +#endif } void Renderer3D::render(const Scene& scene, const Camera& camera, float time, |
