nVIDIA DLSS3 虛幻引擎幀產生插件說明

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

DLSS3 和 NVIDIA Unreal Engine DLSS 幀產生插件

英偉達 DLSS 幀生成 插件是更廣泛的相關 NVIDIA 性能和圖像品質改進技術以及相應 NVIDIA Unreal Engine 套件的一部分 plugins:英偉達 深的 學習超級amp靈幀生成 (DLSS-FG) 透過使用 AI 渲染額外幀來提高幀速率。 DLSS-FG 需要 Geforce RTX 40 系列顯示卡。
英偉達 深的 學習 超amp令 極佳的 解決 (DLSS-SR) 透過渲染更少的像素並使用 AI 輸出高解析度幀來提高幀速率。 DLSS-SR 需要 NVIDIA RTX 顯示卡。英偉達 深度學習抗鋸齒 (DLAA) 用於提高影像品質。 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 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 幀生成”的首選項。
  3. 在同一設定視窗中,請確保啟用「允許 OTA 更新」選項,這將自動使用最新版本更新 Streamline 以及 DLSS 的 AI 演算法
  4. 請注意,幀生成的調試覆蓋將在編輯器中工作,並且可以出現在開發/調試版本中,但不會出現在運輸中
  5. 在虛幻編輯器中,幀產生僅適用於新編輯器視窗 (PIE) 或獨立模式,不適用於選定的編輯器視窗 View港口或同時
  6. 我們建議當訊框產生開啟時,Vsync 應在您的 DLSS 3 插件中關閉。可以使用 r.vsync 0 控制台指令來停用垂直同步。
  7. NVIDIA DLSS 幀生成虛幻引擎插件包含最新的 NVIDIA Reflex 技術 - 比目前內建於 Unreal 中的 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,虛幻引擎幀生成插件,引擎幀生成插件,幀生成插件,生成插件,插件

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *