Browse Source
Merge pull request #3543 from ReinUsesLisp/gl-depth-range
gl_rasterizer: Use transformed viewport for depth ranges
pull/15/merge
Fernando Sahmkow
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
6 additions and
4 deletions
-
src/video_core/renderer_opengl/gl_rasterizer.cpp
|
|
|
@ -933,13 +933,15 @@ void RasterizerOpenGL::SyncViewport() { |
|
|
|
} |
|
|
|
flags[Dirty::Viewport0 + i] = false; |
|
|
|
|
|
|
|
const Common::Rectangle<f32> rect{regs.viewport_transform[i].GetRect()}; |
|
|
|
const auto& src = regs.viewport_transform[i]; |
|
|
|
const Common::Rectangle<f32> rect{src.GetRect()}; |
|
|
|
glViewportIndexedf(static_cast<GLuint>(i), rect.left, rect.bottom, rect.GetWidth(), |
|
|
|
rect.GetHeight()); |
|
|
|
|
|
|
|
const auto& src = regs.viewports[i]; |
|
|
|
glDepthRangeIndexed(static_cast<GLuint>(i), static_cast<GLdouble>(src.depth_range_near), |
|
|
|
static_cast<GLdouble>(src.depth_range_far)); |
|
|
|
const GLdouble reduce_z = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne; |
|
|
|
const GLdouble near_depth = src.translate_z - src.scale_z * reduce_z; |
|
|
|
const GLdouble far_depth = src.translate_z + src.scale_z; |
|
|
|
glDepthRangeIndexed(static_cast<GLuint>(i), near_depth, far_depth); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|