diff options
| author | 2021-11-19 06:27:44 +0100 | |
|---|---|---|
| committer | 2021-11-19 06:27:44 +0100 | |
| commit | b805c7bf058c6da04620cf75880509bdf6d5986c (patch) | |
| tree | d065140ca6f9e6c7658367ce4f4f6923ae1f1a01 /src/video_core/host_shaders | |
| parent | TextureCache: force same image format when resolving an image. (diff) | |
| download | yuzu-b805c7bf058c6da04620cf75880509bdf6d5986c.tar.gz yuzu-b805c7bf058c6da04620cf75880509bdf6d5986c.tar.xz yuzu-b805c7bf058c6da04620cf75880509bdf6d5986c.zip | |
TextureCache: Implement additional D24S8 convertions.
Diffstat (limited to 'src/video_core/host_shaders')
| -rw-r--r-- | src/video_core/host_shaders/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag | 21 | ||||
| -rw-r--r-- | src/video_core/host_shaders/convert_d24s8_to_r16g16.frag | 21 |
3 files changed, 44 insertions, 0 deletions
diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt index fd3e41434..87042195a 100644 --- a/src/video_core/host_shaders/CMakeLists.txt +++ b/src/video_core/host_shaders/CMakeLists.txt | |||
| @@ -12,6 +12,8 @@ set(SHADER_FILES | |||
| 12 | block_linear_unswizzle_3d.comp | 12 | block_linear_unswizzle_3d.comp |
| 13 | convert_abgr8_to_d24s8.frag | 13 | convert_abgr8_to_d24s8.frag |
| 14 | convert_d24s8_to_abgr8.frag | 14 | convert_d24s8_to_abgr8.frag |
| 15 | convert_d24s8_to_b10g11r11.frag | ||
| 16 | convert_d24s8_to_r16g16.frag | ||
| 15 | convert_depth_to_float.frag | 17 | convert_depth_to_float.frag |
| 16 | convert_float_to_depth.frag | 18 | convert_float_to_depth.frag |
| 17 | full_screen_triangle.vert | 19 | full_screen_triangle.vert |
diff --git a/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag b/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag new file mode 100644 index 000000000..c743d3a13 --- /dev/null +++ b/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #version 450 | ||
| 6 | |||
| 7 | layout(binding = 0) uniform sampler2D depth_tex; | ||
| 8 | layout(binding = 1) uniform isampler2D stencil_tex; | ||
| 9 | |||
| 10 | layout(location = 0) out vec4 color; | ||
| 11 | |||
| 12 | void main() { | ||
| 13 | ivec2 coord = ivec2(gl_FragCoord.xy); | ||
| 14 | uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f)); | ||
| 15 | uint stencil = uint(textureLod(stencil_tex, coord, 0).r); | ||
| 16 | |||
| 17 | color.b = float(depth >> 22) / (exp2(10) - 1.0); | ||
| 18 | color.g = float((depth >> 11) & 0x00FF) / (exp2(11) - 1.0); | ||
| 19 | color.r = float(depth & 0x00FF) / (exp2(11) - 1.0); | ||
| 20 | color.a = 1.0f; | ||
| 21 | } | ||
diff --git a/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag b/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag new file mode 100644 index 000000000..2a9443d3d --- /dev/null +++ b/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #version 450 | ||
| 6 | |||
| 7 | layout(binding = 0) uniform sampler2D depth_tex; | ||
| 8 | layout(binding = 1) uniform isampler2D stencil_tex; | ||
| 9 | |||
| 10 | layout(location = 0) out vec4 color; | ||
| 11 | |||
| 12 | void main() { | ||
| 13 | ivec2 coord = ivec2(gl_FragCoord.xy); | ||
| 14 | uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f)); | ||
| 15 | uint stencil = uint(textureLod(stencil_tex, coord, 0).r); | ||
| 16 | |||
| 17 | color.r = float(depth >> 16) / (exp2(16) - 1.0); | ||
| 18 | color.g = float((depth >> 16) & 0x00FF) / (exp2(16) - 1.0); | ||
| 19 | color.b = 0.0f; | ||
| 20 | color.a = 1.0f; | ||
| 21 | } | ||