diff options
| author | blåhaj <blaahaj@hotmail.com> | 2021-04-02 15:12:30 +0200 |
|---|---|---|
| committer | blåhaj <blaahaj@hotmail.com> | 2021-04-02 15:12:30 +0200 |
| commit | f339bc69c8cccca9cf975927ef025d4645f00d5e (patch) | |
| tree | 5b2e53d93472280f50b8ee41c440fc475616db87 /Source/Core/VideoCommon/VertexShaderGen.cpp | |
| parent | a2fa9aab5be3ec4916bd3beb05163c325dcbc9dd (diff) | |
VertexShaderGen: Sonic epsilon hack for OpenGL ES
debaf63fe8abc4d534c0cac7540eb8607e2c5c91 moved the "Sonic epsilon hack"
to vertex shaders. However, it was only done for targets with depth
clamping. If this is not available, for example the target is OpenGL ES,
the Sonic problem appears (https://bugs.dolphin-emu.org/issues/11897).
A version of the "Sonic epsilon hack" is added for targets without
depth clamping.
Diffstat (limited to 'Source/Core/VideoCommon/VertexShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexShaderGen.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/VertexShaderGen.cpp b/Source/Core/VideoCommon/VertexShaderGen.cpp index cf400a21ba..28d1e78442 100644 --- a/Source/Core/VideoCommon/VertexShaderGen.cpp +++ b/Source/Core/VideoCommon/VertexShaderGen.cpp @@ -498,6 +498,12 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const ShaderHostConfig& ho "o.clipDist1 = clipDist1;\n"); } } + else + { + // Same depth adjustment for Sonic. Without depth clamping, it unfortunately + // affects non-clipping uses of depth too. + out.Write("o.pos.z = o.pos.z * (1.0 - 1e-7);\n"); + } // Write the true depth value. If the game uses depth textures, then the pixel shader will // override it with the correct values if not then early z culling will improve speed. |
