nVIDIA DLSS3 虚幻引擎帧生成插件说明

NVIDIA Unreal Engine DLSS 帧生成插件(Streamline)

DLSS3 和 NVIDIA Unreal Engine DLSS 帧生成插件

英伟达 DLSS 帧生成 插件是更广泛的相关 NVIDIA 性能和图像质量改进技术以及相应 NVIDIA Unreal Engine 套件的一部分 plugins:NVIDIA 深的 学习超级amp灵帧生成 (DLSS-FG) 通过使用 AI 渲染额外帧来提高帧速率。 DLSS-FG 需要 Geforce RTX 40 系列显卡。
英伟达 深的 学习 超级amp玲 极好的 解决 (DLSS-SR) 通过渲染更少的像素并使用 AI 输出高分辨率帧来提高帧速率。 DLSS-SR 需要 NVIDIA RTX 显卡。英伟达 深度学习抗锯齿 (DLAA) 用于提高图像质量。 直链氨基酸 需要 NVIDIA RTX 显卡。
英伟达 图像缩放 (NIS) 为 NVIDIA 或第 3 方的非 RTX GPU 提供一流的升级和锐化。请参考 NVIDIA 图像缩放 虚幻引擎插件了解更多详细信息。 NVIDIA DLSS 3 结合了 DLSS 超分辨率、DLSS 帧生成和 NVIDIA Reflex。
NVIDIA Unreal Engine DLSS Frame Generation 插件(此处有记录)提供: DLSS Frame Generation(也称为 DLSS-G 或 DLSS-FG)

NVIDIA Reflex
NVIDIA Unreal Engine DLSS-SR 插件(单独提供)提供: DLSS 超分辨率 (DLSS-SR)
深度学习抗锯齿 (DLAA)
NVIDIA Unreal Engine NIS 插件(单独提供)提供: NVIDIA 图像缩放

整合推荐

虚幻引擎 5.2 “开箱即用”支持 DLSS 帧生成插件,包括 Epic 的打包引擎版本。
对于 5.1 及更早版本的引擎,必须对引擎本身进行额外的源更改才能支持 DLSS 帧生成插件。我们建议由对从源代码重建虚幻引擎以及将代码片段合并到引擎代码本身有一定了解的工程师来完成集成。

快速入门 DLSS3 帧生成

注意:DLSS 帧生成和 Reflex 实现是通过“Streamline”库一起提供的,因此该插件的名称为 Streamline。

UE 5.2

  1. 将整个 Streamline 插件文件夹复制到引擎下的某个位置 Plugins\Marketplace 文件夹或源项目下 Plugins 对于 Epic 的打包引擎版本,请将插件复制到引擎的 Engine\ 下的某个位置Plugins\市场文件夹
    对于源引擎构建,请将插件复制到引擎的 Engine\ 下的某个位置Plugins\运行时文件夹
    如果您有源项目(不是仅蓝图项目),您还可以将插件复制到项目的 Plugins 文件夹而不是引擎。只允许插件的一份副本,因此请勿将其复制到两个位置
  2. 在编辑器中启用 DLSS 帧生成插件(编辑 -> Plugins)
  3. 重新启动编辑器
  4. 检查日志中是否支持 NVIDIA Streamline 1

UE 5.1 及更早版本

  1. 将自定义引擎更改与自定义插件挂钩、DLSS 帧生成和 DLSS 超分辨率合并 plugins 进入您的源代码树,匹配您的 UE 版本:
    1. https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-5.1-dlss-plugin
    2. https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-5.0-dlss-plugin
    3. https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-4.27-dlss-plugin
  2. 在编辑器中启用 DLSS 帧生成插件
  3. 重新启动编辑器
  4. 检查日志中是否支持 NVIDIA Streamline 1

DLSS 帧生成的系统要求

 最低 Windows 操作系统版本为 Win10 20H1(版本 2004,内部版本 19041 或更高版本),64 位
显示硬件加速 GPU 调度 (HWS) 必须通过设置启用:系统:显示:图形:更改默认图形设置。 https://devblogs.microsoft.com/directx/hardware-accelerated-gpu-scheduling/ NVIDIA Ada架构GPU(GeForce RTX 40系列、NVIDIA RTX 6000系列)

