Software renderer fix

This commit is contained in:
Preston Smith 2016-03-13 03:38:44 -04:00
parent 5a6b876dbd
commit 767f56d7c8
1 changed files with 21 additions and 4 deletions

View File

@ -147,14 +147,14 @@ static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum, bo
MultiplyVec3Mat34(*src, mat, *dst);
}
// normalize
const PostMtxInfo& postInfo = xfmem.postMtxInfo[coordNum];
const float* postMat = &xfmem.postMatrices[postInfo.index * 4];
if (xfmem.dualTexTrans.enabled)
{
Vec3 tempCoord;
// normalize
const PostMtxInfo& postInfo = xfmem.postMtxInfo[coordNum];
const float* postMat = &xfmem.postMatrices[postInfo.index * 4];
if (specialCase)
{
// no normalization
@ -177,6 +177,23 @@ static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum, bo
MultiplyVec3Mat34(tempCoord, postMat, *dst);
}
}
// TODO write comment
if(dst->z == 0.0f)
{
if(mat[8] != 0.0f || (xfmem.dualTexTrans.enabled && postMat[8] != 0.0f) ||
mat[9] != 0.0f || (xfmem.dualTexTrans.enabled && postMat[9] != 0.0f))
{
// TODO test this case more
dst->x = 0.0f;
dst->y = 0.0f;
}
else
{
dst->x = MathUtil::Clamp(dst->x / 2.0f, -1.0f, 1.0f);
dst->y = MathUtil::Clamp(dst->y / 2.0f, -1.0f, 1.0f);
}
}
}
struct LightPointer