WIP: Viewport handling rework #21120
Draft
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.
Previously, we tried to repurpose the viewport mechanism in the various graphics APIs to implement the PSP's viewport registers, even though the functionality is not very well matched. This resulted in a lot of hackery of the projection matrix and other tricks.
Instead, this PR tries to implement the PSP's viewport mechanism directly in the vertex shader, bypassing a number of problems. This leads to the simplification of a bunch of code.
So far this is just a proof-of-concept, showing that we can simplify code a lot, but doesn't properly re-implement everything yet (for example, the minz/maxz registers are not currently working correctly). But it's promising.
This is aimed for 1.21, not 1.20. But with this we will be able to fix several old rendering issues, and also more easily work on solutions for other problems. See #20223 for more information.