VideoCommon: Account for pixel quads in bounding box calculation #9736
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The GC/Wii GPU rasterizes in 2x2 pixel groups, so bounding box values will be rounded to the extents of these groups, rather than the exact pixel. To account for this, we'll round the top/left down to even and the bottom/right up to odd. I have verified that the values resulting from this change exactly match a real Wii.
I would have implemented this in the pixel shaders, but the NVIDIA driver seems to be outsmarting me and optimizes out all my attempts to perform these operations in there, as it works on Vulkan but not OpenGL.
I used this modified homebrew to perform the hardware test: https://qimg.techjargaming.com/f/vRk5NA28/triangle.elf
Source code (ignore the mess, I've used it for a number of tests): https://gist.github.com/Techjar/4f38aa7807d0f5334011ef14ec721219
The values it outputs are as follows: