diff options
| author | Scott Mansell <phiren@gmail.com> | 2015-01-03 06:06:56 +1300 |
|---|---|---|
| committer | Scott Mansell <phiren@gmail.com> | 2015-01-23 03:32:31 +1300 |
| commit | 88c7afd315d06c27e459a8352f753cdeca5a1fe5 (patch) | |
| tree | 9f207f8dc65159d269ef534479672e007e99e3cb /Source/Core/VideoCommon/PixelShaderManager.cpp | |
| parent | 418296961cba39e4ae5bc441b3f52bf1459ad2bb (diff) | |
Make zfreeze use screenspace coordinates independant of IR.
OpenGL requires the y coordinates to be flipped.
Also refactored PixelGen code to remove duplicate code.
Diffstat (limited to 'Source/Core/VideoCommon/PixelShaderManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderManager.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/PixelShaderManager.cpp b/Source/Core/VideoCommon/PixelShaderManager.cpp index d0004a0921..a94dfaf991 100644 --- a/Source/Core/VideoCommon/PixelShaderManager.cpp +++ b/Source/Core/VideoCommon/PixelShaderManager.cpp @@ -14,6 +14,7 @@ bool PixelShaderManager::s_bFogRangeAdjustChanged; bool PixelShaderManager::s_bViewPortChanged; +bool PixelShaderManager::s_bEFBScaleChanged; std::array<int4,4> PixelShaderManager::s_tev_color; std::array<int4,4> PixelShaderManager::s_tev_konst_color; @@ -48,6 +49,7 @@ void PixelShaderManager::Dirty() SetDestAlpha(); SetZTextureBias(); SetViewportChanged(); + SetEfbScaleChanged(); SetZSlope(0, 0, 1); SetIndTexScaleChanged(false); SetIndTexScaleChanged(true); @@ -113,6 +115,13 @@ void PixelShaderManager::SetConstants() dirty = true; s_bViewPortChanged = false; } + + if (s_bEFBScaleChanged) { + constants.efbscale[0] = 1.0f / float(Renderer::EFBToScaledXf(1)); + constants.efbscale[1] = 1.0f / float(Renderer::EFBToScaledYf(1)); + dirty = true; + s_bEFBScaleChanged = false; + } } void PixelShaderManager::SetTevColor(int index, int component, s32 value) @@ -169,6 +178,12 @@ void PixelShaderManager::SetViewportChanged() s_bFogRangeAdjustChanged = true; // TODO: Shouldn't be necessary with an accurate fog range adjust implementation } +void PixelShaderManager::SetEfbScaleChanged() +{ + s_bEFBScaleChanged = true; + s_bViewPortChanged = true; +} + void PixelShaderManager::SetZSlope(float dfdx, float dfdy, float f0) { constants.zslope[0] = dfdx; |
