How to use the AMD FidelityFX Super Resolution 2 (FSR 2) Unreal Engine Plugin

Share on facebook
Share on twitter
Share on linkedin
Share on reddit
Share on email

Introduction

AMD FidelityFX™ Super Resolution 2 (FSR 2) is our open source temporal upscaling solution. FSR 2 uses cutting-edge temporal algorithms to reconstruct fine geometric and texture detail, producing anti-aliased output from aliased input.

This package also includes the FSR2MovieRenderPipeline plugin which enables use of FSR 2 to accelerate rendering when using the Unreal Movie Render Queue.

Setup

Supported Unreal Engine versions

  • The FSR 2 plugin is intended for Unreal Engine 4.26.2* or later, including Unreal Engine 5.
  • The FSR2MovieRenderPipeline plugin is intended for Unreal Engine 4.27.2* or later, including Unreal Engine 5.

*If you are not a registered Unreal Engine developer, you will need to follow these instructions to register for access to this link.

Installation procedure

To install the plugin:

  1. Locate the Engine/Plugins directory of your Unreal Engine installation.
  2. Extract the contents of the FSR2.zip file.
  3. Select the sub-folder that corresponds to the Unreal Engine version to be used.
  4. Place the FSR2 folder within your Unreal Engine source tree at: Engine/Plugins/Runtime/AMD (for UE4) or Engine/Plugins/Marketplace (for UE5)
    1. (Optional) Place the FSR2MovieRenderPipeline folder within your Unreal Engine source tree at: Engine/Plugins/Runtime/AMD. Only available from Unreal Engine 4.27.2 and later.
  5. Open your Unreal Engine project.
  6. Navigate to Edit > Plugins in the Unreal Engine toolbar.
  7. Within the Plugins dialog:
    1. Ensure that All is selected on the left side.
    2. Type ‘fsr’ into the search box in the top right corner.
    3. Select the Enabled checkbox for the FSR 2.0 plugin.
      1. (Optional) Select the Enabled checkbox for the FSR2MovieRenderPipeline
        plugin.
    4. When prompted, click Restart Now to apply changes, and restart Unreal Engine.
FSR2 UE Plugin

Plugin configuration

Usage

Temporal Upsampling must be enabled in the Project Settings > Rendering window, accessed via Edit > Project Settings in the Unreal Engine toolbar, or via the console variable r.TemporalAA.Upsampling . 

Unreal Engine Rendering

FSR 2.0 can be enabled or disabled via the Enabled option in the Project Settings > FidelityFX Super Resolution 2.0 settings window, or with the console variable r.FidelityFX.FSR2.Enabled in the configuration files

The plugin will use specific quality modes specified via the Console Variable r.FidelityFX.FSR2.QualityMode overriding r.ScreenPercentage .

The exposed modes are:

  • Quality (1.5x): r.FidelityFX.FSR2.QualityMode 1
    Provides an image quality equal or superior to native rendering with a significant performance gain.
  • Balanced (1.7x): r.FidelityFX.FSR2.QualityMode 2
    Offers an ideal compromise between image quality and performance gains.
  • Performance (2.0x): r.FidelityFX.FSR2.QualityMode 3
    Provides an image quality similar to native rendering with a major performance gain.
  • Ultra Performance (3.0x): r.FidelityFX.FSR2.QualityMode 4
    Provides the highest performance gain while still maintaining an image quality representative of native rendering.
UE FSR2 Plugin Settings

Integration instructions

FidelityFX Super Resolution 2 contains a built-in sharpening pass called Robust Contrast Adaptive Sharpening (RCAS) that can be configured through the console variable r.FidelityFX.FSR2.Sharpness . This is disabled by default.  If your project has already integrated FidelityFX-CAS, it may be necessary to disable FidelityFX CAS – including any in-game menu options – while r.FidelityFX.FSR2.Sharpness is enabled to prevent over-sharpening your final renders, and improve integration results. 

In order for FSR2 to process materials with World Position Offset and/or World Displacement correctly the r.VertexDeformationOutputsVelocity (UE4) or r.Velocity.EnableVertexDeformation (UE5) option must be enabled. The r.FidelityFX.FSR2.ForceVertexDeformationOutputsVelocity setting is enabled by default and when enabled FSR2 will force r.VertexDeformationOutputsVelocity (UE4) or r.Velocity.EnableVertexDeformation (UE5) on. 

When r.FidelityFX.FSR2.CreateReactiveMask is enabled the FSR2 plugin forces r.SSR.ExperimentalDenoiser to 1 in order to capture the Screen Space Reflections. To handle this, the initial value of r.SSR.ExperimentalDenoiser will be applied to r.FidelityFX.FSR2.UseSSRExperimentalDenoiser . Subsequent changes to the value of r.FidelityFX.FSR2.UseSSRExperimentalDenoiser will override this. 