NVIDIA Geforce 驱动程序
推荐:版本531.18或更高版本
使用 DirectX 12 的 UE 项目(项目设置中的默认 RHI)

合并和集成自定义引擎更改以支持 DLSS 帧生成插件

虚幻引擎 5.1

  1. 使用两种方法之一从该存储库应用所需的引擎端更改
    1. 如果你的代码树是基于git的,直接合并这个分支 https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-5.1-dlss-plugin
    2. 或者下载补丁 file 通过此链接: https://github.com/EpicGames/UnrealEngine/compare/release…NvRTX:dlss3/sl2-5.1-dlss-plugin.patch
      1. 检查补丁是否已打好 file 通过运行以下命令与您的引擎版本兼容: git apply –check ..NvRTX:dlss3/sl2-5.1-dlss-plugin.patch
      2. 此操作是非破坏性的,纯粹是一个测试,以确保合并是可能的并标记任何
      3. 如有任何问题,请检查 file正在合并。当触摸时可能会发生这种情况 files 可能已被开发者自己和 git merge 测试修改过
      4. 使用以下命令应用补丁: git apply ..NvRTX:dlss3/sl2-5.1-dlss-plugin.patch
    3. 重建打过补丁的引擎版本和你的
    4. 在编辑器中启用 DLSS 帧生成插件。
      1. 前往 Plugins
      2. 一直向下滚动,直到找到该插件。
    5. 重新启动编辑器。
    6. 验证 UE 中的 DLSS 帧生成集成
      1. 运行编辑器或
      2. 检查 $(Project Name)/Saved/Logs 中的调试输出和/或日志并查找以下行:NVIDIA Streamline 支持 1
    7. 如果任何问题仍然存在,请随时联系您的 NVIDIA

UE DLSS 帧生成插件本身对于其他 UE 版本是相同的,但 Github 上有不同的分支/补丁,每个相应的 UE 版本都有引擎更改:

UE 5.0

类似于5.1指令分支补丁

UE 4.27

https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-5.0-dlss-plugin https://github.com/EpicGames/UnrealEngine/compare/release…NvRTX:dlss3/sl2-5.0-dlss-plugin.patch
类似于5.1指令分支
https://github.com/NvRTX/UnrealEngine/tree/dlss3/sl2-4.27-dlss-plugin

修补

https://github.com/EpicGames/UnrealEngine/compare/release…NvRTX:dlss3/sl2-4.27-dlss-plugin.patch

故障排除

快速提示

  1. 如何查明您正在使用的 DirectX 版本:在虚幻搜索“RHI”中打开输出日志以确认您正在使用的 DirectX 版本。如果是 DX3,您会看到类似“LogD12D12”的内容,例如amp勒。
  2. 如何确认帧生成正确初始化:使用输出日志并搜索 Streamline,如果初始化成功或失败,您应该看到确认
  3. 如何查明您所使用的 Windows 版本: 单击“开始”或“Windows”按钮(通常位于计算机屏幕的左下角)。单击单击系统。单击“关于”(通常位于屏幕左下角)。结果屏幕显示 Windows 版本。

已知问题

DLSS帧生成
如果 SER(着色器执行重新排序)同时处于活动状态,则启用 DLSS-FG 时可能会出现“设备已删除”错误。建议至少使用驱动程序 531.18,以减少发生此问题的可能性 调试覆盖
覆盖层显示可能不起作用的 Ctrl-Shift-Home、Ctrl-Shift-Insert、Ctrl-Shift-Del 键盘命令

在编辑器中诊断插件问题

UE DLSS 帧生成插件模块将各种信息写入以下 UE 日志类别: LogStreamline
LogStreamlineAPI LogStreamlineBlueprint LogStreamlineD3D11RHI LogStreamlineD3D12RHI LogStreamlineRHI LogStreamlineRHIPreInit
这些可以在编辑器中的“窗口”->“输出日志”下访问

然后可以过滤消息日志以仅显示 Streamline 相关消息,以获取有关插件无法按预期运行的原因的更多信息。

调试覆盖

