diff --git a/GPU/Software/Rasterizer.cpp b/GPU/Software/Rasterizer.cpp index 5973ea3466..1d187caa95 100644 --- a/GPU/Software/Rasterizer.cpp +++ b/GPU/Software/Rasterizer.cpp @@ -118,10 +118,10 @@ void DrawTriangle(VertexData vertexdata[3]) float den = 1.0f/vertexdata[0].clippos.w * w0 + 1.0f/vertexdata[1].clippos.w * w1 + 1.0f/vertexdata[2].clippos.w * w2; float s = (vertexdata[0].texturecoords.s() * w0 / vertexdata[0].clippos.w + vertexdata[1].texturecoords.s() * w1 / vertexdata[1].clippos.w + vertexdata[2].texturecoords.s() * w2 / vertexdata[2].clippos.w) / den; float t = (vertexdata[0].texturecoords.t() * w0 / vertexdata[0].clippos.w + vertexdata[1].texturecoords.t() * w1 / vertexdata[1].clippos.w + vertexdata[2].texturecoords.t() * w2 / vertexdata[2].clippos.w) / den; - u32 vcol0 = (int)((vertexdata[0].color0.x * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.x * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.x * w2 / vertexdata[2].clippos.w) / den * 255)*256*256*256 + - (int)((vertexdata[0].color0.y * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.y * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.y * w2 / vertexdata[2].clippos.w) / den * 255)*256*256 + - (int)((vertexdata[0].color0.z * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.z * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.z * w2 / vertexdata[2].clippos.w) / den * 255)*256 + - (int)((vertexdata[0].color0.w * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.w * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.w * w2 / vertexdata[2].clippos.w) / den * 255); + u32 vcol0 = (int)((vertexdata[0].color0.r() * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.r() * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.r() * w2 / vertexdata[2].clippos.w) / den * 255) + + (int)((vertexdata[0].color0.g() * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.g() * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.g() * w2 / vertexdata[2].clippos.w) / den * 255)*256 + + (int)((vertexdata[0].color0.b() * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.b() * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.b() * w2 / vertexdata[2].clippos.w) / den * 255)*256*256 + + (int)((vertexdata[0].color0.a() * w0 / vertexdata[0].clippos.w + vertexdata[1].color0.a() * w1 / vertexdata[1].clippos.w + vertexdata[2].color0.a() * w2 / vertexdata[2].clippos.w) / den * 255)*256*256*256; u32 color = /*TextureDecoder::*/SampleNearest(0, s, t); *(u32*)&fb[p.x*4+p.y*FB_WIDTH*4] = color | vcol0; }