diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-10 14:22:17 +0200 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-10 14:22:17 +0200 |
| commit | 0d50f45482999222f7fffe8b4ce15f53caaaff91 (patch) | |
| tree | 9f89b5ee47703aef10ab57219206be1af37f3965 | |
| parent | d899558bbc8c0ecf7909a6186f72781944b51e7c (diff) | |
| parent | b67eba8399ca62dc2c8cca8d7f496400061e4b44 (diff) | |
| download | redot-engine-0d50f45482999222f7fffe8b4ce15f53caaaff91.tar.gz | |
Merge pull request #90416 from BastiaanOlij/openxr_fix_reverse_z
OpenXR: Apply fix for reverse Z
| -rw-r--r-- | modules/openxr/openxr_api.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp index 5438f5020c..1fe402341b 100644 --- a/modules/openxr/openxr_api.cpp +++ b/modules/openxr/openxr_api.cpp @@ -1204,10 +1204,12 @@ bool OpenXRAPI::create_main_swapchains(Size2i p_size) { depth_views[i].subImage.imageRect.offset.y = 0; depth_views[i].subImage.imageRect.extent.width = main_swapchain_size.width; depth_views[i].subImage.imageRect.extent.height = main_swapchain_size.height; + // OpenXR spec says that: minDepth < maxDepth. depth_views[i].minDepth = 0.0; depth_views[i].maxDepth = 1.0; - depth_views[i].nearZ = 0.01; // Near and far Z will be set to the correct values in fill_projection_matrix - depth_views[i].farZ = 100.0; + // But we can reverse near and far for reverse-Z. + depth_views[i].nearZ = 100.0; // Near and far Z will be set to the correct values in fill_projection_matrix + depth_views[i].farZ = 0.01; } }; @@ -1802,8 +1804,9 @@ bool OpenXRAPI::get_view_projection(uint32_t p_view, double p_z_near, double p_z // if we're using depth views, make sure we update our near and far there... if (depth_views != nullptr) { for (uint32_t i = 0; i < view_count; i++) { - depth_views[i].nearZ = p_z_near; - depth_views[i].farZ = p_z_far; + // As we are using reverse-Z these need to be flipped. + depth_views[i].nearZ = p_z_far; + depth_views[i].farZ = p_z_near; } } |