在非发货 UE 版本中,DLSS 帧生成插件可以显示显示运行时信息的调试覆盖层。可以使用以下命令在非 Shipping 版本中启用/禁用叠加层 Plugins -> NVIDIA DLSS 帧生成 -> 项目设置中的加载调试覆盖选项。
还可以使用命令行上的 -sldebugoverlay 和 -slnodebugoverlay 覆盖此设置。这会隐式选择 Streamline Development 二进制文件。仅支持 DLSS-FG 功能的系统支持覆盖。
调试覆盖提供了一种可视化传递到 Streamline for DLSS-FG 的各种纹理的方法。启用 DLSS-FG 后,按 Ctrl+Shift+Insert 启用下图 view.

帧率限制

由于虚幻引擎处理帧速率限制的方式,可能会出现帧速率卡在最小帧速率并且无法恢复的问题。控制台变量 t.Streamline.Reflex.HandleMaxTickRate 可以设置为 False,让引擎限制最大滴答率,而不是 Streamline Reflex,这可能会对这些情况有所帮助。引擎不知道 DLSS 帧生成,因此当此 cvar 为 False 时,实际图形帧速率可能实际上是引擎最大 FPS 设置的两倍。

内容考虑因素

正确渲染 UI Alpha

DLSS-FG 可以利用 UI 颜色和 Alpha 缓冲区来提高合成 UI 的图像质量。 UE DLSS 帧生成插件通过在 UI 渲染后(就在当前之前)提取 Alpha 通道,从后台缓冲区生成此帧。
默认情况下,UE 不会清除场景颜色的 alpha,这可以正常工作,因为大多数(如果不是全部)UMG 材质混合模式仅考虑传入的 alpha 并写入所有像素。然而,开发人员控制台窗口在 UI 元素之后渲染,写入 Alpha 通道。此 alpha 跨帧持续存在,并会导致不正确的 UI 颜色和由 UE Streamline 插件生成的 alpha 缓冲区,然后传递到 Streamline/DLSS-G。
该引擎不提供内置方法来仅清除场景颜色的 Alpha。因此,UE Streamline 插件添加了一个渲染通道,以在后处理结束时、UI 元素渲染之前清除场景颜色的 Alpha 通道。这是由 r.Streamline.ClearSceneColorAlpha 控制的,默认情况下为 true。
Streamline 插件还添加了阈值来确定像素为 UI,其中像素的 alpha 值大于阈值 r.Streamline。TagUIColorAlphaThreshold。默认情况下,cvar 设置为 0.0,以便将 alpha 大于零的任何像素提取到 UI 颜色和 alpha 缓冲区。
注意:UI 颜色 Alpha 支持仅在独立游戏窗口中受支持。在编辑器 PIE 弹出窗口中 UI 颜色和 alpha tag默认情况下禁用 ging(请参阅 r.Streamline.Editor。TagUIColorAlpha ),因为清除 Alpha 通道并非易事:PIE 窗口将场景渲染到单独的“BufferedRT”渲染目标中,将其传输到后备缓冲区中,然后在呈现之前在其顶部绘制 UI。这个“BufferedRT”中间步骤会阻止 r.Streamline.ClearSceneColorAlpha 按预期工作。由于 PIE 编辑器窗口中的此类图像质量不具有代表性,但应该足以使用蓝图库开发 UI 和设置逻辑。
然而,只有当应用程序以预期方式呈现 UI 时,这才有效,这意味着任何 UI 元素都需要将 alpha 写入后备缓冲区(无论它是不透明还是透明)。实际上,这意味着:不要使用 UWidgetBlueprintLibrary::DrawText 来绘制 UI 文本,因为这会 不是 写阿尔法。
请使用 UMG 小部件,因为它们使用适当的混合模式正确地将 alpha 写入后备缓冲区

插件配置

一些项目设置分为两个配置 files,具有本地覆盖的可能性。
项目设置-> Plugins -> NVIDIA DLSS 帧生成
存储在 DefaultEngine.ini 中的通常位于源代码管理中。
此处的设置在用户之间共享
项目设置-> Plugins -> NVIDIA DLSS 帧生成覆盖(本地)存储的 UserEngine.ini 不建议签入源代码管理。
如果需要,允许用户覆盖项目范围的设置。默认为“使用项目设置

