From a26aaec528b1cd99f75ee178c3ea4cd725646977 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 14 May 2017 08:55:50 -0700 Subject: [PATCH] SoftGPU: Support flat shading for lines. --- GPU/Software/Rasterizer.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/GPU/Software/Rasterizer.cpp b/GPU/Software/Rasterizer.cpp index 39b71c8d28..8d514fdc4c 100644 --- a/GPU/Software/Rasterizer.cpp +++ b/GPU/Software/Rasterizer.cpp @@ -1657,9 +1657,16 @@ void DrawLine(const VertexData &v0, const VertexData &v1) for (int i = 0; i <= steps; i++) { if (x >= scissorTL.x && y >= scissorTL.y && x <= scissorBR.x && y <= scissorBR.y) { // Interpolate between the two points. - // TODO: gstate.getShadeMode() == GE_SHADE_GOURAUD - Vec4 prim_color = (v0.color0 * (steps - i) + v1.color0 * i) / steps1; - Vec3 sec_color = (v0.color1 * (steps - i) + v1.color1 * i) / steps1; + Vec4 prim_color; + Vec3 sec_color; + if (gstate.getShadeMode() == GE_SHADE_GOURAUD) { + prim_color = (v0.color0 * (steps - i) + v1.color0 * i) / steps1; + sec_color = (v0.color1 * (steps - i) + v1.color1 * i) / steps1; + } else { + prim_color = v1.color0; + sec_color = v1.color1; + } + // TODO: UVGenMode? Vec2 tc = (v0.texturecoords * (float)(steps - i) + v1.texturecoords * (float)i) / steps1;