RPCS3 / rpcs3

PS3 emulator/debugger
https://rpcs3.net/
GNU General Public License v2.0
15.16k stars 1.89k forks source link

Integer/Nearest Neighbor Upscaling #11187

Open BarryHerbers opened 2 years ago

BarryHerbers commented 2 years ago

Quick summary

Integer/Nearest Neighbor Upscaling for resolutions divisible from monitor's native res.

Details

I would like to be able to run games in 720p on my 1440p monitor without the blur that comes from bilinear upscaling -- in this example treating every 4 pixels on the monitor's panel as 1 pixel, thus rendering a sharper (if clearly low res) image.

In a perfect world, the feature would be available in a more variable fashion. For example, on a 1440p monitor, a 540p internal resolution would be able to integer scale to 1080p before letterboxing to maintain sharpness or bilinear upscaling after the closest integer is reached. But if only the simpler version (perfect integer intervals at 4x, 9x, 16x, etc.) is possible, I understand.

A newer game which shows the benefits of the approach (obviously via a different method) is Anodyne 2: Return to Dust. The game is made to run at 360p regardless of monitor to support its low poly/low detail aesthetic, but it leaves those pixels totally sharp. I think it's a very attractive game: https://www.youtube.com/watch?v=yT6yQm3JM3E

2. Please tell us, why your feature is important to RPCS3.

In light of high res availability, this may seem redundant, but I find many older games look better at lower resolutions, especially if they contain 2D elements locked to those lower resolutions (like UI or even some textures). For example, Shadow of the Colossus (Ps3) features a very low draw distance which holds up poorly at native 1440p, but which is perfectly serviceable at its intended 720p.

Likewise, it is often difficult to maintain performance in emulators (especially with experimental 60fps patches), and on the rare occasion where a game is GPU limited, lower resolution options are very useful, and in my opinion the best option would be to drop to 1/4th res with integer/nearest neighbor upscaling.

3. Please attach screenshots of the feature implemented in other projects.

image I know this feature is more essential for the pixel art of something like the SNES, but this was the only example that immediately came to mind

Please include.

I know the Ps3 is a complex beast, but to me integer upscaling is an essential and relatively simple piece of preserving the look of older games which constructed their visual feature sets around these target resolutions. A 720p game on a native 720p TV still looks quite solid after all, and I would just adore the ability to experience Ps3 games that way on my 1440p monitor as it is precisely 4x that target :)

Thank you for your time

Horizon531 commented 2 years ago

This feature would really help in a lot of situations. Please consider it!