From 4c25bb03651c206dba793ef763e4bc0790d15725 Mon Sep 17 00:00:00 2001 From: raven02 Date: Sat, 18 Jan 2014 19:57:35 -0800 Subject: [PATCH] softgpu: Let's try doubling before alpha blend. Fixes #5122. --- GPU/Software/Rasterizer.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/GPU/Software/Rasterizer.cpp b/GPU/Software/Rasterizer.cpp index 700f6f5349..cc5fa5ca68 100644 --- a/GPU/Software/Rasterizer.cpp +++ b/GPU/Software/Rasterizer.cpp @@ -881,15 +881,17 @@ inline void DrawSinglePixel(const DrawingCoords &p, u16 z, Vec3 prim_color_ SetPixelDepth(p.x, p.y, z); } + // Doubling happens only when texturing is enabled, and after tests. + if (gstate.isTextureMapEnabled() && gstate.isColorDoublingEnabled() && !clearMode) { + // TODO: Does this need to be clamped before blending? + prim_color_rgb *= 2; + } + if (gstate.isAlphaBlendEnabled() && !clearMode) { Vec4 dst = Vec4::FromRGBA(GetPixelColor(p.x, p.y)); prim_color_rgb = AlphaBlendingResult(prim_color_rgb, prim_color_a, dst); } - if (gstate.isTextureMapEnabled() && gstate.isColorDoublingEnabled() && !clearMode) { - prim_color_rgb *= 2; - } - if (!clearMode) prim_color_rgb = prim_color_rgb.Clamp(0, 255);