Parcourir la source

host_shaders: Add shaders to convert between depth and color images

ReinUsesLisp il y a 5 ans
Parent
commit
82b7daed9c

+ 2 - 0
src/video_core/host_shaders/CMakeLists.txt

@@ -1,6 +1,8 @@
 set(SHADER_FILES
     block_linear_unswizzle_2d.comp
     block_linear_unswizzle_3d.comp
+    convert_depth_to_float.frag
+    convert_float_to_depth.frag
     full_screen_triangle.vert
     opengl_copy_bc4.comp
     opengl_present.frag

+ 13 - 0
src/video_core/host_shaders/convert_depth_to_float.frag

@@ -0,0 +1,13 @@
+// Copyright 2020 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_texture;
+layout(location = 0) out float output_color;
+
+void main() {
+    ivec2 coord = ivec2(gl_FragCoord.xy);
+    output_color = texelFetch(depth_texture, coord, 0).r;
+}

+ 13 - 0
src/video_core/host_shaders/convert_float_to_depth.frag

@@ -0,0 +1,13 @@
+// Copyright 2020 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#version 450
+
+layout(binding = 0) uniform sampler2D color_texture;
+
+void main() {
+    ivec2 coord = ivec2(gl_FragCoord.xy);
+    float color = texelFetch(color_texture, coord, 0).r;
+    gl_FragDepth = color;
+}