命令行选项和控制台变量和命令

笔记:UE DLSS 帧生成插件模块在引擎启动期间很早就加载,在控制台变量可用之前。因此,各种调试设置是通过命令行选项而不是控制台变量公开的。

选择 Streamline 二进制风格

默认情况下,Streamline 使用 Streamline\Binaries\ThirdParty\Win64\ 路径中的已签名生产二进制文件(例如 sl.interposer.dll、sl.common.dll)。它们没有屏幕水印,旨在用于交付给最终用户的应用程序。它们始终由 UE Streamline 插件打包。
对于非发布的 UE 版本,可以通过 -slbinaries={development,debug} 命令行参数选择备用二进制文件,分别对应于 Streamline\Binaries\ThirdParty\Win64\Development 和 Streamline\Binaries\ThirdParty\Win64\Debug 路径。它们具有屏幕水印,旨在在应用程序开发期间使用,并且是使用 Streamline 调试叠加层的要求。它们仅由用于非发货 UE 构建的 UE Streamline 插件打包。

日志记录

默认情况下,Streamline 使用 sl:eLogLevelDefault。可以使用 -slloglevel={0,1,2} 命令行参数进行更改,分别对应 sl::eLogLevelOff、sl::eLogLevelDefault、sl::eLogLevelVerbose
默认情况下,Streamline 控制台窗口处于关闭状态。这可以通过 -sllogconsole={0,1} 命令行参数进行更改。

DLSS 帧生成通用设置

DLSS 帧生成插件使用各种引擎侧挂钩,可以通过以下 cvar 进行配置。它们的默认值是r.Streamline。ViewIdOverride0:使用 View状态.唯一ID
1:现场 view ID 为 0(默认) r.Streamline。TagSceneColor不带HUD
将不带 HUD 的场景颜色传递到 DLSS 帧生成(默认 = true)r.Streamline.Editor。TagSceneColor不带HUD
将不带 HUD 的场景颜色传递到编辑器中的 DLSS 帧生成中(默认 = false)
r.Streamline.ClearSceneColorAlpha
清除流线末尾场景颜色的 alpha view 扩展以允许后续 UI 绘制调用在 alpha 通道中正确表示(默认=true)r.Streamline.Editor。TagUI颜色Alpha
实验:将 UI 颜色和 alpha 传递到编辑器 PIE 窗口中的 Streamline(默认 = false)

微调 DLSS 帧生成的运动矢量

DLSS 帧生成需要正确的运动矢量才能正常运行。以下控制台变量可用于在游戏开发过程中调整值 r.Streamline.DilateMotionVectors
0:将低分辨率运动矢量传递到 DLSS 帧生成中(默认)
1:将扩展的高分辨率运动矢量传递到 DLSS 帧生成器中。这有助于提高细小细节的图像质量。 r.Streamline.MotionVectorScale
按此常数缩放 DLSS 帧生成运动矢量,此外还按 1/ 缩放 view 矩形尺寸。 (默认 = 1.0)

DLSS 帧生成的微调深度

r.Streamline.CustomCameraNearPlane
距相机近平面的自定义距离。用于内部 DLSS 帧生成目的,不需要匹配引擎使用的相应值。 (默认 = 0.01)r.Streamline.CustomCameraFarPlane
到相机远平面的自定义距离。用于内部 DLSS 帧生成目的,不需要匹配引擎使用的相应值。 (默认 = 75000.0)

简化反射

UE DLSS 帧生成插件提供了 NVIDIA Reflex 的实现,它与未修改的 UE 版本附带的现有 UE Reflex 插件半兼容。
建议禁用现有的 UE Reflex 插件并使用 UE DLSS 帧生成插件中提供的 Reflex 实现。但是,使用 UE Reflex 插件中的蓝图功能的现有项目在添加 UE DLSS 帧生成插件后应该可以继续工作,因为 Reflex 插件的蓝图应该调用 DLSS 帧生成 plugins默认情况下的模块化功能。

反射蓝图库

