Emulator Issues #8940
openRaster Image Quality Options
0%
Description
Currently we are using a predefinied scaling kernel for upscaling/downscaling when the output frame doesn't match screen resolution (when fullscreen is on).
Coming from the restoration field I know how important is to make the right choice on scaling content, using plain bicubic filters is very different from using others like lanczos. Otherwise a number of problems can arise like aliasing, blurriness or ringing.
My suggestion is to use something along the lines of the state-of-the-art madVR video renderer. You can choose among some "cheap" bicubic kernels like bicubic (0.33,0.33), catmull-rom (0,0.5) or Mitchell-Netravali (0.378, 0.311), or the much better spline and lanczos with 3 or 4 taps each. There's also nnedi scaling but it's a bit out of the scope for this case (purpose and speed wise). What can be additionally implemented though is antiringing (lanczos rings a bit too much) and linear light scaling, the latter can be tricky if you want good looking linear light, for that is recommended to scale in CIE lab space* (read here: http://www.imagemagick.org/Usage/resize/#resize_lab). This scaling kernel should be employed for any kind of resizing (ideally the raster image should only be resized once accounting for both image-to-screen scaling and pixel or display aspect ratio scaling)
*A note on color spaces, I think the raster image should also adhere to a color space depending on output size so correct color management can be used on Dolphin.