From: Benjamin Otte Date: Tue, 16 May 2023 15:18:19 +0000 (+0200) Subject: vulkan: Make projection matrix match GL X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~253^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2b0ad09423ce8b3e5885a8a396e37949f66e702d;p=gtk4.git vulkan: Make projection matrix match GL Vulkan has a different initial coordinate system to GL. GL: (-1, 1, -1) +------+. |`. | `. | `·--|---· | : | : +------+. : `. : `.: `·------· (1, -1, 1) Vulkan: (-1, -1, 0) +------+. |`. | `. | `·--|---· | : | : +------+. : `. : `.: `·------· (1, 1, 1) so adjust the near and far plane we pass to graphene_matrix_init_ortho() to make it end up with the same projection as the GL renderer. --- diff --git a/gsk/vulkan/gskvulkanrenderpass.c b/gsk/vulkan/gskvulkanrenderpass.c index c23aa0ba7b..f364b7f4c1 100644 --- a/gsk/vulkan/gskvulkanrenderpass.c +++ b/gsk/vulkan/gskvulkanrenderpass.c @@ -157,7 +157,7 @@ gsk_vulkan_render_pass_new (GdkVulkanContext *context, graphene_matrix_init_ortho (&self->p, viewport->origin.x, viewport->origin.x + viewport->size.width, viewport->origin.y, viewport->origin.y + viewport->size.height, - ORTHO_NEAR_PLANE, + 2 * ORTHO_NEAR_PLANE - ORTHO_FAR_PLANE, ORTHO_FAR_PLANE); if (signal_semaphore != VK_NULL_HANDLE) // this is a dependent pass