From aca6d3a9a8b30d0b22d17bbb6424daed931a43a1 Mon Sep 17 00:00:00 2001 From: lizzie Date: Wed, 14 Jan 2026 08:21:20 +0000 Subject: [PATCH] fx --- src/video_core/host_shaders/sgsr1_shader.vert | 2 +- src/video_core/renderer_vulkan/present/sgsr.cpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/video_core/host_shaders/sgsr1_shader.vert b/src/video_core/host_shaders/sgsr1_shader.vert index a7453114bd..8fa7ddff73 100644 --- a/src/video_core/host_shaders/sgsr1_shader.vert +++ b/src/video_core/host_shaders/sgsr1_shader.vert @@ -8,6 +8,6 @@ layout(location = 0) out highp vec4 texcoord; void main() { float x = float((gl_VertexIndex & 1) << 2); float y = float((gl_VertexIndex & 2) << 1); - gl_Position = vec4(x - 1.0, y - 1.0, 0.0, 1.0); + gl_Position = vec4(x - 1.0f, y - 1.0f, 0.0, 1.0f); texcoord = vec4(x, y, 0.f, 0.f) / 2.0; } diff --git a/src/video_core/renderer_vulkan/present/sgsr.cpp b/src/video_core/renderer_vulkan/present/sgsr.cpp index 9f6a01a962..702f960939 100644 --- a/src/video_core/renderer_vulkan/present/sgsr.cpp +++ b/src/video_core/renderer_vulkan/present/sgsr.cpp @@ -109,6 +109,8 @@ VkImageView SGSR::Draw(Scheduler& scheduler, size_t image_index, VkImage source_ const f32 input_image_width = f32(input_image_extent.width); const f32 input_image_height = f32(input_image_extent.height); + const f32 output_image_width = f32(extent.width); + const f32 output_image_height = f32(extent.height); const f32 viewport_x = crop_rect.left * input_image_width; const f32 viewport_y = crop_rect.top * input_image_height; const f32 viewport_width = (crop_rect.right - crop_rect.left) * input_image_width; @@ -116,10 +118,10 @@ VkImageView SGSR::Draw(Scheduler& scheduler, size_t image_index, VkImage source_ // highp vec4 PushConstants viewport_con{}; - viewport_con[0] = std::bit_cast(1.f / viewport_x); - viewport_con[1] = std::bit_cast(1.f / viewport_y); - viewport_con[2] = std::bit_cast(viewport_width); - viewport_con[3] = std::bit_cast(viewport_height); + viewport_con[2] = std::bit_cast(0.5f * viewport_width / output_image_width - 0.5f + viewport_x); + viewport_con[3] = std::bit_cast(0.5f * viewport_height / output_image_height - 0.5f + viewport_y); + viewport_con[0] = std::bit_cast(1.f / std::bit_cast(viewport_con[2])); + viewport_con[1] = std::bit_cast(1.f / std::bit_cast(viewport_con[3])); UploadImages(scheduler); UpdateDescriptorSets(source_image_view, image_index);