diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 063f41327..826eee7df 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -933,13 +933,15 @@ void RasterizerOpenGL::SyncViewport() { | |||
| 933 | } | 933 | } |
| 934 | flags[Dirty::Viewport0 + i] = false; | 934 | flags[Dirty::Viewport0 + i] = false; |
| 935 | 935 | ||
| 936 | const Common::Rectangle<f32> rect{regs.viewport_transform[i].GetRect()}; | 936 | const auto& src = regs.viewport_transform[i]; |
| 937 | const Common::Rectangle<f32> rect{src.GetRect()}; | ||
| 937 | glViewportIndexedf(static_cast<GLuint>(i), rect.left, rect.bottom, rect.GetWidth(), | 938 | glViewportIndexedf(static_cast<GLuint>(i), rect.left, rect.bottom, rect.GetWidth(), |
| 938 | rect.GetHeight()); | 939 | rect.GetHeight()); |
| 939 | 940 | ||
| 940 | const auto& src = regs.viewports[i]; | 941 | const GLdouble reduce_z = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne; |
| 941 | glDepthRangeIndexed(static_cast<GLuint>(i), static_cast<GLdouble>(src.depth_range_near), | 942 | const GLdouble near_depth = src.translate_z - src.scale_z * reduce_z; |
| 942 | static_cast<GLdouble>(src.depth_range_far)); | 943 | const GLdouble far_depth = src.translate_z + src.scale_z; |
| 944 | glDepthRangeIndexed(static_cast<GLuint>(i), near_depth, far_depth); | ||
| 943 | } | 945 | } |
| 944 | } | 946 | } |
| 945 | } | 947 | } |