We’re pleased to announce the availability of the FidelityFX Super Resolution 2.2 source code!
Since announcing FSR 2.2 at our RDNA 3 reveal event, we have seen integrations in many games that have allowed for higher quality upscaling compared to our previous FSR 2.1 release. FSR 2.2 has new logic that aims to reduce “High Velocity Ghosting” – a situation that is particularly common in racing games, where a third-person vehicle moves at speed on a relatively flat surface. Today, the FSR 2.2 source code and accompanying sample is available to all through our GitHub repository.
The comparison images below show FSR 2.2 in Need for Speed™ Unbound1.
You can also see FSR 2.2 in action in the Forza Horizon 52 comparison video below.
FSR 2.2 also introduces a brand new “Debug API Checker” feature, which we recommend is enabled in debug builds while developers work on FSR 2 integrations. This allows for debug messages to be passed from the FSR 2 runtime back to games, notifying engineers of possible issues with the data provided at runtime. Common issues are near/far plane values which can cause depth precision problems, and frame time deltas being in the wrong units. With the Debug API Checker, these are validated every frame – saving time when integrating.
As with previous releases, there are many other changes which aim to increase quality. Some of the more major changes are listed below.
Change |
Impact |
---|---|
Changed how internal signals are stored and tonemapped |
FSR 2.2 should now be compatible with a wider set of high dynamic range inputs. Previously, some dynamic range could be lost in computation. |
Depth logic modified to improve disocclusion detection |
FSR 2.2 should reduce the level of “fizzing” artefacts seen during dissoclusions. |
Accumulation logic overhauled to use temporal reactivity |
FSR 2.2 should reduce the level of “fizzing” artefacts seen during dissoclusions. |
RCAS is now run without tonemapping |
FSR 2.2 should retain more dynamic range during the RCAS step. |
Dilated reactive mask logic updated to use temporal motion vector divergence |
This is used to assist with our “locking” feature, and should reduce some cases of ghosting artefacts. |
Improved luminance instability logic with history |
FSR 2.2 should have improved temporal stability – i.e, less flickering on some objects. |
The FSR 2.2 documentation has been updated to reflect these changes. There are also some fixes for issues raised via GitHub and we thank the community for continuing to make FSR 2 better by providing us with this feedback!
The application-side FSR 2 API has not changed significantly, except for additions to enable the Debug API Checker. Moving to FSR 2.2 from 2.1 or 2.0 should be relatively simple, however, the Application Binary Interface (ABI) can be different. As a result, swapping FSR 2 implementation DLLs is not recommended. Instead, rebuilding integrations with the new headers is best practice. Lastly, FSR 2.2 introduces some changes that may affect how values in both Reactive Mask and Transparency & Composition Mask textures impact upscaling, so developers may need to tweak those mask contents for the best quality. If there are any issues, please reach out to your AMD representative for assistance.
FSR 2.2 for Unreal Engine is in-progress and we will provide updates shortly. For more information, please visit our FSR 2 page.