diff --git a/Ryujinx.Graphics/Gal/GalPipelineState.cs b/Ryujinx.Graphics/Gal/GalPipelineState.cs index 0e55f98157..efac04acda 100644 --- a/Ryujinx.Graphics/Gal/GalPipelineState.cs +++ b/Ryujinx.Graphics/Gal/GalPipelineState.cs @@ -41,6 +41,8 @@ public bool DepthTestEnabled; public bool DepthWriteEnabled; public GalComparisonOp DepthFunc; + public float DepthRangeNear; + public float DepthRangeFar; public bool StencilTestEnabled; public bool StencilTwoSideEnabled; diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLPipeline.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLPipeline.cs index cf0defc71b..c29e8c5695 100644 --- a/Ryujinx.Graphics/Gal/OpenGL/OGLPipeline.cs +++ b/Ryujinx.Graphics/Gal/OpenGL/OGLPipeline.cs @@ -195,7 +195,13 @@ namespace Ryujinx.Graphics.Gal.OpenGL } } - if (New.StencilTestEnabled != _old.StencilTestEnabled) + if (New.DepthRangeNear != _old.DepthRangeNear || + New.DepthRangeFar != _old.DepthRangeFar) + { + GL.DepthRange(New.DepthRangeNear, New.DepthRangeFar); + } + + if (New.StencilTestEnabled != _old.StencilTestEnabled) { Enable(EnableCap.StencilTest, New.StencilTestEnabled); } diff --git a/Ryujinx.Graphics/NvGpuEngine3d.cs b/Ryujinx.Graphics/NvGpuEngine3d.cs index 58be9b0e71..7209018d1f 100644 --- a/Ryujinx.Graphics/NvGpuEngine3d.cs +++ b/Ryujinx.Graphics/NvGpuEngine3d.cs @@ -371,6 +371,9 @@ namespace Ryujinx.Graphics { state.DepthFunc = (GalComparisonOp)ReadRegister(NvGpuEngine3DReg.DepthTestFunction); } + + state.DepthRangeNear = ReadRegisterFloat(NvGpuEngine3DReg.DepthRangeNNear); + state.DepthRangeFar = ReadRegisterFloat(NvGpuEngine3DReg.DepthRangeNFar); } private void SetStencil(GalPipelineState state) diff --git a/Ryujinx.Graphics/NvGpuEngine3dReg.cs b/Ryujinx.Graphics/NvGpuEngine3dReg.cs index 0dc2140a9d..380ea280b9 100644 --- a/Ryujinx.Graphics/NvGpuEngine3dReg.cs +++ b/Ryujinx.Graphics/NvGpuEngine3dReg.cs @@ -15,6 +15,8 @@ namespace Ryujinx.Graphics ViewportNTranslateZ = 0x285, ViewportNHoriz = 0x300, ViewportNVert = 0x301, + DepthRangeNNear = 0x302, + DepthRangeNFar = 0x303, VertexArrayFirst = 0x35d, VertexArrayCount = 0x35e, ClearNColor = 0x360,