From 4866002c9bf6d4438087c4b53c100d7cf1271084 Mon Sep 17 00:00:00 2001 From: Techjar Date: Sat, 5 Jun 2021 06:47:04 -0400 Subject: VideoCommon: Perform OpenGL bounding box inversion in pixel shader Running the min/max operation on the upside down, quad-rounded pixel coordinates before inverting them to the standard upper-left origin produces wrong results. Therefore, we need to do the inversion before rounding to pixel quads. --- Source/Core/VideoBackends/OGL/OGLRender.cpp | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) (limited to 'Source/Core/VideoBackends/OGL/OGLRender.cpp') diff --git a/Source/Core/VideoBackends/OGL/OGLRender.cpp b/Source/Core/VideoBackends/OGL/OGLRender.cpp index d3435c51d5..bf0650f961 100644 --- a/Source/Core/VideoBackends/OGL/OGLRender.cpp +++ b/Source/Core/VideoBackends/OGL/OGLRender.cpp @@ -856,30 +856,12 @@ void Renderer::SetScissorRect(const MathUtil::Rectangle& rc) u16 Renderer::BBoxReadImpl(int index) { - // swap 2 and 3 for top/bottom - if (index >= 2) - index ^= 1; - - int value = BoundingBox::Get(index); - if (index >= 2) - { - // up/down -- we have to swap up and down - value = EFB_HEIGHT - value; - } - - return static_cast(value); + return static_cast(BoundingBox::Get(index)); } void Renderer::BBoxWriteImpl(int index, u16 value) { - s32 swapped_value = value; - if (index >= 2) - { - index ^= 1; // swap 2 and 3 for top/bottom - swapped_value = EFB_HEIGHT - swapped_value; - } - - BoundingBox::Set(index, swapped_value); + BoundingBox::Set(index, value); } void Renderer::BBoxFlushImpl() -- cgit v1.2.3