hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.31k stars 2.17k forks source link

Add an optional feature to let the PPSSPP software renderer simulate the feeling of 90s PC native game's software renderer #19405

Open keepChatAlive opened 2 months ago

keepChatAlive commented 2 months ago

What should happen

90s PC games, like Quake and Half Life, often provide a software rendering option for those whose GPU are either non existent or not compatible. To speedup the CPU rendering process, those games often use nearest texture filtering, disable perspective correction, and use reduced calculation precision. PPSSPP's software renderer already has lower blend accuracy (seen as dithering patterns on some transparent textures) and/or calculation accuracy (seen as black lines on some models), and already defaults to nearest texture filtering We can make more aggressive optimizations, such as disabling perspective correction or reduce vertex precision into maybe float or even integer, or use even lower blending accuracy, to both evoke the retro feeling and make software rendering practical on more hardware with incompatible GPUs This should be an option so those who prefers higher graphic quality in software mode can opt out

Who would this benefit

Anyone who prefer PS1-ish or 90s PC game without GPU graphics may like this feature, as this feature can "convert" any PSP games into 1990s looking and feeling

Platform (if relevant)

None

Games this would be useful in

Any

Other emulators or software with a similar feature

Some other emulators support software rendering, but their software rendering backend is usually as accurate, or even more accurate than hardware accelerated backend. For example, PCSX2 Many PC games in 90s support software acceleration, like Quake and Half Life

Checklist

LunaMoo commented 2 months ago

None of what you wrote about PPSSPP software renderer is true. In some ways it's closer and more accurate to PSP(ie. dithering) and some hard to simulate effect just work in software, it might still be buggy in some ways through as it was always ment a platform for testing vs hardware backends issues and not really using it for playing games, through it was improved a lot also in terms of performance.

It also doesn't default to nearest filtering. Default is same for all backends and it's letting the game decide, through I guess there was and due to nobody caring there might still be a bug in the UI that keeps texture filtering grayed out despite using it's setting in software renderer.

Frankly speaking your use case is extremely niche, so I'm not really sure Henrik would accept it even if you did all the work yourself, but pull requests are welcome.

anr2me commented 2 months ago

True, it kinda defeats the purpose of software renderer to be as accurate as possible to the hardware being emulate, especially when using other console/PC as a reference instead of the console/handheld being emulated.

I'm sure other emulators (not only PSP emulators) also try to make their software renderer as accurate as possible to whatever they tried to emulate.

hrydgard commented 2 months ago

Yeah I don't see a good motivation here - the software renderer is supposed to simply be as accurate to the real PSP as possible (which yes, includes a lot of dither and stuff). It currently fails by not correctly supporting depth buffer swizzling and I think we still have a minor lighting issue, but otherwise it's pretty close, and adding options to it kind of defeats the purpose.

The hardware renderers are the more "wild" ones, and they already have a lot of options that you can use to get various effects. I don't think disabling perspective correction is going to appeal to more than 3 users in the world though..