From e02cff2f69f9a90777f87f85f290f83fc04c16ec Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sat, 20 Nov 2021 00:02:12 +0100 Subject: TextureCache: Add R16G16 to D24S8 converter. --- .../host_shaders/convert_r16g16_to_d24s8.frag | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/video_core/host_shaders/convert_r16g16_to_d24s8.frag (limited to 'src/video_core/host_shaders/convert_r16g16_to_d24s8.frag') diff --git a/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag b/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag new file mode 100644 index 000000000..7b1b914f6 --- /dev/null +++ b/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag @@ -0,0 +1,18 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#version 450 +// #extension GL_ARB_shader_stencil_export : require + +layout(binding = 0) uniform sampler2D color_texture; + +void main() { + ivec2 coord = ivec2(gl_FragCoord.xy); + vec4 color = texelFetch(color_texture, coord, 0).rgba; + uint depth_stencil_unorm = (uint(color.r * (exp2(16) - 1.0f)) << 16) + | (uint(color.g * (exp2(16) - 1.0f)) << 16); + + gl_FragDepth = float(depth_stencil_unorm >> 8) / (exp2(24.0) - 1.0f); + // gl_FragStencilRefARB = int(depth_stencil_unorm & 0x00FF); +} -- cgit v1.2.3 From 4ca6e9a9e23b96d259cc1f1ba50b9464a8fa12e8 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sat, 20 Nov 2021 06:17:01 +0100 Subject: TextureCache: Assure full conversions on depth/stencil write shaders. --- src/video_core/host_shaders/convert_r16g16_to_d24s8.frag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/video_core/host_shaders/convert_r16g16_to_d24s8.frag') diff --git a/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag b/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag index 7b1b914f6..3df70575e 100644 --- a/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag +++ b/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag @@ -3,7 +3,7 @@ // Refer to the license.txt file included. #version 450 -// #extension GL_ARB_shader_stencil_export : require +#extension GL_ARB_shader_stencil_export : require layout(binding = 0) uniform sampler2D color_texture; @@ -14,5 +14,5 @@ void main() { | (uint(color.g * (exp2(16) - 1.0f)) << 16); gl_FragDepth = float(depth_stencil_unorm >> 8) / (exp2(24.0) - 1.0f); - // gl_FragStencilRefARB = int(depth_stencil_unorm & 0x00FF); + gl_FragStencilRefARB = int(depth_stencil_unorm & 0x00FF); } -- cgit v1.2.3