Eliminate the half-pixel NDC shift. Bug 22123818 Change-Id: If9bf78d6b44ccd0662676c8896837cca8829efc8 Reviewed-on: https://swiftshader-review.googlesource.com/3624 Tested-by: Nicolas Capens <capn@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp index d245b3a..f14e14a 100644 --- a/src/Renderer/Renderer.cpp +++ b/src/Renderer/Renderer.cpp
@@ -540,8 +540,8 @@ data->Wx16 = replicate(W * 16); data->Hx16 = replicate(H * 16); - data->X0x16 = replicate(X0 * 16); - data->Y0x16 = replicate(Y0 * 16); + data->X0x16 = replicate(X0 * 16 - 8); + data->Y0x16 = replicate(Y0 * 16 - 8); data->XXXX = replicate(X[s][q] / W); data->YYYY = replicate(Y[s][q] / H); data->halfPixelX = replicate(0.5f / W); @@ -1856,14 +1856,11 @@ unsigned int Renderer::computeClipFlags(const float4 &v, const DrawData &data) { - float clX = v.x + data.halfPixelX[0] * v.w; - float clY = v.y + data.halfPixelY[0] * v.w; - - return ((clX > v.w) << 0) | - ((clY > v.w) << 1) | + return ((v.x > v.w) << 0) | + ((v.y > v.w) << 1) | ((v.z > v.w) << 2) | - ((clX < -v.w) << 3) | - ((clY < -v.w) << 4) | + ((v.x < -v.w) << 3) | + ((v.y < -v.w) << 4) | ((v.z < 0) << 5) | Clipper::CLIP_FINITE; // FIXME: xyz finite }