From 9568d3bc60c428cd7e13ef67cc50cfdbdc7a7c8f Mon Sep 17 00:00:00 2001 From: Squall-Leonhart Date: Wed, 4 Oct 2023 19:07:05 +1100 Subject: Implements D32_Float to A8B8G8R8_UNORM format copy Corrects some visual issues in games such as Disney SpeedStorm --- src/video_core/host_shaders/CMakeLists.txt | 1 + src/video_core/host_shaders/convert_d32f_to_abgr8.frag | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/video_core/host_shaders/convert_d32f_to_abgr8.frag (limited to 'src/video_core/host_shaders') diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt index 6b912027f..8bb429578 100644 --- a/src/video_core/host_shaders/CMakeLists.txt +++ b/src/video_core/host_shaders/CMakeLists.txt @@ -19,6 +19,7 @@ set(SHADER_FILES block_linear_unswizzle_2d.comp block_linear_unswizzle_3d.comp convert_abgr8_to_d24s8.frag + convert_d32f_to_abgr8.frag convert_d24s8_to_abgr8.frag convert_depth_to_float.frag convert_float_to_depth.frag diff --git a/src/video_core/host_shaders/convert_d32f_to_abgr8.frag b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag new file mode 100644 index 000000000..b7012a61d --- /dev/null +++ b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#version 450 + +layout(binding = 0) uniform sampler2D depth_tex; + +layout(location = 0) out vec4 color; + +void main() { + ivec2 coord = ivec2(gl_FragCoord.xy); + float depth = textureLod(depth_tex, coord, 0).r; + color = vec4(vec3(depth), 1.0); // Convert depth to grayscale color +} -- cgit v1.2.3 From a17cde7b2ced1496b4f2da00608a2638730af39d Mon Sep 17 00:00:00 2001 From: Squall-Leonhart Date: Wed, 4 Oct 2023 19:54:16 +1100 Subject: lets not convert depth to greyscale since this makes the exhaust and tire smoke light gray/white tiresmoke should be a darker gray. --- src/video_core/host_shaders/convert_d32f_to_abgr8.frag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/video_core/host_shaders') diff --git a/src/video_core/host_shaders/convert_d32f_to_abgr8.frag b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag index b7012a61d..6072cbd1b 100644 --- a/src/video_core/host_shaders/convert_d32f_to_abgr8.frag +++ b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag @@ -10,5 +10,5 @@ layout(location = 0) out vec4 color; void main() { ivec2 coord = ivec2(gl_FragCoord.xy); float depth = textureLod(depth_tex, coord, 0).r; - color = vec4(vec3(depth), 1.0); // Convert depth to grayscale color + color = vec4(depth, depth*depth, sqrt(depth), 1.0); // Convert depth to color } -- cgit v1.2.3 From 51b89fddd00c5b02c08bfecb3650bd607c6c7794 Mon Sep 17 00:00:00 2001 From: Squall Leonhart Date: Sat, 7 Oct 2023 18:28:09 +1100 Subject: update shader to confirmed format copy --- src/video_core/host_shaders/convert_d32f_to_abgr8.frag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/video_core/host_shaders') diff --git a/src/video_core/host_shaders/convert_d32f_to_abgr8.frag b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag index 6072cbd1b..04cfef8b5 100644 --- a/src/video_core/host_shaders/convert_d32f_to_abgr8.frag +++ b/src/video_core/host_shaders/convert_d32f_to_abgr8.frag @@ -10,5 +10,5 @@ layout(location = 0) out vec4 color; void main() { ivec2 coord = ivec2(gl_FragCoord.xy); float depth = textureLod(depth_tex, coord, 0).r; - color = vec4(depth, depth*depth, sqrt(depth), 1.0); // Convert depth to color + color = vec4(depth, depth, depth, 1.0); } -- cgit v1.2.3