mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-13 00:58:29 +02:00
Make zfreeze use screenspace coordinates independant of IR.
OpenGL requires the y coordinates to be flipped. Also refactored PixelGen code to remove duplicate code.
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user