diff options
author | Jannik Vogel <email@jannikvogel.de> | 2016-03-30 19:27:04 +0200 |
---|---|---|
committer | Jannik Vogel <email@jannikvogel.de> | 2016-05-10 08:58:52 +0200 |
commit | fc9cc21024bff71d98e0106c9d0fd0476ab3c17e (patch) | |
tree | 24e0cce21a87dc1074d57982efc06af6da01e663 /src/video_core/renderer_opengl/gl_shader_gen.cpp | |
parent | Pica: Implement W-Buffer in SW rasterizer (diff) | |
download | yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar.gz yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar.bz2 yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar.lz yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar.xz yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.tar.zst yuzu-fc9cc21024bff71d98e0106c9d0fd0476ab3c17e.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_gen.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 0890adb12..0c3153e8f 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -540,6 +540,7 @@ layout (std140) uniform shader_data { vec4 const_color[NUM_TEV_STAGES]; vec4 tev_combiner_buffer_color; int alphatest_ref; + float depth_scale; float depth_offset; vec3 lighting_global_ambient; LightSrc light_src[NUM_LIGHTS]; @@ -581,7 +582,15 @@ vec4 secondary_fragment_color = vec4(0.0); } out += "color = last_tex_env_out;\n"; - out += "gl_FragDepth = gl_FragCoord.z + depth_offset;\n}"; + + out += "float z_over_w = 1.0 - gl_FragCoord.z * 2.0;\n"; + out += "float depth = z_over_w * depth_scale + depth_offset;\n"; + if (state.depthmap_enable == Pica::Regs::DepthBuffering::WBuffering) { + out += "depth /= gl_FragCoord.w;\n"; + } + out += "gl_FragDepth = depth;\n"; + + out += "}"; return out; } |