mirror of
https://github.com/libretro/ppsspp.git
synced 2024-12-14 20:48:30 +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();
|
dxstate.scissorTest.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Direct3D can't handle negative depth ranges, so we fix it in the projection matrix.
|
|
||||||
float depthMin = vpAndScissor.depthRangeMin;
|
float depthMin = vpAndScissor.depthRangeMin;
|
||||||
float depthMax = vpAndScissor.depthRangeMax;
|
float depthMax = vpAndScissor.depthRangeMax;
|
||||||
if (gstate_c.vpDepth != depthMax - depthMin) {
|
|
||||||
gstate_c.vpDepth = depthMax - depthMin;
|
if (!gstate.isModeThrough()) {
|
||||||
vpAndScissor.dirtyProj = true;
|
// 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);
|
dxstate.viewport.set(vpAndScissor.viewportX, vpAndScissor.viewportY, vpAndScissor.viewportW, vpAndScissor.viewportH, depthMin, depthMax);
|
||||||
if (vpAndScissor.dirtyProj) {
|
if (vpAndScissor.dirtyProj) {
|
||||||
shaderManager_->DirtyUniform(DIRTY_PROJMATRIX);
|
shaderManager_->DirtyUniform(DIRTY_PROJMATRIX);
|
||||||
|
Loading…
Reference in New Issue
Block a user