summaryrefslogtreecommitdiff
path: root/src/3d/renderer_draw.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d/renderer_draw.cc')
-rw-r--r--src/3d/renderer_draw.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/3d/renderer_draw.cc b/src/3d/renderer_draw.cc
index d4a35a8..dca7113 100644
--- a/src/3d/renderer_draw.cc
+++ b/src/3d/renderer_draw.cc
@@ -9,7 +9,9 @@
void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera,
float time) {
- const mat4 vp = camera.get_projection_matrix() * camera.get_view_matrix();
+ mat4 proj = camera.get_projection_matrix();
+ if (direct_render_) proj.m[5] = -proj.m[5]; // undo Y-negate for direct surface
+ const mat4 vp = proj * camera.get_view_matrix();
const GlobalUniforms globals = GlobalUniforms::make(
vp,
vec4(camera.position.x, camera.position.y, camera.position.z, time),
@@ -203,8 +205,9 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene,
}
}
- // Calculate ViewProj matrix for the debug renderer
- mat4 view_proj = camera.get_projection_matrix() * camera.get_view_matrix();
+ mat4 dbg_proj = camera.get_projection_matrix();
+ if (direct_render_) dbg_proj.m[5] = -dbg_proj.m[5];
+ mat4 view_proj = dbg_proj * camera.get_view_matrix();
visual_debug_.render(pass, view_proj);
}
#endif