diff options
| author | 2018-08-20 21:57:56 -0500 | |
|---|---|---|
| committer | 2018-08-20 21:57:56 -0500 | |
| commit | e3bddf81375ce5b13666d64cbf534c802a74b8d3 (patch) | |
| tree | d66e6c33b5686fb1144a634eeed9327efbaffcf5 /src | |
| parent | Merge pull request #1126 from lioncash/telem (diff) | |
| download | yuzu-e3bddf81375ce5b13666d64cbf534c802a74b8d3.tar.gz yuzu-e3bddf81375ce5b13666d64cbf534c802a74b8d3.tar.xz yuzu-e3bddf81375ce5b13666d64cbf534c802a74b8d3.zip | |
Shaders: Implement depth writing in fragment shaders.
We'll write <last color output reg + 2> to gl_FragDepth.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 6fb663bbc..aeb908744 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -918,7 +918,6 @@ private: | |||
| 918 | FragmentHeader header; | 918 | FragmentHeader header; |
| 919 | std::memcpy(&header, program_code.data(), PROGRAM_HEADER_SIZE); | 919 | std::memcpy(&header, program_code.data(), PROGRAM_HEADER_SIZE); |
| 920 | 920 | ||
| 921 | ASSERT_MSG(header.writes_depth == 0, "Depth write is unimplemented"); | ||
| 922 | ASSERT_MSG(header.writes_samplemask == 0, "Samplemask write is unimplemented"); | 921 | ASSERT_MSG(header.writes_samplemask == 0, "Samplemask write is unimplemented"); |
| 923 | 922 | ||
| 924 | // Write the color outputs using the data in the shader registers, disabled | 923 | // Write the color outputs using the data in the shader registers, disabled |
| @@ -935,6 +934,12 @@ private: | |||
| 935 | } | 934 | } |
| 936 | } | 935 | } |
| 937 | } | 936 | } |
| 937 | |||
| 938 | if (header.writes_depth) { | ||
| 939 | // The depth output is always 2 registers after the last color output, and current_reg | ||
| 940 | // already contains one past the last color register. | ||
| 941 | shader.AddLine("gl_FragDepth = " + regs.GetRegisterAsFloat(current_reg + 1) + ';'); | ||
| 942 | } | ||
| 938 | } | 943 | } |
| 939 | 944 | ||
| 940 | /** | 945 | /** |