mirror of
https://github.com/libretro/ppsspp.git
synced 2024-12-14 12:40:11 +00:00
Don't mess with vpDepth in through mode. Fixes glitches in Wipeout Pulse.
This commit is contained in:
parent
5667f34805
commit
5a8e86e8ba
@ -666,18 +666,22 @@ void TransformDrawEngineDX9::ApplyDrawState(int prim) {
|
||||
dxstate.scissorTest.disable();
|
||||
}
|
||||
|
||||
// Direct3D can't handle negative depth ranges, so we fix it in the projection matrix.
|
||||
float depthMin = vpAndScissor.depthRangeMin;
|
||||
float depthMax = vpAndScissor.depthRangeMax;
|
||||
if (gstate_c.vpDepth != depthMax - depthMin) {
|
||||
gstate_c.vpDepth = depthMax - depthMin;
|
||||
vpAndScissor.dirtyProj = true;
|
||||
|
||||
if (!gstate.isModeThrough()) {
|
||||
// Direct3D can't handle negative depth ranges, so we fix it in the projection matrix.
|
||||
if (gstate_c.vpDepth != depthMax - depthMin) {
|
||||
gstate_c.vpDepth = depthMax - depthMin;
|
||||
vpAndScissor.dirtyProj = true;
|
||||
}
|
||||
if (depthMin > depthMax) {
|
||||
std::swap(depthMin, depthMax);
|
||||
}
|
||||
if (depthMin < 0.0f) depthMin = 0.0f;
|
||||
if (depthMax > 1.0f) depthMax = 1.0f;
|
||||
}
|
||||
if (depthMin > depthMax) {
|
||||
std::swap(depthMin, depthMax);
|
||||
}
|
||||
if (depthMin < 0.0f) depthMin = 0.0f;
|
||||
if (depthMax > 1.0f) depthMax = 1.0f;
|
||||
|
||||
dxstate.viewport.set(vpAndScissor.viewportX, vpAndScissor.viewportY, vpAndScissor.viewportW, vpAndScissor.viewportH, depthMin, depthMax);
|
||||
if (vpAndScissor.dirtyProj) {
|
||||
shaderManager_->DirtyUniform(DIRTY_PROJMATRIX);
|
||||
|
Loading…
Reference in New Issue
Block a user