如何使用 AMD FidelityFX™ Super Resolution 2 (FSR 2) Unreal Engine 插件

最初发布日期:
最后更新日期:

引言

AMD FidelityFX™ Super Resolution 2 (FSR 2) 是我们开源的临时放大解决方案。FSR 2 使用尖端的临时算法来重建精细的几何和纹理细节,从锯齿状输入产生抗锯齿输出。

此软件包还包括 FSR2MovieRenderPipeline 插件,该插件允许使用 FSR 2 来加速使用 Unreal Movie Render Queue 进行渲染。

FSR2 的 建议已知问题 **必须** 被理解并针对每个项目进行解决,以达到最佳质量。请参阅本指南的相应部分。

最新版本:v2.2.1c (插件于 2023 年 11 月 7 日最后更新,支持 UE 5.3.1)

下载 Unreal Engine FSR 2 插件

博客文章于 2023 年 11 月 7 日更新,添加了对 UE 5.3.1 的支持

我们最新的基于 ML 的 upscaler AMD FSR 4 有效地取代了此 FSR 2 插件,因为它集成了 AMD FSR 2/3/4,并在必要时回退到 FSR 3.1.5。

优化 FSR 2 Unreal Engine 博客系列

请不要错过我们非常详细的博客系列,其中解释了插件随附的补丁(仅适用于 FSR 2.1 及更高版本)是什么,如何安装它们,以及如何利用它们来发挥您的优势。您还可以了解您可以进行的更改,以便在不使用补丁的情况下获得类似的好处。

已知问题

Unreal 5.1.0

5.1 插件的预编译二进制版本需要 Unreal Engine 5.1.1,因为 5.1.0 和 5.1.1 之间存在 ABI 不兼容。请更新到 Unreal Engine 5.1.1。

静态对象的 World-position-offset

使用 World-Position-Offset 材质的静态对象不会生成运动矢量。这会影响 FSR2 正确放大此类材质的能力,并导致受影响对象的模糊/重影。

Unreal 5.0 及更早版本

一种选择是启用控制台变量 r.BasePassOutputsVelocityr. BasePassForceOutputsVelocity ,然后禁用控制台变量 r.SelectiveBasePassOutputs ,该变量在基础通道中渲染所有对象的速度。

对于成本过高且无法更改内容的情况,请遵循安装说明来安装正确版本的“ImproveStaticWPO”引擎补丁以避免此问题,或确保所有使用 WPO 材质的对象都设置为 Stationary 或 Movable。更改内容时,附加到 Landscape Actor 的草层需要新的控制台变量 r.FidelityFX.FSR2.ForceLandscapeHISMMobility ,这将把它们的移动性更改为 Stationary,以便渲染运动矢量。

Unreal 5.1

对于 Unreal 5.1,WPO 的处理已发生变化,默认情况下应渲染更多具有 WPO 的对象的速度。在此版本中,默认设置是在基础通道中渲染速度,可以使用 r.VelocityOutputPass 进行更改。如果需要,可以使用 r.Velocity.ForceOutput 来强制所有图元发出速度。

动画不透明材质

不为动画内容生成运动矢量的动画不透明材质,例如场景中的视频屏幕,在被静态几何体遮挡时也可能出现模糊或重影。可以通过确保此类材质写入插件中生成的 Reactive Mask 来减少这种情况。

对于 Deferred Renderer,可以通过在项目设置的 FSR2 部分或使用控制台变量 r.FidelityFX.FSR2.ReactiveMaskForceReactiveMaterialValue (如果设置为大于 0 的值)来选择 Reactive Shading Model 选项的着色模型来实现。使用此着色模型的材质将被视为响应式。这意味着当在材质编辑器中选择此着色模型时,该材质将写入 CustomData0.x 通道的值(当由着色模型公开时)或控制台变量 r.FidelityFX.FSR2.ReactiveMaskForceReactiveMaterialValue 的值。使用 r.FidelityFX.FSR2.ReactiveMaskForceReactiveMaterialValue 会覆盖 CustomData0.x 通道中指定的任何材质特定响应性。

在选择现有着色模型不适用时,请遵循安装说明来安装正确版本的“LitReactiveShadingModel”引擎补丁,该补丁添加了一个新的 LitReactive 着色模型,可用于此特定目的。

在 Forward Renderer 中,由于无法通过插件确定着色模型,因此此问题目前无法解决。

Substrate 材质(Unreal 5.1 中的 Strata)目前不受 LitReactive 着色模型的支持。

PIX 和 RenderDoc 问题

当 FSR2 插件中使用的本机 FSR2 后端存在时,PIX 和 RenderDoc 等图形捕获工具可能不太稳定。禁用本机后端( r.FidelityFX.FSR2.UseNativeDX12 或 r.FidelityFX.FSR2.UseNativeVulkan )并使用基于 RHI 的后端可能允许捕获工具更可靠地重放捕获。

UE4 后处理体积屏幕百分比覆盖

UE4 开发者应注意,FSR2 的质量模式(启用时)将决定屏幕百分比,并忽略后处理体积中存在的任何屏幕百分比覆盖。这将导致不同的视觉和性能结果。

UE5.2 RDG 调试

使用某些 RDG 调试功能可能导致 GPU 设备移除,当 FSR2 和 Lumen 同时激活时。

建议

优化半透明外观

虽然 FSR2 Reactive Mask 的默认设置应生成合理的结果,但重要的是开发人员要知道其外观可以通过 r.FidelityFX.FSR2.ReactiveMask… 控制台变量进行修改。可能需要调整这些变量以适应内容,以优化视觉效果。

半透明天空盒和背景平面

在使用天空盒或远处背景平面时,使用 Opaque 或 Masked 着色模型进行渲染对 FSR2 有益。如果使用 Translucent 着色模型进行渲染,它们将贡献到 FSR2 的半透明和响应式蒙版,这可能导致不必要的伪影。当其他半透明材质渲染在天空盒/背景平面之上且相机移动时,这一点尤其明显。发生这种情况是因为插件无法区分各个半透明材质的目的,因此它们都被视为相同。

为了解决这个问题,FSR2 插件假定使用了半透明天空盒或背景平面,并将根据从相机重建的距离淡出半透明贡献。这将裁剪掉渲染在远处不透明几何体上的所有半透明,并且可以通过 r.FidelityFX.FSR2.ReactiveMaskTranslucencyMaxDistance 控制台变量进行控制。

在使用不透明天空盒或背景平面时,请调整 r.FidelityFX.FSR2.ReactiveMaskTranslucencyMaxDistance 控制台变量以避免半透明裁剪。

毛发和抖动效果

FSR2 不像其他 upscaler 那样平滑抖动效果。它们被保留为细小的特征,这可能不是故意的。为了避免这种情况,特别是对于头发,请启用 r.FidelityFX.FSR2.DeDither 控制台变量,该变量尝试在 FSR2 放大之前平滑抖动效果。

设置

支持的 Unreal Engine 版本

*如果您不是注册的 Unreal Engine 开发者,您需要 遵循这些说明 注册才能访问此链接。

修补引擎

为了获得最佳质量,有必要使用源代码的 Unreal Engine 并应用源代码补丁。

  1. 要改进 FSR2 对应用于静态对象的 World-Position-Offset 材质的处理(仅适用于 Unreal Engine 4.26、4.27 和 5.0),请使用 git apply [VERS]-ImproveStaticWPO.patch ,其中 [VERS] 应为正在使用的引擎版本。
  2. 要改进 FSR2 对动画不透明材质的处理,请使用 git apply [VERS]-LitReactiveShadingModel.patch ,其中 [VERS] 应为正在使用的引擎版本。

安装过程

安装插件

  1. 找到您的 Unreal Engine 安装的 Engine/Plugins 目录。
  2. 解压 FSR2.zip 文件内容。
  3. 选择与要使用的 Unreal Engine 版本对应的子文件夹。
  4. FSR2 文件夹放在您的 Unreal Engine 源代码树中:Engine/Plugins/Runtime/AMD (对于 UE4)或 Engine/Plugins/Marketplace (对于 UE5)。
    a.(可选)将 FSR2MovieRenderPipeline 文件夹放在您的 Unreal Engine 源代码树中:Engine/Plugins/Runtime/AMD。仅从 Unreal Engine 4.27.2 及更高版本可用。
  5. 打开您的 Unreal Engine 项目。
  6. 在 Unreal Engine 工具栏中导航到 Edit > Plugins
  7. Plugins 对话框中
    1. 确保左侧选择了 All
    2. 在右上角的搜索框中输入“fsr”。
    3. 为 FSR 2.2 插件选择 Enabled 复选框。
      1. (可选)为 FSR2MovieRenderPipeline 选择 Enabled 复选框
        插件。
    4. 当提示时,单击 Restart Now 应用更改并重启 Unreal Engine。

插件配置

用法

必须在 Project Settings > Rendering 窗口中启用 Temporal Upsampling,该窗口可通过 Unreal Engine 工具栏中的 Edit > Project Settings 访问,或通过控制台变量 r.TemporalAA.Upsampling 访问。

Unreal Engine Rendering

质量模式

可以通过 Project Settings > FidelityFX Super Resolution 2.2 设置窗口中的 Enabled 选项,或使用配置文件中的控制台变量 r.FidelityFX.FSR2.Enabled 来启用或禁用 FSR 2。

警告

变量可以在运行时修改,**但是**,当启用其他第三方 upscaler 时,不能保证安全。

该插件将使用通过控制台变量 r.FidelityFX.FSR2.QualityMode 指定的特定质量模式,该模式会覆盖 r.ScreenPercentage

公开的模式是

  • Quality (1.5x): r.FidelityFX.FSR2.QualityMode 1
    • 提供与原生渲染相等或更优的图像质量,性能提升显著。
  • Balanced (1.7x): r.FidelityFX.FSR2.QualityMode 2
    • 在图像质量和性能提升之间提供了理想的折衷。*
  • Performance (2.0x): r.FidelityFX.FSR2.QualityMode 3
    • 提供与原生渲染类似的图像质量,性能提升巨大。
  • Ultra Performance (3.0x): r.FidelityFX.FSR2.QualityMode 4
    • 提供最高的性能提升,同时仍保持代表原生渲染的图像质量。

集成说明

RCAS

FidelityFX Super Resolution 2.2 包含一个名为 Robust Contrast Adaptive Sharpening (RCAS) 的内置锐化通道,可通过控制台变量 r.FidelityFX.FSR2.Sharpness 进行配置。默认情况下禁用此选项。如果您的项目已集成 FidelityFX-CAS ,则在启用 r.FidelityFX.FSR2.Sharpness 时,可能需要禁用 FidelityFX CAS(包括任何游戏内菜单选项),以防止最终渲染过度锐化,并改善集成结果。

World-position offset

为了让 FSR2 正确处理带有 World Position Offset 和/或 World Displacement 的材质,必须启用 r.VertexDeformationOutputsVelocity (UE4)或 r.Velocity.EnableVertexDeformation (UE5)选项。 r.FidelityFX.FSR2.ForceVertexDeformationOutputsVelocity 设置默认启用,并且在启用时,FSR2 会强制启用 r.VertexDeformationOutputsVelocity (UE4)或 r.Velocity.EnableVertexDeformation (UE5)。从 Unreal Engine 5.1 开始,如果禁用了 r.Velocity.EnableLandscapeGrass ,它也会启用它。

此选项还会强制启用控制台变量 r.BasePassForceOutputsVelocity ,以确保在项目启用 r.BasePassOutputsVelocity 时,所有对象都在基础通道中渲染速度。

对于附加到 Landscape Actor 的草层,还需要启用新的控制台变量 r.FidelityFX.FSR2.ForceLandscapeHISMMobility ,将它们的移动性更改为 Stationary,以便渲染有效的运动矢量。

有关可以在某些情况下改善视觉质量的引擎补丁的更多详细信息,请参阅 已知问题设置 部分。

Reactive mask 和实验性 ScreenSpace Reflection Denoiser

当启用 r.FidelityFX.FSR2.CreateReactiveMask 时,FSR2 插件会强制 r.SSR.ExperimentalDenoiser 设置为 1 以捕获屏幕空间反射。为了处理这种情况,r.SSR.ExperimentalDenoiser 的初始值将应用于 r.FidelityFX.FSR2.UseSSRExperimentalDenoiser 。后续对 r.FidelityFX.FSR2.UseSSRExperimentalDenoiser 值的更改将覆盖此值。

多个升频器

要切换到或从 FSR2 切换到另一个临时 upscaler,请始终确保一次只启用一个外部临时 upscaler。在启用所需的 upscaler 之前,请禁用当前的 upscaler。

其他配置参数

此表可以水平滚动以查看完整宽度

控制台变量默认值值范围详细信息
r.FidelityFX.FSR2.AdjustMipBias10, 1应用负 MipBias 到材质纹理,以改善结果。
r.FidelityFX.FSR2.Sharpness00.0 – 1.0

当大于 0.0 时,它会启用 Robust Contrast Adaptive Sharpening Filter 来锐化输出图像。

r.FidelityFX.FSR2.AutoExposure00, 1

设置为 1 以使用 FSR2 自己的自动曝光,否则使用引擎的自动曝光值。

r.FidelityFX.FSR2.HistoryFormat00, 1

选择 FSR2 历史纹理格式的位深度,默认为 PF_FloatRGBA ,但可以设置为 PF_FloatR11G11B10 以减少带宽,但会牺牲质量。

r.FidelityFX.FSR2.CreateReactiveMask10, 1

启用以从 SceneColor、GBuffer、SeparateTranslucency 和 ScreenspaceReflections 生成蒙版,该蒙版决定每个像素的响应程度。

r.FidelityFX.FSR2.ReactiveMaskReflectionScale0.40.0 – 1.0

缩放 Unreal Engine 的反射贡献到响应式蒙版,可用于控制反射表面的锯齿量。

r.FidelityFX.FSR2.ReactiveMaskReflectionLumaBias00.0 – 1.0

通过反射的亮度偏置反应掩码。用于平衡明亮反射表面上的锯齿和拖尾。

r.FidelityFX.FSR2.ReactiveMaskRoughnessScale0.150.0 – 1.0

缩放 GBuffer 粗糙度,在屏幕空间和平面反射禁用或不影响像素时提供响应式蒙版的备用值。

r.FidelityFX.FSR2.ReactiveMaskRoughnessBias0.250.0 – 1.0

通过 GBuffer 粗糙度对屏幕空间/平面反射较弱的反应掩码值进行偏置,以考虑反射环境捕获。

r.FidelityFX.FSR2.ReactiveMaskRoughnessMaxDistance60000.0 – INF

用于使用材质粗糙度贡献到响应式蒙版的世界单位最大距离,将使用此值与 View .FurthestReflectionCaptureDistance 中的较大值。

r.FidelityFX.FSR2.ReactiveMaskRoughnessForceMaxDistance00, 1

启用以强制使用材质粗糙度贡献到响应式蒙版的以世界单位计的最大距离,而不是使用 View.FurthestReflectionCaptureDistance

r.FidelityFX.FSR2.ReactiveMaskTranslucencyBias10.0 – 1.0

缩放半透明对响应式蒙版的贡献程度。较高的值会使半透明材质的响应性降低,从而减少拖尾。

r.FidelityFX.FSR2.ReactiveMaskTranslucencyLumaBias0.80.0 – 1.0

通过半透明的亮度来调整半透明贡献。较高的值会使明亮的半透明材质响应性降低,从而减少拖尾。

r.FidelityFX.FSR2.ReactiveHistoryTranslucencyBias0.50.0 - 1.0

缩放半透明通过反应掩码抑制历史的程度。较高的值会使半透明材质更具反应性,从而减少拖尾。

r.FidelityFX.FSR2.ReactiveHistoryTranslucencyLumaBias0.00.0 - 1.0

通过半透明的亮度来偏置半透明通过反应掩码抑制历史的程度。较高的值会使明亮的半透明材质更具反应性,从而减少拖尾。

r.FidelityFX.FSR2.ReactiveMaskPreDOFTranslucencyScale10.0 – 1.0

缩放景深前半透明颜色对响应式蒙版的贡献程度。较高的值会使半透明材质的响应性降低,从而减少拖尾。
已为 UE 5.3 移除。

r.FidelityFX.FSR2.ReactiveMaskPreDOFTranslucencyMax00, 1

切换以确定是使用 max(SceneColorPostDepthOfField

  • SceneColorPreDepthOfField) 还是 length(SceneColorPostDepthOfFieldSceneColorPreDepthOfField) 来确定景深前半透明的贡献。
    已为 UE 5.3 移除。
r.FidelityFX.FSR2.ReactiveMaskTranslucencyMaxDistance5000000.0 – INF

半透明对反应掩码的贡献的最高世界单位距离。这是一种从反应掩码中移除天空盒和其他背景平面,但会牺牲附近半透明不具备反应性的方法。

r.FidelityFX.FSR2.ReactiveMaskReactiveShadingModelIDMSM_NUM0 – MSM_NUM

将指定的着色模型视为响应式,并将其 CustomData0.x 值作为写入蒙版中的响应值。

r.FidelityFX.FSR2.ReactiveMaskForceReactiveMaterialValue00.0-1.0

强制反应着色模型材质的反应掩码值,当大于 0 时,此值可用于覆盖在材质图表中提供的值。

r.FidelityFX.FSR2.ForceVertexDeformationOutputsVelocity10, 1

强制启用带有 World Position Offset 和/或 World Displacement 的材质,使其在速度通道中输出速度,即使 actor 没有移动。

r.FidelityFX.FSR2.ForceLandscapeHISMMobility00, 1, 2

允许 FSR2 强制使用 World-Position-Offset 材质的 Landscape Actor 的 Hierarchical Instance Static Mesh 组件的移动性,以便它们渲染有效的速度。设置为 1 在 CPU 上更快,设置为 2 在 GPU 上更快。

r.FidelityFX.FSR2.UseSSRExperimentalDenoiser00, 1

启用以在 FSR2 启用时使用 r.SSR.ExperimentalDenoiser。当启用 r.FidelityFX.FSR2.CreateReactiveMask 时,这是必需的,因为 FSR2 插件会覆盖 r.SSR.ExperimentalDenoiser 以捕获反射数据来生成响应式蒙版。

r.FidelityFX.FSR2.UseNativeDX1210, 1

设置为 True 以使用 FSR2 的本机和优化的 D3D12 后端,设置为 False 以使用基于 Unreal 的 RHI 的回退实现。

r.FidelityFX.FSR2.UseNativeVulkan10, 1

设置为 True 以使用 FSR2 的本机和优化的 Vulkan 后端,设置为 False 以使用基于 Unreal 的 RHI 的回退实现。

r.FidelityFX.FSR2.QuantizeInternalTextures00, 1

将其设置为 1 将四舍五入某些内部纹理的大小,以确保特定的可整除性。这仅用于兼容性,如果需要。默认值为 0。

r.FidelityFX.FSR2.EnabledInEditorViewport00, 1

默认启用 FidelityFX Super Resolution 以在编辑器视口中进行时间升频。

r.FidelityFX.FSR2.DeDither20, 1, 2

在将渲染交给 FSR2 之前,启用一个额外的通道来去除抖动,以避免过度变细。可以设置为 Full(用于所有像素)或仅 Hair(用于 Deferred Renderer)。默认为 Hair Only。

Movie render pipeline 插件

启用 FSR2MovieRenderPipeline 插件后,可以使用 FSR2 加速使用 Unreal 的 Movie Render Queue 渲染 Sequencer 动画。

使用插件

  1. 打开您的 Unreal 项目。
  2. 通过 Editor 打开一个 Sequencer 动画。
  3. 在工具栏中选择电影输出。

4. 单击 Unsaved Config 打开 Movie Render Queue 的设置。

Unsaved configuration

5. 选择 + Setting 选项并启用 Fidelity FX Super Resolution 2.1 Settings

fsr_ue2_2_setting

6. 然后在列表中选择新的 Fidelity FX Super Resolution 2.2 Settings 并选择所需的渲染质量模式。

UE FSR2 quality setting

7. 单击 Accept,然后单击 Render (Local)

输出将使用 FSR 2 进行渲染,以将输出放大到目标分辨率。

立即获取 Unreal Engine FSR 2 插件!

下面链接的软件包包含我们所有当前可用的 UE 4/5 插件的最新版本 [~600MB]。

下载最新的 FSR 2 插件

上面链接的软件包将始终提供最新可用的插件(以下为最新版本)

发布说明

  • 添加对 Unreal Engine 5.3.1 的支持。

  • 修复了 UE 4.27 中启动项目时的崩溃。

  • 修复了 UE 5.1 至 5.2 的弃用警告。

了解更多关于 FSR 和 Unreal Engine 的信息

相关视频

© . This site is unofficial and not affiliated with AMD.