Use the last triangle vertex for flat shading on OpenGL.
Bug 21559270
Change-Id: I4c2b5eb7076cc459422fbbb397a684c19bd643c2
Reviewed-on: https://swiftshader-review.googlesource.com/3372
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/SetupRoutine.cpp b/src/Shader/SetupRoutine.cpp
index fcb1284..675d8a0 100644
--- a/src/Shader/SetupRoutine.cpp
+++ b/src/Shader/SetupRoutine.cpp
@@ -21,6 +21,7 @@
{
extern bool complementaryDepthBuffer;
extern TranscendentalPrecision logPrecision;
+ extern bool leadingVertexFirst;
SetupRoutine::SetupRoutine(const SetupProcessor::State &state) : state(state)
{
@@ -546,7 +547,8 @@
}
else
{
- Float C = *Pointer<Float>(triangle + OFFSET(Triangle,v0) + attribute);
+ int leadingVertex = leadingVertexFirst ? OFFSET(Triangle,v0) : OFFSET(Triangle,v2);
+ Float C = *Pointer<Float>(triangle + leadingVertex + attribute);
*Pointer<Float4>(primitive + planeEquation + 0, 16) = Float4(0, 0, 0, 0);
*Pointer<Float4>(primitive + planeEquation + 16, 16) = Float4(0, 0, 0, 0);