godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.95k stars 21.15k forks source link

FSR 2.2 does not enhance image quality in VR / OpenXR #89167

Open AdrianTheFrog opened 8 months ago

AdrianTheFrog commented 8 months ago

Tested versions

Reproduced in 4.2 Stable, 4.2.1 Stable, and 4.3 Dev 4

System information

Godot v4.2.1.stable - Windows 10.0.22631 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3060 (NVIDIA; 31.0.15.4617) - 11th Gen Intel(R) Core(TM) i7-11700K @ 3.60GHz (16 Threads) - HP Reverb G2 VR headset running through WMR and SteamVR

Issue description

FSR 2.2 does not enhance the image when OpenXR is enabled.

With OpenXR enabled and FSR 2.2 enabled: Screenshot 2024-03-04 221703

With OpenXR enabled and bilinear scaling: Screenshot 2024-03-04 221555

With OpenXR disabled and FSR 2.2 enabled: Screenshot 2024-03-04 221648

With OpenXR disabled and bilinear scaling: Screenshot 2024-03-04 221541

As you can see, despite the viewport clearly rendering with a lower resolution than when OpenXR is enabled, it has a much higher quality image with FSR 2.2 than when OpenXR is enabled with FSR 2.2.

The difference between FSR 2.2 being enabled and disabled shows no improvement when OpenXR is enabled, while it shows a clear improvement when OpenXR is disabled.

The difference is not due to the motion of the VR headset as that motion is retained when OpenXR is disabled on the viewport.

Steps to reproduce

Enable FSR 2.2 in a project using OpenXR. Compare get_viewport().use_xr = true with get_viewport().use_xr = false.

Minimal reproduction project (MRP)

FSR 2.2 Bug Reproduction.zip

Calinou commented 8 months ago

FSR2 uses temporal antialiasing and is therefore not designed for VR use cases, like the native TAA solution. This is because temporal antialiasing and VR don't mix in general, due to its tendency to cause motion sickness. I doubt FSR2 is even used in a single VR title as of now.

FSR1 can likely be made to work with VR though, since it's purely spatial.

AdrianTheFrog commented 8 months ago

FSR 2 worked well for me in No Man's Sky where my card is not powerful enough to provide the native resolution. I have also heard of people using it through mods in Skyrim VR.