diff --git a/Source/Plugins/Plugin_VideoDX9/Src/TransformEngine.cpp b/Source/Plugins/Plugin_VideoDX9/Src/TransformEngine.cpp index bdcdd20722..66a64cbfca 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/TransformEngine.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/TransformEngine.cpp @@ -307,11 +307,9 @@ void CTransformEngine::TransformVertices(int _numVertices, const DecodedVArray * Vec3 TempUVs[8]; for (int j = 0; j < xfregs.numTexGens; j++) { - int n = bpmem.tevorders[j / 2].getTexCoord(j & 1); // <- yazor: dirty zelda patch ^^ - n = j; Vec3 t; - switch (xfregs.texcoords[n].texmtxinfo.sourcerow) { + switch (xfregs.texcoords[j].texmtxinfo.sourcerow) { case XF_SRCGEOM_INROW: t = OrigPos; break; //HACK WTFF??? case XF_SRCNORMAL_INROW: t = OrigNormal; break; case XF_SRCCOLORS_INROW: break; //set uvs to something? @@ -319,7 +317,7 @@ void CTransformEngine::TransformVertices(int _numVertices, const DecodedVArray * case XF_SRCBINORMAL_B_INROW: t=Vec3(0,0,0);break; default: { - int c = xfregs.texcoords[n].texmtxinfo.sourcerow - XF_SRCTEX0_INROW; + int c = xfregs.texcoords[j].texmtxinfo.sourcerow - XF_SRCTEX0_INROW; bool hasTCC = (components & (VertexLoader::VB_HAS_UV0 << c)) != 0; if (c >= 0 && c <= 7 && hasTCC) { @@ -330,7 +328,7 @@ void CTransformEngine::TransformVertices(int _numVertices, const DecodedVArray * } Vec3 out,out2; - switch (xfregs.texcoords[n].texmtxinfo.texgentype) + switch (xfregs.texcoords[j].texmtxinfo.texgentype) { case XF_TEXGEN_COLOR_STRGBC0: out = Vec3(chans[0].r*255, chans[0].g*255, 1)/255.0f; @@ -339,17 +337,17 @@ void CTransformEngine::TransformVertices(int _numVertices, const DecodedVArray * out = Vec3(chans[1].r*255, chans[1].g*255, 1)/255.0f; //FIX: take color1 instead break; case XF_TEXGEN_REGULAR: - if (xfregs.texcoords[n].texmtxinfo.projection) - VtxMulMtx43(out, t, m_pTexMatrix[n]); + if (xfregs.texcoords[j].texmtxinfo.projection) + VtxMulMtx43(out, t, m_pTexMatrix[j]); else - VtxMulMtx42(out, t, m_pTexMatrix[n]); + VtxMulMtx42(out, t, m_pTexMatrix[j]); break; } - if (xfregs.texcoords[n].postmtxinfo.normalize) + if (xfregs.texcoords[j].postmtxinfo.normalize) out.normalize(); - int postMatrix = xfregs.texcoords[n].postmtxinfo.index; + int postMatrix = xfregs.texcoords[j].postmtxinfo.index; float *pmtx = ((float*)xfmem) + 0x500 + postMatrix * 4; //CHECK //multiply with postmatrix VtxMulMtx43(TempUVs[j], out, pmtx); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/VertexShader.cpp b/Source/Plugins/Plugin_VideoDX9/Src/VertexShader.cpp index c8c4a3386f..d23b32083a 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/VertexShader.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/VertexShader.cpp @@ -15,6 +15,7 @@ // Official SVN repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ + #include "stdafx.h" #include "D3DShader.h" #include "VertexShader.h" @@ -44,11 +45,8 @@ VS_OUTPUT output;\n\ \n\ output.pos = mul(matWorldViewProj, input.pos);\n\ // texgen\n\ -output.uv[0] = float4(input.uv[0].xy,0,input.uv[0].z);\n\ -output.uv[1] = float4(input.uv[1].xy,0,input.uv[1].z);\n\ -output.uv[2] = float4(input.uv[2].xy,0,input.uv[2].z);\n\ -output.uv[3] = float4(input.uv[3].xy,0,input.uv[3].z);\n\ -output.uv[4] = float4(input.uv[4].xy,0,input.uv[4].z);\n\ +for (int i=0; i<5; i++)\n\ + output.uv[i] = float4(input.uv[i].xyz,1);\n\ \n\ for (int i=0; i<2; i++)\n output.colors[i] = input.colors[i];\n\ return output;\n\ @@ -57,7 +55,6 @@ return output;\n\ const char *GenerateVertexShader() { return genericVS; } - /* char text2[65536];