summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexShaderGen.cpp
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2016-03-17 23:33:53 +0100
committerPierre Bourdon <delroth@gmail.com>2016-03-17 23:33:53 +0100
commit421a67d7cce08aae2582b7337846d0691ba9edae (patch)
tree210522c837689e3dc2841a22f55739bd63c82bc2 /Source/Core/VideoCommon/VertexShaderGen.cpp
parenta53c0f6995fb0966959a8c2ef1ec434faba5c357 (diff)
parenta8c37e5d6b5cb2deddfab180193768ad0d469db6 (diff)
Merge pull request #3684 from Sonicadvance1/fix_vertexshadergen_asserts
Fix a few asserts in the VertexShaderGen.
Diffstat (limited to 'Source/Core/VideoCommon/VertexShaderGen.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexShaderGen.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/Source/Core/VideoCommon/VertexShaderGen.cpp b/Source/Core/VideoCommon/VertexShaderGen.cpp
index 9a9a23b5b9..633a87a78b 100644
--- a/Source/Core/VideoCommon/VertexShaderGen.cpp
+++ b/Source/Core/VideoCommon/VertexShaderGen.cpp
@@ -198,15 +198,12 @@ static T GenerateVertexShader(API_TYPE api_type)
switch (texinfo.sourcerow)
{
case XF_SRCGEOM_INROW:
- // The following assert was triggered in Super Smash Bros. Project M 3.6.
- //_assert_(texinfo.inputform == XF_TEXINPUT_ABC1);
- out.Write("coord = rawpos;\n"); // pos.w is 1
+ out.Write("coord.xyz = rawpos.xyz;\n");
break;
case XF_SRCNORMAL_INROW:
if (components & VB_HAS_NRM0)
{
- _assert_(texinfo.inputform == XF_TEXINPUT_ABC1);
- out.Write("coord = float4(rawnorm0.xyz, 1.0);\n");
+ out.Write("coord.xyz = rawnorm0.xyz;\n");
}
break;
case XF_SRCCOLORS_INROW:
@@ -215,15 +212,13 @@ static T GenerateVertexShader(API_TYPE api_type)
case XF_SRCBINORMAL_T_INROW:
if (components & VB_HAS_NRM1)
{
- _assert_(texinfo.inputform == XF_TEXINPUT_ABC1);
- out.Write("coord = float4(rawnorm1.xyz, 1.0);\n");
+ out.Write("coord.xyz = rawnorm1.xyz;\n");
}
break;
case XF_SRCBINORMAL_B_INROW:
if (components & VB_HAS_NRM2)
{
- _assert_(texinfo.inputform == XF_TEXINPUT_ABC1);
- out.Write("coord = float4(rawnorm2.xyz, 1.0);\n");
+ out.Write("coord.xyz = rawnorm2.xyz;\n");
}
break;
default:
@@ -232,6 +227,10 @@ static T GenerateVertexShader(API_TYPE api_type)
out.Write("coord = float4(tex%d.x, tex%d.y, 1.0, 1.0);\n", texinfo.sourcerow - XF_SRCTEX0_INROW, texinfo.sourcerow - XF_SRCTEX0_INROW);
break;
}
+ // Input form of AB11 sets z element to 1.0
+ uid_data->texMtxInfo[i].inputform = xfmem.texMtxInfo[i].inputform;
+ if (texinfo.inputform == XF_TEXINPUT_AB11)
+ out.Write("coord.z = 1.0;\n");
// first transformation
uid_data->texMtxInfo[i].texgentype = xfmem.texMtxInfo[i].texgentype;
@@ -257,11 +256,9 @@ static T GenerateVertexShader(API_TYPE api_type)
break;
case XF_TEXGEN_COLOR_STRGBC0:
- _assert_(texinfo.sourcerow == XF_SRCCOLORS_INROW);
out.Write("o.tex%d.xyz = float3(o.colors_0.x, o.colors_0.y, 1);\n", i);
break;
case XF_TEXGEN_COLOR_STRGBC1:
- _assert_(texinfo.sourcerow == XF_SRCCOLORS_INROW);
out.Write("o.tex%d.xyz = float3(o.colors_1.x, o.colors_1.y, 1);\n", i);
break;
case XF_TEXGEN_REGULAR: