From 76c20383d107598ce7c9f7ccddff54a6a0002ea8 Mon Sep 17 00:00:00 2001 From: Rudolph Bester Date: Sat, 26 Oct 2024 20:07:34 +0200 Subject: [PATCH] Fix Occlusion Culling not working for an orthogonal camera. --- modules/raycast/raycast_occlusion_cull.cpp | 2 +- servers/rendering/renderer_scene_occlusion_cull.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/raycast/raycast_occlusion_cull.cpp b/modules/raycast/raycast_occlusion_cull.cpp index 54dc0405838..634c370b059 100644 --- a/modules/raycast/raycast_occlusion_cull.cpp +++ b/modules/raycast/raycast_occlusion_cull.cpp @@ -140,7 +140,7 @@ void RaycastOcclusionCull::RaycastHZBuffer::_generate_camera_rays(const CameraRa Vector3 dir; if (p_data->camera_orthogonal) { - dir = -p_data->camera_dir; + dir = p_data->camera_dir; tile.ray.org_x[j] = pixel_pos.x - dir.x * p_data->z_near; tile.ray.org_y[j] = pixel_pos.y - dir.y * p_data->z_near; tile.ray.org_z[j] = pixel_pos.z - dir.z * p_data->z_near; diff --git a/servers/rendering/renderer_scene_occlusion_cull.h b/servers/rendering/renderer_scene_occlusion_cull.h index 0ef92dd9ffd..a59ec7b952c 100644 --- a/servers/rendering/renderer_scene_occlusion_cull.h +++ b/servers/rendering/renderer_scene_occlusion_cull.h @@ -84,7 +84,7 @@ public: Vector3 view = p_cam_inv_transform.xform(corner); if (p_cam_projection.is_orthogonal()) { - min_depth = MIN(min_depth, view.z); + min_depth = MIN(min_depth, -view.z); } Plane vp = Plane(view, 1.0);