您的位置:首頁 >熱訊 > 財經評論 >

Unity多平臺HDR支持,打造極致視覺體驗

在過去幾年中,高動態范圍技術(High Dynamic Range,簡稱 HDR)已經逐漸普及。越來越多的電視、顯示器和移動設備開始支持 HDR 技術。從 Unity (和 beta)版本起Unity 編輯器及獨立平臺運行版(Standalone Players)已支持 HDR 特性,并且完全兼容通用渲染管線(URP)和高清渲染管線(HDRP)。

HDR?技術優勢


【資料圖】

啟用 HDR 渲染后,攝像機會將場景渲染到一個浮點幀緩沖區中,使渲染管線能存儲更廣的色值、更好地保留細節。類似光照和后處理等著色器運算能用更精確的值執行(相較于 SDR 渲染),從而呈現更逼真的畫面。

盡管多年來 HDR 渲染一直是默認的工作流程,但未啟用 HDR 的顯示器會將可呈現的畫面色彩深度限制在最大每通道 8 位以內。每個像素可以表示的最大顏色數量和最大亮度范圍皆受到了限制。

此時會進行 HDR 到?SDR(Standard Dynamic Range,標準動態范圍)的色調映射(tone mapping),來將色彩緩沖區的 HDR 數值重新映射到低動態范圍內,有時也會采用伽瑪矯正(gamma correction),最后把結果寫入交換鏈(swap chain)圖像用于展示。

此前 Unity 為高清渲染管線(HDRP)推出了桌面和主機平臺上的 HDR 顯示支持。這是通過在創建交換鏈時設定使用設備原生的色彩空間,再用定制的 HDR 色調映射將色彩緩沖區的內容重新映射為顯示器原生的 HDR 范圍來實現的。最后再應用 HDR 編碼,把結果寫入 HDR 交換鏈圖像。

啟用 HDR 輸出后,交換鏈圖像格式將啟用更高的色彩深度(每通道 10 位或 16 位)。這時每個像素就能展示出更廣的色值,亮度范圍也極大增加。

自 Unity 起,Unity 編輯器和獨立平臺運行版將為所有渲染管線及具備該功能的平臺提供完整的 HDR 色調映射和支持。

啟用 HDR

可在 Edit > Project Settings > Player > Other Seetings 下的 Player Settings 里找到新的 HDR 顯示設定:

如上圖所示,勾選Allow HDR Display Output(允許 HDR 顯示輸出)和Use HDR Display Output(啟用 HDR 顯示輸出)。這些設定會讓 Unity 編輯器和獨立平臺運行版在支持的平臺上運行時啟用 HDR 輸出。

啟用 HDR 輸出后,可以選擇將 Swap Chain Bit Depth 配置為較低(例如每通道 10 位)或較高(例如每通道 16 位)的圖像色彩深度。*需要注意對應設備或平臺的色彩深度限制,并非所有設備都支持 16 位緩沖格式,部分設備會回滾到 10 位格式。

*在通用渲染管線(URP)中,當前所用的渲染管線資產須啟用 HDR 渲染。請選中項目內的渲染管線資產(通常位于 Assets > Settings 文件夾),在項目 Inspector 面板內啟用 Quality > HDR。

最后,啟用 HDR 色調映射,即為影響攝像機的后處理體積(volume)添加 Tonemapping 組件。在啟用 HDR 輸出后,下方 Tonemapping 設定將由顯示器的 HDR 功能所控制:

最小支持亮度

最大支持亮度

紙張白值(Paper White value):它表示紙張白色表面在顯示器上的亮度,用于確定顯示器的整體亮度

如果要取得更棒的視覺體驗,推薦在專業 HDR 校準界面為這些參數提供運行時控制。

可以用 C# API 來獲取顯示器的 HDR 范圍和紙張白值。詳見:

/Documentation/ScriptReference/

要取得最棒的視覺體驗,我們推薦在專門的HDR校準界面上為這些參數提供運行時控制。我們即將發布一個新HDR校準樣例項目,作為操作參考。

若想詳細了解HDR色調映射和輸出,請參閱更新后的URP的HDR輸出文檔及HDRP的HDR輸出文檔。

URP的HDR輸出文檔:

/Packages/@/manual/post-processing/

HDRP的HDR輸出文檔:

/Packages/@/manual/

平臺支持

要在運行時利用 HDR 輸出,設備須連接到一臺具備 HDR 功能的顯示器,在不兼容的設備上運行時,HDR 輸出會被自動禁用。可以用?來查詢主顯示器是否支持 HDR 顯示、HDR 輸出是否已啟用。除了 Unity 2022 中提供的已有桌面和主機支持外,在 Unity ,以下平臺也已支持 HDR 輸出:

iOS 平臺運行版(iOS 16 及以上,iPadOS 16 及以上)

使用 Vulkan 和 GLES 的 Android 平臺運行版(Android 9 及以上,*視不同設備而定)

不僅是移動、主機設備,此次同樣推出了 XR 平臺相關支持。請參閱對應 XR 平臺的說明文檔來確定是否支持 HDR 顯示。

使用指南

HDR 處理分為兩個步驟:HDR 色調映射和編碼。這兩個步驟通常在后處理渲染通道內的最后一步。唯一例外是向 URP 插入額外的通道,此時,HDR 編碼會單獨應用到“final blit(最終的位塊轉移)”通道,這一通道總是在渲染管線的最后被調用。

插入到 RenderPassEvent . AfterRenderingPostProcessing 事件的 Custom Overlay Passes 需要經過特殊處理才能支持 HDR 輸出。倘若 HDR 輸出已被激活,后處理已經啟用,之前的通道一定已經執行了色調映射和色彩空間轉換。因此,需要編寫自定義效果才能轉換到目標動態范圍和色彩空間。

在使用 HDR 輸出時,推薦給所有可顯示的攝像機啟用 HDR 渲染。當然也可以基于某個相機禁用 HDR?渲染,但要確保在后處理之后沒有執行渲染通道或在后處理之后插入通道的特效。

在用?SDR 渲染配合?HDR 輸出時,以下功能將不受支持:

圖像擴大

FXAA(Fast Approximate Anti-Aliasing)抗鋸齒

HDR Debug Modes(調試模式)

后處理之后的自定義通道

* 2D Renderer 中若想用 SDR 渲染配合?HDR 輸出,請確保后處理已關閉。

如想了解更多詳細信息,請參閱官方說明文檔:

通用渲染管線(URP)HDR 輸出:

/Packages/@/manual/post-processing/

高清渲染管線(HDRP)HDR 輸出:

/Packages/@/manual/

關鍵詞:

資訊

圖賞