diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-29 01:50:47 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-29 01:50:47 +0100 |
| commit | a178de4e8680051925af9454b140343bf7eae214 (patch) | |
| tree | e7c8cf472fb2ebe49ab015b2e3aecf61d2c3c6d6 /src/3d/renderer_draw.cc | |
| parent | 70b77307a9a9ee4fdff23f783e041fe49e60e100 (diff) | |
fix(3d): restore correct orientation in test_3d_render (direct-to-surface)
Add Renderer3D::set_direct_render(bool) flag (must be set before init()).
When true, uses standard CCW winding and un-negates perspective Y, restoring
the pre-ba7ea27 orientation for direct-to-surface rendering where the
post-process Y-flip is absent.
handoff(Gemini): set_direct_render() is the escape hatch for any future
renderer usage that bypasses the post-process chain.
Diffstat (limited to 'src/3d/renderer_draw.cc')
| -rw-r--r-- | src/3d/renderer_draw.cc | 9 |
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 |
