summaryrefslogtreecommitdiff
path: root/src/3d/renderer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d/renderer.cc')
-rw-r--r--src/3d/renderer.cc25
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,