diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2018-04-04 09:10:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-04 09:10:32 +0200 |
| commit | c6d0d9a01f83baf9cf50d95a49907e27232fb84b (patch) | |
| tree | 6d5707dbaeb47977394f502df5c09e45f9f3ae81 /Source/Core/VideoCommon/VertexShaderManager.cpp | |
| parent | ba42238b0b8489cfedefe21346fc554f240dee25 (diff) | |
| parent | 91732e2baff00bf5642d51b2618499aecc65107c (diff) | |
Merge pull request #6578 from JosJuice/remove-projection-hacks
Remove support for projection hacks
Diffstat (limited to 'Source/Core/VideoCommon/VertexShaderManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexShaderManager.cpp | 89 |
1 files changed, 2 insertions, 87 deletions
diff --git a/Source/Core/VideoCommon/VertexShaderManager.cpp b/Source/Core/VideoCommon/VertexShaderManager.cpp index 9d3c25ca13..e01b9aa666 100644 --- a/Source/Core/VideoCommon/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/VertexShaderManager.cpp @@ -47,88 +47,6 @@ static float s_fViewRotation[2]; VertexShaderConstants VertexShaderManager::constants; bool VertexShaderManager::dirty; -struct ProjectionHack -{ - float sign; - float value; - ProjectionHack() {} - ProjectionHack(float new_sign, float new_value) : sign(new_sign), value(new_value) {} -}; - -namespace -{ -// Control Variables -static ProjectionHack g_proj_hack_near; -static ProjectionHack g_proj_hack_far; -} // Namespace - -static float PHackValue(std::string sValue) -{ - float f = 0; - bool fp = false; - const char* cStr = sValue.c_str(); - char* c = new char[strlen(cStr) + 1]; - std::istringstream sTof(""); - - for (unsigned int i = 0; i <= strlen(cStr); ++i) - { - if (i == 20) - { - c[i] = '\0'; - break; - } - - c[i] = (cStr[i] == ',') ? '.' : *(cStr + i); - if (c[i] == '.') - fp = true; - } - - cStr = c; - sTof.str(cStr); - sTof >> f; - - if (!fp) - f /= 0xF4240; - - delete[] c; - return f; -} - -void UpdateProjectionHack(const ProjectionHackConfig& config) -{ - float near_value = 0, far_value = 0; - float near_sign = 1.0, far_sign = 1.0; - - if (config.m_enable) - { - const char* near_sign_str = ""; - const char* far_sign_str = ""; - - NOTICE_LOG(VIDEO, "\t\t--- Orthographic Projection Hack ON ---"); - - if (config.m_sznear) - { - near_sign *= -1.0f; - near_sign_str = " * (-1)"; - } - if (config.m_szfar) - { - far_sign *= -1.0f; - far_sign_str = " * (-1)"; - } - - near_value = PHackValue(config.m_znear); - NOTICE_LOG(VIDEO, "- zNear Correction = (%f + zNear)%s", near_value, near_sign_str); - - far_value = PHackValue(config.m_zfar); - NOTICE_LOG(VIDEO, "- zFar Correction = (%f + zFar)%s", far_value, far_sign_str); - } - - // Set the projections hacks - g_proj_hack_near = ProjectionHack(near_sign, near_value); - g_proj_hack_far = ProjectionHack(far_sign, far_value); -} - // Viewport correction: // In D3D, the viewport rectangle must fit within the render target. // Say you want a viewport at (ix, iy) with size (iw, ih), @@ -454,7 +372,6 @@ void VertexShaderManager::SetConstants() g_fProjectionMatrix[8] = 0.0f; g_fProjectionMatrix[9] = 0.0f; g_fProjectionMatrix[10] = rawProjection[4]; - g_fProjectionMatrix[11] = rawProjection[5]; g_fProjectionMatrix[12] = 0.0f; @@ -495,10 +412,8 @@ void VertexShaderManager::SetConstants() g_fProjectionMatrix[8] = 0.0f; g_fProjectionMatrix[9] = 0.0f; - g_fProjectionMatrix[10] = (g_proj_hack_near.value + rawProjection[4]) * - ((g_proj_hack_near.sign == 0) ? 1.0f : g_proj_hack_near.sign); - g_fProjectionMatrix[11] = (g_proj_hack_far.value + rawProjection[5]) * - ((g_proj_hack_far.sign == 0) ? 1.0f : g_proj_hack_far.sign); + g_fProjectionMatrix[10] = rawProjection[4]; + g_fProjectionMatrix[11] = rawProjection[5]; g_fProjectionMatrix[12] = 0.0f; g_fProjectionMatrix[13] = 0.0f; |
