Commit ed1cd4ea authored by hybrid's avatar hybrid

This time a proper sw renderer fix.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1485 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 674b535c
......@@ -122,9 +122,9 @@ public:
leftZValue = v1->ZValue;
rightZValue = v1->ZValue;
leftR = rightR = video::getRed(v1->Color)<<3;
leftG = rightG = video::getGreen(v1->Color)<<3;
leftB = rightB = video::getBlue(v1->Color)<<3;
leftR = rightR = video::getRed(v1->Color)<<11;
leftG = rightG = video::getGreen(v1->Color)<<11;
leftB = rightB = video::getBlue(v1->Color)<<11;
targetSurface = lockedSurface + span * SurfaceWidth;
zTarget = lockedZBuffer + span * SurfaceWidth;
......@@ -134,32 +134,32 @@ public:
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v2->Color)<<3) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<3) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<3) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<11) - rightB) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v3->Color)<<3) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<3) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<3) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - leftB) * tmpDiv);
}
else
{
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v3->Color)<<3) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<3) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<3) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - rightB) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v2->Color)<<3) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<3) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<3) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<11) - leftB) * tmpDiv);
}
......@@ -250,7 +250,7 @@ public:
if (spanZValue > *spanZTarget)
{
*spanZTarget = spanZValue;
*hSpanBegin = video::RGB16(spanR, spanG, spanB);
*hSpanBegin = video::RGB16(spanR>>8, spanG>>8, spanB>>8);
}
spanR += spanStepR;
......@@ -295,12 +295,12 @@ public:
rightZValue = v2->ZValue;
rightZStep = (s32)((v3->ZValue - v2->ZValue) * tmpDiv);
rightR = video::getRed(v2->Color)<<3;
rightG = video::getGreen(v2->Color)<<3;
rightB = video::getBlue(v2->Color)<<3;
rightStepR = (s32)(((video::getRed(v3->Color)<<3) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<3) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<3) - rightB) * tmpDiv);
rightR = video::getRed(v2->Color)<<11;
rightG = video::getGreen(v2->Color)<<11;
rightB = video::getBlue(v2->Color)<<11;
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - rightB) * tmpDiv);
}
else
{
......@@ -312,12 +312,12 @@ public:
leftZValue = v2->ZValue;
leftZStep = (s32)((v3->ZValue - v2->ZValue) * tmpDiv);
leftR = video::getRed(v2->Color)<<3;
leftG = video::getGreen(v2->Color)<<3;
leftB = video::getBlue(v2->Color)<<3;
leftStepR = (s32)(((video::getRed(v3->Color)<<3) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<3) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<3) - leftB) * tmpDiv);
leftR = video::getRed(v2->Color)<<11;
leftG = video::getGreen(v2->Color)<<11;
leftB = video::getBlue(v2->Color)<<11;
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - leftB) * tmpDiv);
}
......
......@@ -118,9 +118,9 @@ public:
leftZValue = v1->ZValue;
rightZValue = v1->ZValue;
leftR = rightR = video::getRed(v1->Color)<<8;
leftG = rightG = video::getGreen(v1->Color)<<8;
leftB = rightB = video::getBlue(v1->Color)<<8;
leftR = rightR = video::getRed(v1->Color)<<11;
leftG = rightG = video::getGreen(v1->Color)<<11;
leftB = rightB = video::getBlue(v1->Color)<<11;
targetSurface = lockedSurface + span * SurfaceWidth;
zTarget = lockedZBuffer + span * SurfaceWidth;
......@@ -130,32 +130,32 @@ public:
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<11) - rightB) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - leftB) * tmpDiv);
}
else
{
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - rightB) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<11) - leftB) * tmpDiv);
}
......@@ -214,7 +214,7 @@ public:
if (leftZValue > *(zTarget + leftx))
{
*(zTarget + leftx) = leftZValue;
*(targetSurface + leftx) = (((leftR>>8) & 0x1F)<<10) | (((leftG>>8) & 0x1F)<<5) | ((leftB>>8) & 0x1F);
*(targetSurface + leftx) = video::RGB16(leftR>>8, leftG>>8, leftB>>8);
}
}
......@@ -225,7 +225,7 @@ public:
if (rightZValue > *(zTarget + rightx))
{
*(zTarget + rightx) = rightZValue;
*(targetSurface + rightx) = (((rightR>>8) & 0x1F)<<10) | (((rightG>>8) & 0x1F)<<5) | ((rightB>>8) & 0x1F);
*(targetSurface + rightx) = video::RGB16(rightR, rightG, rightB);
}
}
......@@ -262,12 +262,12 @@ public:
rightZValue = v2->ZValue;
rightZStep = (s32)((v3->ZValue - v2->ZValue) * tmpDiv);
rightR = video::getRed(v2->Color)<<8;
rightG = video::getGreen(v2->Color)<<8;
rightB = video::getBlue(v2->Color)<<8;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightR = video::getRed(v2->Color)<<11;
rightG = video::getGreen(v2->Color)<<11;
rightB = video::getBlue(v2->Color)<<11;
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - rightB) * tmpDiv);
}
else
{
......@@ -279,12 +279,12 @@ public:
leftZValue = v2->ZValue;
leftZStep = (s32)((v3->ZValue - v2->ZValue) * tmpDiv);
leftR = video::getRed(v2->Color)<<8;
leftG = video::getGreen(v2->Color)<<8;
leftB = video::getBlue(v2->Color)<<8;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftR = video::getRed(v2->Color)<<11;
leftG = video::getGreen(v2->Color)<<11;
leftB = video::getBlue(v2->Color)<<11;
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<11) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<11) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<11) - leftB) * tmpDiv);
}
......
......@@ -205,18 +205,18 @@ void CTRTextureGouraud::drawIndexedTriangleList(S2DVertex* vertices, s32 vertexC
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v2->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v2->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v3->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v3->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -225,18 +225,18 @@ void CTRTextureGouraud::drawIndexedTriangleList(S2DVertex* vertices, s32 vertexC
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v3->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v3->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v2->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v2->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -397,9 +397,9 @@ void CTRTextureGouraud::drawIndexedTriangleList(S2DVertex* vertices, s32 vertexC
rightR = video::getRed(v2->Color)<<8;
rightG = video::getGreen(v2->Color)<<8;
rightB = video::getBlue(v2->Color)<<8;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTx = v2->TCoords.X;
rightTy = v2->TCoords.Y;
......@@ -419,9 +419,9 @@ void CTRTextureGouraud::drawIndexedTriangleList(S2DVertex* vertices, s32 vertexC
leftR = video::getRed(v2->Color)<<8;
leftG = video::getGreen(v2->Color)<<8;
leftB = video::getBlue(v2->Color)<<8;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTx = v2->TCoords.X;
leftTy = v2->TCoords.Y;
......
......@@ -151,18 +151,18 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v2->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v2->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v3->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v3->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -171,18 +171,18 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v3->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v3->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v2->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v2->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -242,7 +242,7 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
// perform some clipping
// thanks to a correction by hybrid
// calculations delayed to correctly propagate to textures etc.
// calculations delayed to correctly propagate to textures etc.
s32 tDiffLeft=0, tDiffRight=0;
if (leftx<ViewPortRect.UpperLeftCorner.X)
tDiffLeft=ViewPortRect.UpperLeftCorner.X-leftx;
......@@ -286,12 +286,12 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
//*spanZTarget = spanZValue;
color = lockedTexture[((spanTy>>8)&textureYMask) * lockedTextureWidth + ((spanTx>>8)&textureXMask)];
int basis = *hSpanBegin;
int r = (video::getRed(basis)<<3) + (video::getRed(color)<<3);
s32 basis = *hSpanBegin;
s32 r = (video::getRed(basis)<<3) + (video::getRed(color)<<3);
if (r > 255) r = 255;
int g = (video::getGreen(basis)<<3) + (video::getGreen(color)<<3);
s32 g = (video::getGreen(basis)<<3) + (video::getGreen(color)<<3);
if (g > 255) g = 255;
int b = (video::getBlue(basis)<<3) + (video::getBlue(color)<<3);
s32 b = (video::getBlue(basis)<<3) + (video::getBlue(color)<<3);
if (b > 255) b = 255;
*hSpanBegin = video::RGB16(r, g, b);
......@@ -350,9 +350,9 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
rightR = video::getRed(v2->Color)<<8;
rightG = video::getGreen(v2->Color)<<8;
rightB = video::getBlue(v2->Color)<<8;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTx = v2->TCoords.X;
rightTy = v2->TCoords.Y;
......@@ -372,9 +372,9 @@ void CTRTextureGouraudAdd::drawIndexedTriangleList(S2DVertex* vertices, s32 vert
leftR = video::getRed(v2->Color)<<8;
leftG = video::getGreen(v2->Color)<<8;
leftB = video::getBlue(v2->Color)<<8;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTx = v2->TCoords.X;
leftTy = v2->TCoords.Y;
......
......@@ -129,17 +129,17 @@ public:
{
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightStepR = (s32)(((video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v2->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v2->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v3->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v3->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -147,17 +147,17 @@ public:
{
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v3->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v3->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftStepR = (s32)(((video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v2->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v2->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -300,9 +300,9 @@ public:
rightR = video::getRed(v2->Color)<<8;
rightG = video::getGreen(v2->Color)<<8;
rightB = video::getBlue(v2->Color)<<8;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTx = v2->TCoords.X;
rightTy = v2->TCoords.Y;
......@@ -319,9 +319,9 @@ public:
leftR = video::getRed(v2->Color)<<8;
leftG = video::getGreen(v2->Color)<<8;
leftB = video::getBlue(v2->Color)<<8;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTx = v2->TCoords.X;
leftTy = v2->TCoords.Y;
......
......@@ -135,18 +135,18 @@ public:
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
rightdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v2->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v2->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)height;
leftdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v3->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v3->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -155,18 +155,18 @@ public:
tmpDiv = 1.0f / (f32)height;
rightdeltaxf = (v3->Pos.X - v1->Pos.X) * tmpDiv;
rightZStep = (s32)((v3->ZValue - v1->ZValue) * tmpDiv);
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTxStep = (s32)((v3->TCoords.X - rightTx) * tmpDiv);
rightTyStep = (s32)((v3->TCoords.Y - rightTy) * tmpDiv);
tmpDiv = 1.0f / (f32)(v2->Pos.Y - v1->Pos.Y);
leftdeltaxf = (v2->Pos.X - v1->Pos.X) * tmpDiv;
leftZStep = (s32)((v2->ZValue - v1->ZValue) * tmpDiv);
leftStepR = (s32)(((video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v2->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v2->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v2->Color)<<8) - leftB) * tmpDiv);
leftTxStep = (s32)((v2->TCoords.X - leftTx) * tmpDiv);
leftTyStep = (s32)((v2->TCoords.Y - leftTy) * tmpDiv);
}
......@@ -294,9 +294,9 @@ public:
rightR = video::getRed(v2->Color)<<8;
rightG = video::getGreen(v2->Color)<<8;
rightB = video::getBlue(v2->Color)<<8;
rightStepR = (s32)(((video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - rightR) * tmpDiv);
rightStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - rightG) * tmpDiv);
rightStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - rightB) * tmpDiv);
rightTx = v2->TCoords.X;
rightTy = v2->TCoords.Y;
......@@ -316,9 +316,9 @@ public:
leftR = video::getRed(v2->Color)<<8;
leftG = video::getGreen(v2->Color)<<8;
leftB = video::getBlue(v2->Color)<<8;
leftStepR = (s32)(((video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftStepR = (s32)(((s32)(video::getRed(v3->Color)<<8) - leftR) * tmpDiv);
leftStepG = (s32)(((s32)(video::getGreen(v3->Color)<<8) - leftG) * tmpDiv);
leftStepB = (s32)(((s32)(video::getBlue(v3->Color)<<8) - leftB) * tmpDiv);
leftTx = v2->TCoords.X;
leftTy = v2->TCoords.Y;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment