fholger / openvr_fsr

Add Image Upscaling via AMD FidelityFX SuperResolution or NVIDIA Image Scaling to SteamVR games
Other
1.7k stars 64 forks source link

Variable Rate Supersampling Act Alike #72

Closed EpicGazel closed 3 years ago

EpicGazel commented 3 years ago

Nvidia has their Variable Rate Supersampling which supersamples the middle of the view in vr to improve the image quality. As you have implemented a radius that processes the center with FSR and the outer with bilinear, I was curious if creating the following system would be possible:

However, if the two regions (inner and outer) could be treated as separate with the config allowing for custom processing of said regions, I would consider that the best-case scenario.

To elaborate, the idea is that the config would have variables for "innerRegionScaler" and "outerRegionScaler" each individually allowing for the options of "bilinear", "fsr", and "native". In this case, any region being scaled with fsr and bilinear would take on the renderScale.

I imagine that such a solution may allow for noticeable performance gains without significant compromises on visual quality. Even if you don't or cannot implement it, thank you for your time and consideration.

fholger commented 3 years ago

I'm afraid that's not possible. There is no concept in D3D11 to render parts of an image at different resolutions.

D3D12 and Vulkan have introduced "Variable Rate Shading" that sort of does this, but it only works on RTX and RDNA2 cards, and you couldn't directly use FSR on the undersampled part of the image.