In order to switch to or from FSR2 to another temporal upscaler, always ensure that only one external temporal upscaler is enabled at a time. Disable the current upscaler before enabling the desired upscaler.

Other configurations

Recommendations

Optimizing translucency appearance

While the default settings for the FSR2 Reactive Mask should generate reasonable results it is important that developers are aware that the appearance can be altered via the r.FidelityFX.FSR2.ReactiveMask... console variables. Tuning these variables to suit the content may be necessary to optimise visual results. 

Translucent skyboxes and background planes

When using a skybox or a distant background plane it is beneficial for this to be rendered with the Opaque or Masked shading model when using FSR2. If these are rendered with the Translucent shading model they will contribute to the FSR2 translucency and reactive masks which can result in unnecessary artefacts. This is especially noticeable when other translucent materials are rendered over the top of the skybox/background plane and the camera moves. This occurs because the plugin cannot distinguish the purpose of individual translucent materials. They are all treated the same. 

To address this issue, the FSR2 plugin assumes that a translucent skybox or background-plane is used and will fade out translucency contribution based on reconstructed distance from the camera. This will cut-out all translucency rendered over distant opaque geometry and can be controlled with the r.FidelityFX.FSR2.ReactiveMaskTranslucencyMaxDistance console variable. 

When using an opaque skybox or backplane, adjust the r.FidelityFX.FSR2.ReactiveMaskTranslucencyMaxDistance console variable to avoid translucency cut-outs. 

Static foliage

For best results with Foliage assets that use World Position Offset and/or World Displacement select Moveable mobility. This ensures the assets will render the necessary motion vectors that are required for FSR2 to produce the best results. 

UE4 post-processing volume screen-percentage overrides

For UE4, developers should be aware that, when enabled, FSR2’s quality mode will determine the screen-percentage, ignoring any screen-percentage override present in a post-processing volume. This will cause different visual and performance results. 

PIX and RenderDoc issues

The native FSR2 backends used within FSR2 plugin graphics capture tools such as PIX and RenderDoc may be less stable. Disabling the native backend ( r.FidelityFX.FSR2.UseNativeDX12 or r.FidelityFX.FSR2.UseNativeVulkan ) and using the RHI-based backend may allow the capture tool to replay captures more reliably.

Known issues

Split-screen

Split-screen is known to render incorrectly in Unreal Engine 4 and to crash with the native DirectX® 12 and Vulkan® backends in Unreal Engine 5. This will be fixed in a future release.

Separate translucency screen percentage

The current FSR2 plugin release relies on Separate Translucency to generate the reactive mask and assumes that the Separate Translucency texture resolution matches the render resolution. Using r.SeparateTranslucencyScreenPercentage to specify a different resolution will result in incorrect rendering.

Movie render pipeline plugin

The FSR2MovieRenderPipeline plugin once enabled allows using FSR2 to accelerate rendering of Sequencer cinematics using Unreal’s Movie Render Queue.

To use the plugin:

  1. Open your Unreal project.
  2. Open a Sequencer cinematic through the Editor. 
  3. Select the movie output in the toolbar.

4.  Click on Unsaved Config to open the settings for the Movie Render Queue.

Unsaved configuration

5. Select the + Setting option and enable Fidelity FX Super Resolution 2.0 Settings.

FSR2 UE settings

6. Then select the new Fidelity FX Super Resolution 2.0 Settings in the list and choose the desired quality mode for rendering.

UE FSR2 quality setting

7. Click Accept and then Render (Local).

8. The output will be rendered using FSR 2 to upscale the output to the target resolution.

Get the Unreal Engine FSR 2 plugins now!

The package linked below contains all three plugins for UE 4.26, UE 4.27, and UE 5.0. [~340MB]

Learn more about FSR and Unreal Engine

Unreal Engine

Develop for Unreal Engine on AMD hardware with our plugin, performance and feature patches, including FidelityFX support.

GPUOpen
The home for games and graphics developers. Discover how our open source tools, SDKs, and effects can help you find your best graphics performance. Learn tips and tricks with our extensive tutorials and samples.

You may also like...

Some light reading to take away with you. Our presentations, ISAs, manuals, whitepapers, and many more.

Developer guides

Browse our developer guides, and find valuable advice on developing with AMD hardware, ray tracing, Vulkan, DirectX, UE4, and lots more.

Words not enough? How about pictures? How about moving pictures? We have some amazing videos to share with you!

The home of great performance and optimization advice for AMD RDNA™ 2 GPUs, AMD Ryzen™ CPUs, and so much more.

Product Blogs

Our handy product blogs will help you make good use of our tools, SDKs, and effects, as well as sharing the latest features with new releases.

Publications

Discover our published publications.