summaryrefslogtreecommitdiffstats
path: root/src/video_core/host_shaders
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/host_shaders/CMakeLists.txt4
-rw-r--r--src/video_core/host_shaders/convert_abgr8_to_d24s8.frag9
-rw-r--r--src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag19
-rw-r--r--src/video_core/host_shaders/convert_d24s8_to_abgr8.frag10
-rw-r--r--src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag21
-rw-r--r--src/video_core/host_shaders/convert_d24s8_to_r16g16.frag21
-rw-r--r--src/video_core/host_shaders/convert_r16g16_to_d24s8.frag18
7 files changed, 11 insertions, 91 deletions
diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt
index 1c91999d7..fd3e41434 100644
--- a/src/video_core/host_shaders/CMakeLists.txt
+++ b/src/video_core/host_shaders/CMakeLists.txt
@@ -11,13 +11,9 @@ set(SHADER_FILES
block_linear_unswizzle_2d.comp
block_linear_unswizzle_3d.comp
convert_abgr8_to_d24s8.frag
- convert_b10g11r11_to_d24s8.frag
convert_d24s8_to_abgr8.frag
- convert_d24s8_to_b10g11r11.frag
- convert_d24s8_to_r16g16.frag
convert_depth_to_float.frag
convert_float_to_depth.frag
- convert_r16g16_to_d24s8.frag
full_screen_triangle.vert
fxaa.frag
fxaa.vert
diff --git a/src/video_core/host_shaders/convert_abgr8_to_d24s8.frag b/src/video_core/host_shaders/convert_abgr8_to_d24s8.frag
index 4e4ab6a26..ea055ddad 100644
--- a/src/video_core/host_shaders/convert_abgr8_to_d24s8.frag
+++ b/src/video_core/host_shaders/convert_abgr8_to_d24s8.frag
@@ -9,9 +9,10 @@ layout(binding = 0) uniform sampler2D color_texture;
void main() {
ivec2 coord = ivec2(gl_FragCoord.xy);
- uvec4 color = uvec4(texelFetch(color_texture, coord, 0).rgba * (exp2(8) - 1.0f));
- uint depth_unorm = (color.r << 16) | (color.g << 8) | color.b;
+ uvec4 color = uvec4(texelFetch(color_texture, coord, 0).abgr * (exp2(8) - 1.0f));
+ uvec4 bytes = color << uvec4(24, 16, 8, 0);
+ uint depth_stencil_unorm = bytes.x | bytes.y | bytes.z | bytes.w;
- gl_FragDepth = float(depth_unorm) / (exp2(24.0) - 1.0f);
- gl_FragStencilRefARB = int(color.a);
+ gl_FragDepth = float(depth_stencil_unorm & 0x00FFFFFFu) / (exp2(24.0) - 1.0f);
+ gl_FragStencilRefARB = int(depth_stencil_unorm >> 24);
}
diff --git a/src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag b/src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag
deleted file mode 100644
index 2999a84cf..000000000
--- a/src/video_core/host_shaders/convert_b10g11r11_to_d24s8.frag
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.b * (exp2(10) - 1.0f)) << 22)
- | (uint(color.g * (exp2(11) - 1.0f)) << 11)
- | (uint(color.r * (exp2(11) - 1.0f)));
-
- gl_FragDepth = float(depth_stencil_unorm >> 8) / (exp2(24.0) - 1.0f);
- gl_FragStencilRefARB = int(depth_stencil_unorm & 0x00FF);
-}
diff --git a/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag b/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag
index ff3bf8209..94368fb59 100644
--- a/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag
+++ b/src/video_core/host_shaders/convert_d24s8_to_abgr8.frag
@@ -14,8 +14,10 @@ void main() {
uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f));
uint stencil = uint(textureLod(stencil_tex, coord, 0).r);
- color.r = float(depth >> 16) / (exp2(8) - 1.0);
- color.g = float((depth >> 8) & 0x00FF) / (exp2(8) - 1.0);
- color.b = float(depth & 0x00FF) / (exp2(8) - 1.0);
- color.a = float(stencil) / (exp2(8) - 1.0);
+ highp uint depth_val =
+ uint(textureLod(depth_tex, coord, 0).r * (exp2(32.0) - 1.0));
+ lowp uint stencil_val = textureLod(stencil_tex, coord, 0).r;
+ highp uvec4 components =
+ uvec4(stencil_val, (uvec3(depth_val) >> uvec3(24u, 16u, 8u)) & 0x000000FFu);
+ color.abgr = vec4(components) / (exp2(8.0) - 1.0);
}
diff --git a/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag b/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag
deleted file mode 100644
index c743d3a13..000000000
--- a/src/video_core/host_shaders/convert_d24s8_to_b10g11r11.frag
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2021 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#version 450
-
-layout(binding = 0) uniform sampler2D depth_tex;
-layout(binding = 1) uniform isampler2D stencil_tex;
-
-layout(location = 0) out vec4 color;
-
-void main() {
- ivec2 coord = ivec2(gl_FragCoord.xy);
- uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f));
- uint stencil = uint(textureLod(stencil_tex, coord, 0).r);
-
- color.b = float(depth >> 22) / (exp2(10) - 1.0);
- color.g = float((depth >> 11) & 0x00FF) / (exp2(11) - 1.0);
- color.r = float(depth & 0x00FF) / (exp2(11) - 1.0);
- color.a = 1.0f;
-}
diff --git a/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag b/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag
deleted file mode 100644
index 2a9443d3d..000000000
--- a/src/video_core/host_shaders/convert_d24s8_to_r16g16.frag
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2021 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#version 450
-
-layout(binding = 0) uniform sampler2D depth_tex;
-layout(binding = 1) uniform isampler2D stencil_tex;
-
-layout(location = 0) out vec4 color;
-
-void main() {
- ivec2 coord = ivec2(gl_FragCoord.xy);
- uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f));
- uint stencil = uint(textureLod(stencil_tex, coord, 0).r);
-
- color.r = float(depth >> 16) / (exp2(16) - 1.0);
- color.g = float((depth >> 16) & 0x00FF) / (exp2(16) - 1.0);
- color.b = 0.0f;
- color.a = 1.0f;
-}
diff --git a/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag b/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag
deleted file mode 100644
index 3df70575e..000000000
--- a/src/video_core/host_shaders/convert_r16g16_to_d24s8.frag
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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);
-}