diff options
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, |