Reflex (Streamline) / UStreamlineLibraryReflex 蓝图库是查询是否支持 Reflex 的推荐方式,并且还提供了配置 Reflex 的功能
IsReflexSupported、QueryReflexSupport SetReflexMode、GetReflexMode、GetDefaultReflexMode
GetGameToRenderLatencyInMs、GetGameLatencyInMs、GetRenderLatencyInMs

控制台变量(低级)

可以使用以下控制台变量进行配置 t.Streamline.Reflex.Enable
启用 Streamline Reflex 扩展。 (默认 = 0) 0:禁用
1:启用 t.Streamline.Reflex.Auto
当其他 SL 功能需要时启用 Streamline Reflex 扩展。 (默认 = 1) 0:禁用
1:启用 t.Streamline.Reflex.EnableInEditor
在编辑器中启用 Streamline Reflex。 (默认 = 1) 0:禁用
1:启用 t.Streamline.Reflex.Mode
Streamline Reflex 模式(默认 = 1) 0:关闭
1:低延迟
2:通过 boost t.Streamline.Reflex.HandleMaxTickRate 实现低延迟
控制 Streamline Reflex 是否代替引擎处理帧速率限制(默认 = true) false:引擎处理帧速率限制
true:Streamline Reflex 处理帧速率限制
UE Reflex 插件和 DLSS 帧生成插件提供的 Reflex 之间的交互可以使用以下控制台变量进行配置:r.Streamline.UnregisterReflexPlugin
现有的基于 NVAPI 的 UE Reflex 插件与基于 DLSS 帧生成的实现不兼容。此 cvar 控制是否应从引擎中取消注册 Reflex 插件 0:保持注册 Reflex 插件模块化功能
1:取消注册Reflex插件模块化功能。 Reflex 蓝图库应与 DLSS Frame Generation 插件模块化功能配合使用(默认)

反射统计

当启用 Reflex 或 DLSS 帧生成时,Reflex 可以处理延迟游戏线程以强制执行任何帧速率限制,例如通过 t.MaxFPS 或帧速率平滑请求的帧速率限制。 stat threading 的“游戏线程等待时间(Reflex)”统计数据显示 Reflex 延迟游戏线程所花费的时间。

DLSS 帧生成

UE DLSS 帧生成插件提供 NVIDIA DLSS 帧生成 (DLSS-G) 的实现。打包版本完全支持 DLSS-G(或在游戏模式下运行编辑器)
编辑器部分支持 DLSS-G,但有以下限制:
主编辑器窗口 不是 支持DLSS-G。所以“在选定的 view端口”是 不是 支持。
单个 PIE 窗口支持 PIE(新窗口)。当打开多个 PIE 窗口(例如用于网络调试)时,只有第一个窗口具有 DLSS-G 支持。
使用“在编辑器中播放中启用 DLSS-FG” view项目设置中的“ports”选项以启用/禁用此功能
注意:DLSS-G 还需要启用 Reflex 才能获得最佳性能。这是自动完成的。有关更多详细信息,请参阅 t.Streamline.Reflex.Auto

DLSS-G 蓝图库

DLSS-G (Streamline) / UStreamlineLibraryDLSSG 蓝图库是查询是否支持 DLSS-G 的推荐方法,并且还提供配置 DLSS-G 的功能
IsDLSSGSupported、查询DLSSGSupport、获取DLSSGMinimumDriverVersion IsDLSSGModeSupported、获取SupportedDLSSGModes
设置DLSSGMode、获取DLSSGMode、获取默认DLSSGMode、获取DLSSGFrameTiming

控制台变量(低级)

可以使用以下控制台变量进行配置 r.Streamline.DLSSG.Enable
启用/禁用 DLSSG(默认 = 0) r.Streamline.DLSSG.AdjustMotionBlurTimeScal
当 DLSS-G 处于活动状态时,根据生成的帧调整运动模糊时间刻度(默认 = 1)r.Streamline。TagUI颜色Alpha
将 UI 颜色和 alpha 传递到 DLSS 帧生成(默认 = true)

统计资料

引擎无法直接了解帧生成生成的附加帧,因此内置帧速率和帧时间度量可能会丢失信息。 “DLSSG”统计数据组提供考虑了附加帧的帧速率统计数据。使用控制台命令 stat dlssg 查看屏幕信息。

