You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A lot of 2D UI in games, though certainly not all, is drawn like this:
through mode (untransformed) RECT primitives
1:1 pixel mapping
linear filter
1:1 pixel mapping can, in theory, often be detected during rectangle-to-triangles expansion, for example if the data looks as simple as this we can just compare the UV and XY deltas and check if they match:
And we could just automatically turn on nearest filter for these draws. In many games, without texture replacement or upscaling enabled, this would look better. On the real PSP, the games often leave linear filtering on for no reason, because it doesn't make a difference when you map texels to pixels 1:1. But when we want to render 3D graphics at high resolution in PPSSPP, we end up with muddy UIs.
For example, this UI in Everybody's Golf:
Would look like this:
While the interior looks alright filtered, the borders are really destroyed by the undesired filtering.
Unfortunately we scale UVs a bit too early in the software transform pipeline that we use for RECT parameters to detect it trivially right now, but by moving the UV scaling in this case to the rectangle expansion part, we can still do cheap checks.
Anyway, just documenting an idea for some future hacking session :) It won't work with all games anyway.
The text was updated successfully, but these errors were encountered:
A lot of 2D UI in games, though certainly not all, is drawn like this:
1:1 pixel mapping can, in theory, often be detected during rectangle-to-triangles expansion, for example if the data looks as simple as this we can just compare the UV and XY deltas and check if they match:
And we could just automatically turn on nearest filter for these draws. In many games, without texture replacement or upscaling enabled, this would look better. On the real PSP, the games often leave linear filtering on for no reason, because it doesn't make a difference when you map texels to pixels 1:1. But when we want to render 3D graphics at high resolution in PPSSPP, we end up with muddy UIs.
For example, this UI in Everybody's Golf:
Would look like this:
While the interior looks alright filtered, the borders are really destroyed by the undesired filtering.
Unfortunately we scale UVs a bit too early in the software transform pipeline that we use for RECT parameters to detect it trivially right now, but by moving the UV scaling in this case to the rectangle expansion part, we can still do cheap checks.
Anyway, just documenting an idea for some future hacking session :) It won't work with all games anyway.
The text was updated successfully, but these errors were encountered: