diff options
author | bunnei <bunneidev@gmail.com> | 2016-05-11 05:00:40 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2016-05-11 05:00:40 +0200 |
commit | 86ecbdfa4de5654fb1f3e998921af8db1d5373cf (patch) | |
tree | a1fa859a3e2a8183eb7b3d367c41aa91a747b39f /src/video_core/renderer_opengl/gl_shader_gen.cpp | |
parent | Merge pull request #1774 from lioncash/warn (diff) | |
parent | OpenGL: Implement W-Buffers and fix depth-mapping (diff) | |
download | yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar.gz yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar.bz2 yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar.lz yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar.xz yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.tar.zst yuzu-86ecbdfa4de5654fb1f3e998921af8db1d5373cf.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; } |