提示和最佳实践

  1. 一旦 Streamline/Frame Generation 处于活动状态,您可以在编辑器内的 PIE 或独立窗口中激活它,方法是键入命令 streamline.dlssg.enable 1 或使用蓝图脚本功能(搜索“streamline”以获取这些列表)函数)并在开始游戏时启用它。
  2. 导航到项目设置,然后转到“NVIDIA DLSS 帧生成”的首选项。在此,切换“加载调试覆盖”选项,以快速方便地确认 DLSS 帧生成是否正常工作以及实时统计数据。
  3. 在同一设置窗口中,确保启用“允许 OTA 更新”选项,这将自动使用最新版本更新 Streamline 以及 DLSS 的 AI 算法
  4. 请注意,帧生成的调试覆盖将在编辑器中工作,并且可以出现在开发/调试版本中,但不会出现在运输中
  5. 在虚幻编辑器中,帧生成仅适用于新编辑器窗口 (PIE) 或独立模式,不适用于选定的窗口 View港口或同时
  6. 我们建议当帧生成打开时,Vsync 应在您的 DLSS 3 插件中关闭。DLSS 0 插件可以将 Vsync 设置为在活动时表现不正确。可以使用 r.vsync XNUMX 控制台命令禁用垂直同步。
  7. NVIDIA DLSS 帧生成虚幻引擎插件包含最新的 NVIDIA Reflex 技术 - 比当前内置于 Unreal 中的 Reflex 更新的版本。虽然可以保持旧插件启用,甚至使用旧的 Reflex 蓝图脚本,但建议您禁用旧的 Reflex 插件并使用 DLSS 帧生成中捆绑的新版本。
  8. 我们建议您设置所有 NVIDIA plugins 通过蓝图脚本,因为这可以让您方便地激活 plugins 但是,如果您需要访问 DLSS 超分辨率控制台命令,可以在“ngx”下找到它们,而 DLSS 帧生成命令可以在“streamline”下找到。请阅读 DLSS 3 插件下载中包含的 DLSS_Super_Resolution_Quick_Start_Guide.pdf,了解有关使用 DLSS 超分辨率控制台命令的更多信息。

绩效收益预期

DLSS 3 是性能倍增器。激活后,它有可能在许多情况下显着提高帧速率。

但是,有一些注意事项和警告,因此请注意以下事项:

  1. DLSS 超分辨率可能不会提高虚幻引擎中的帧速率,这是因为 UE 的默认行为是使用升级并根据窗口大小自动管理升级后的分辨率。因此,当您打开 DLSS 超分辨率时,您将获得 AI 增强升级的好处,但它将使用与默认值相同的输入分辨率。
  2. 话虽这么说,您可能会发现 DLSS SR 可以使用较低的输入分辨率来获得相同的有效质量,并且 DLSS 支持输入分辨率一直低至 33%(超性能)
  3. 根据场景和输入分辨率,性能预计可提高 5 倍到 3 倍或更多。
  4. 以 100% 原始分辨率、4k、16fps 运行的复杂场景
  5. 以 33% DLSS 分辨率、4k、60fps 运行的同一场景
  6. 在 CPU 受限的情况下,DLSS SR 可能无法获得太多帧速率,因为 GPU 将缺乏足够的帧速率。要从 DLSS SR 获得最大性能,您应该尝试缓解任何与 CPU 相关的瓶颈,这些瓶颈可能会阻止其以最高容量工作。
  7. DLSS 帧生成可以帮助缓解许多 CPU 和 GPU 限制的情况,性能增益可以达到 5 倍到 2.2 倍或更多。
  8. 以 33% DLSS 分辨率和帧生成、4k、100fps 运行的同一场景
  9. 请注意,DLSS SR 和 FG 的设置都有一些初始成本,该成本取决于场景和分辨率。通常,这些性能成本可能为 0.5 到 2+ 毫秒,但目标是净性能增益将超过成本

 

阅读有关本手册的更多信息并下载 PDF:

文件/资源

nVIDIA DLSS3 虚幻引擎帧生成插件 [pdf] 指示
DLSS3 虚幻引擎帧生成插件,DLSS3,虚幻引擎帧生成插件,引擎帧生成插件,帧生成插件,生成插件,插件

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *