mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-09 14:08:58 +01:00
inputform ABC1's q value is defaulting to 0
This is causing the 0 divide case to run when source row is using tex0-7 and inputform is ABC1.
This commit is contained in:
parent
767f56d7c8
commit
8f69de51ca
@ -106,24 +106,26 @@ void TransformNormal(const InputVertexData* src, bool nbt, OutputVertexData* dst
|
|||||||
static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum, bool specialCase,
|
static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum, bool specialCase,
|
||||||
const InputVertexData* srcVertex, OutputVertexData* dstVertex)
|
const InputVertexData* srcVertex, OutputVertexData* dstVertex)
|
||||||
{
|
{
|
||||||
const Vec3* src;
|
Vec3 src;
|
||||||
switch (texinfo.sourcerow)
|
switch (texinfo.sourcerow)
|
||||||
{
|
{
|
||||||
case XF_SRCGEOM_INROW:
|
case XF_SRCGEOM_INROW:
|
||||||
src = &srcVertex->position;
|
src = srcVertex->position;
|
||||||
break;
|
break;
|
||||||
case XF_SRCNORMAL_INROW:
|
case XF_SRCNORMAL_INROW:
|
||||||
src = &srcVertex->normal[0];
|
src = srcVertex->normal[0];
|
||||||
break;
|
break;
|
||||||
case XF_SRCBINORMAL_T_INROW:
|
case XF_SRCBINORMAL_T_INROW:
|
||||||
src = &srcVertex->normal[1];
|
src = srcVertex->normal[1];
|
||||||
break;
|
break;
|
||||||
case XF_SRCBINORMAL_B_INROW:
|
case XF_SRCBINORMAL_B_INROW:
|
||||||
src = &srcVertex->normal[2];
|
src = srcVertex->normal[2];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_assert_(texinfo.sourcerow >= XF_SRCTEX0_INROW && texinfo.sourcerow <= XF_SRCTEX7_INROW);
|
_assert_(texinfo.sourcerow >= XF_SRCTEX0_INROW && texinfo.sourcerow <= XF_SRCTEX7_INROW);
|
||||||
src = (Vec3*)srcVertex->texCoords[texinfo.sourcerow - XF_SRCTEX0_INROW];
|
src.x = srcVertex->texCoords[texinfo.sourcerow - XF_SRCTEX0_INROW][0];
|
||||||
|
src.y = srcVertex->texCoords[texinfo.sourcerow - XF_SRCTEX0_INROW][1];
|
||||||
|
src.z = 1.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,18 +135,18 @@ static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum, bo
|
|||||||
if (texinfo.projection == XF_TEXPROJ_ST)
|
if (texinfo.projection == XF_TEXPROJ_ST)
|
||||||
{
|
{
|
||||||
if (texinfo.inputform == XF_TEXINPUT_AB11 || specialCase)
|
if (texinfo.inputform == XF_TEXINPUT_AB11 || specialCase)
|
||||||
MultiplyVec2Mat24(*src, mat, *dst);
|
MultiplyVec2Mat24(src, mat, *dst);
|
||||||
else
|
else
|
||||||
MultiplyVec3Mat24(*src, mat, *dst);
|
MultiplyVec3Mat24(src, mat, *dst);
|
||||||
}
|
}
|
||||||
else // texinfo.projection == XF_TEXPROJ_STQ
|
else // texinfo.projection == XF_TEXPROJ_STQ
|
||||||
{
|
{
|
||||||
_assert_(!specialCase);
|
_assert_(!specialCase);
|
||||||
|
|
||||||
if (texinfo.inputform == XF_TEXINPUT_AB11)
|
if (texinfo.inputform == XF_TEXINPUT_AB11)
|
||||||
MultiplyVec2Mat34(*src, mat, *dst);
|
MultiplyVec2Mat34(src, mat, *dst);
|
||||||
else
|
else
|
||||||
MultiplyVec3Mat34(*src, mat, *dst);
|
MultiplyVec3Mat34(src, mat, *dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
// normalize
|
// normalize
|
||||||
|
Loading…
x
Reference in New Issue
Block a user