Fix polygon offset depth clamp and units resolution. OpenGL requires depth values to be clamped to the [0, 1] range. Due to frustum clipping already limiting the range, this can only happen when non-zero polygon offset parameters are active. Also fix the 'minimum resolvable difference' for the 32-bit floating- point internal depth format that we use. Bug swiftshader:82 Change-Id: Ic9ebcac182a2bc81ab51d79cfe0bb451d340bd1e Reviewed-on: https://swiftshader-review.googlesource.com/12108 Tested-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp index 32e2027..0869697 100644 --- a/src/Renderer/Renderer.cpp +++ b/src/Renderer/Renderer.cpp
@@ -545,7 +545,7 @@ if(context->isDrawTriangle(false)) { - N += depthBias; + N += context->depthBias; } if(complementaryDepthBuffer) @@ -583,7 +583,7 @@ data->halfPixelX = replicate(0.5f / W); data->halfPixelY = replicate(0.5f / H); data->viewportHeight = abs(viewport.height); - data->slopeDepthBias = slopeDepthBias; + data->slopeDepthBias = context->slopeDepthBias; data->depthRange = Z; data->depthNear = N; draw->clipFlags = clipFlags; @@ -2447,12 +2447,12 @@ void Renderer::setDepthBias(float bias) { - depthBias = bias; + context->depthBias = bias; } void Renderer::setSlopeDepthBias(float slopeBias) { - slopeDepthBias = slopeBias; + context->slopeDepthBias = slopeBias; } void Renderer::setRasterizerDiscard(bool rasterizerDiscard)