diff options
| author | omegadox <omegadox@gmail.com> | 2009-03-02 13:04:50 +0000 |
|---|---|---|
| committer | omegadox <omegadox@gmail.com> | 2009-03-02 13:04:50 +0000 |
| commit | 17814912e5bd4feb6e6572dbe34c9ee061055f2d (patch) | |
| tree | cd0de2d3aa40656039e3fe9d77d4833d47c5fcb6 /Source/Core/VideoCommon/Src/VertexShaderManager.cpp | |
| parent | d419d3fc29d4fb8740f09543ce6c432c32e045e3 (diff) | |
Some cleanup, projection hacks remove, the projections might be correct now. ZTP Bloom works and MP1 Heat Visor works, I tested many games, and good results. Please test more and report back. Also added in fix for Issue 677.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2521 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/VideoCommon/Src/VertexShaderManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/Src/VertexShaderManager.cpp | 57 |
1 files changed, 16 insertions, 41 deletions
diff --git a/Source/Core/VideoCommon/Src/VertexShaderManager.cpp b/Source/Core/VideoCommon/Src/VertexShaderManager.cpp index 361e355dc2..b3e03ee338 100644 --- a/Source/Core/VideoCommon/Src/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/Src/VertexShaderManager.cpp @@ -69,7 +69,7 @@ void VertexShaderManager::Shutdown() // ======================================================================================= // Syncs the shader constant buffers with xfmem // ---------------- -void VertexShaderManager::SetConstants(bool proj_hax_1, bool proj_hax_2) +void VertexShaderManager::SetConstants() { //nTransformMatricesChanged[0] = 0; nTransformMatricesChanged[1] = 256; //nNormalMatricesChanged[0] = 0; nNormalMatricesChanged[1] = 96; @@ -203,30 +203,17 @@ void VertexShaderManager::SetConstants(bool proj_hax_1, bool proj_hax_2) g_fProjectionMatrix[0] = xfregs.rawProjection[0]; g_fProjectionMatrix[1] = 0.0f; g_fProjectionMatrix[2] = xfregs.rawProjection[1]; - g_fProjectionMatrix[3] = 0; + g_fProjectionMatrix[3] = 0.0f; g_fProjectionMatrix[4] = 0.0f; g_fProjectionMatrix[5] = xfregs.rawProjection[2]; g_fProjectionMatrix[6] = xfregs.rawProjection[3]; - g_fProjectionMatrix[7] = 0; + g_fProjectionMatrix[7] = 0.0f; g_fProjectionMatrix[8] = 0.0f; g_fProjectionMatrix[9] = 0.0f; g_fProjectionMatrix[10] = xfregs.rawProjection[4]; - - //---------Projection[11]--------- - // No hacks - if ((!proj_hax_1 && !proj_hax_2) || (proj_hax_1 && proj_hax_2)) - g_fProjectionMatrix[11] = -(0.0f - xfregs.rawProjection[5]); - - // Before R945 Hack - if (proj_hax_1 && !proj_hax_2) - g_fProjectionMatrix[11] = -(1.0f - xfregs.rawProjection[5]); - - // R844 Hack - if (!proj_hax_1 && proj_hax_2) - g_fProjectionMatrix[11] = xfregs.rawProjection[5]; - //-------------------------------- + g_fProjectionMatrix[11] = xfregs.rawProjection[5]; g_fProjectionMatrix[12] = 0.0f; g_fProjectionMatrix[13] = 0.0f; @@ -266,24 +253,10 @@ void VertexShaderManager::SetConstants(bool proj_hax_1, bool proj_hax_2) g_fProjectionMatrix[8] = 0.0f; g_fProjectionMatrix[9] = 0.0f; g_fProjectionMatrix[10] = xfregs.rawProjection[4]; - - //---------Projection[11]--------- - // No hacks - if ((!proj_hax_1 && !proj_hax_2) || (proj_hax_1 && proj_hax_2)) - g_fProjectionMatrix[11] = -(-0.5f - xfregs.rawProjection[5]); - - // Before R945 Hack - if (proj_hax_1 && !proj_hax_2) - g_fProjectionMatrix[11] = -(0.0f - xfregs.rawProjection[5]); - - // R844 Hack - if (!proj_hax_1 && proj_hax_2) - g_fProjectionMatrix[11] = -xfregs.rawProjection[5]; + g_fProjectionMatrix[11] = xfregs.rawProjection[5] + 0.1f; - //-------------------------------- - - g_fProjectionMatrix[12] = 0; - g_fProjectionMatrix[13] = 0; + g_fProjectionMatrix[12] = 0.0f; + g_fProjectionMatrix[13] = 0.0f; g_fProjectionMatrix[14] = 0.0f; g_fProjectionMatrix[15] = 1.0f; @@ -303,15 +276,17 @@ void VertexShaderManager::SetConstants(bool proj_hax_1, bool proj_hax_2) SETSTAT_FT(stats.g2proj_13, g_fProjectionMatrix[13]); SETSTAT_FT(stats.g2proj_14, g_fProjectionMatrix[14]); SETSTAT_FT(stats.g2proj_15, g_fProjectionMatrix[15]); + + SETSTAT_FT(stats.proj_0, xfregs.rawProjection[0]); + SETSTAT_FT(stats.proj_1, xfregs.rawProjection[1]); + SETSTAT_FT(stats.proj_2, xfregs.rawProjection[2]); + SETSTAT_FT(stats.proj_3, xfregs.rawProjection[3]); + SETSTAT_FT(stats.proj_4, xfregs.rawProjection[4]); + SETSTAT_FT(stats.proj_5, xfregs.rawProjection[5]); + SETSTAT_FT(stats.proj_6, xfregs.rawProjection[6]); } - SETSTAT_FT(stats.proj_0, xfregs.rawProjection[0]); - SETSTAT_FT(stats.proj_1, xfregs.rawProjection[1]); - SETSTAT_FT(stats.proj_2, xfregs.rawProjection[2]); - SETSTAT_FT(stats.proj_3, xfregs.rawProjection[3]); - SETSTAT_FT(stats.proj_4, xfregs.rawProjection[4]); - SETSTAT_FT(stats.proj_5, xfregs.rawProjection[5]); - SETSTAT_FT(stats.proj_6, xfregs.rawProjection[6]); + PRIM_LOG("Projection: %f %f %f %f %f %f\n", xfregs.rawProjection[0], xfregs.rawProjection[1], xfregs.rawProjection[2], xfregs.rawProjection[3], xfregs.rawProjection[4], xfregs.rawProjection[5]); SetVSConstant4fv(C_PROJECTION, &g_fProjectionMatrix[0]); |
