Skip to main content
本主題說明啟用高動態範圍 (HDR) 和廣色域 (WCG) 輸出的程序。

概觀

高動態範圍 (HDR) 和廣色域 (WCG) 透過更高的亮度與對比度提供最佳的視覺品質,讓暗部和亮部中前所未見的細節能同時呈現,並提供比以往更多的色彩。 如需 HDR 的詳細資訊,請參閱 Xfest 2016 的簡報〈An Introduction to HDR and Wide Color Gamut on UHD Displays〉(XBOX Developer Downloads->Conference Material->Xfest 2016 GPU Track Videos),並搜尋支援的 HDR 和 WCG 標準。
  • SMPTE ST.2084 High Dynamic Range Electro-Optical Transfer Function of Mastering Reference Displays
  • BT.2020 Parameter values for ultra-high definition television systems for production and international programme exchange
目前提供多個 HDR 範例,包括 SimpleHDR、HDRAutoToneMapping、HDRCalibration、HDRDisplayMapping、HDRReconstruction 和 Simple120Hz。

初始化

若要輸出 HDR 和 WCG,遊戲必須在初始化期間呼叫 XDisplayTryEnableHdrMode (…\reference\system\xdisplay\xdisplay_members.md))。如果連接的電視支援 HDR 和 WCG,且主機設定也已啟用 HDR,此呼叫會將電視切換為 HDR 模式。此 API 也會傳回電視的亮度值,可用來針對連接的顯示器最佳化遊戲的 HDR 輸出。這稱為顯示對應。 XDisplayTryEnableHdrMode 是遊戲將電視從標準動態範圍 (SDR) 切換為 HDR 模式的唯一機制。遊戲沒有任何機制可以讓電視進入或離開 HDR 模式。建議在初始化期間呼叫 XDisplayTryEnableHdrMode 一次。進入和離開 HDR 模式可能會導致電視黑畫面並靜音,時間從數百毫秒到數秒不等。時間長短取決於電視以及主機與電視之間的任何其他 HDMI 裝置。如果使用者啟動另一個佔用比遊戲更多螢幕空間的應用程式 (也就是其他應用程式以全螢幕或填滿模式執行),電視會切換離開 HDR 模式後再切換回來。前往首頁不會造成模式變更。終止遊戲或啟動其他遊戲會使電視切換回 SDR 模式。

交換緩衝區

初始化之後,遊戲應建立 D3D12 資源作為兩個顯示平面的交換緩衝區。第一個顯示平面用於 HDR,第二個顯示平面則用於 SDR。若要在 HDR 狀態下支援 GameDVR、廣播和串流,遊戲必須提供經過色調對應的 SDR 影像。由遊戲提供 SDR 影像,可讓遊戲提供最高品質的 SDR 畫面。請注意,系統會自動為螢幕擷取畫面產生經過色調對應的 SDR 影像。 以下是交換緩衝區的詳細資料。
  1. HDR 交換緩衝區的 D3D12 資源格式必須是 DXGI_FORMAT_R10G10B10A2_UNORM。在 XBOX Series X|S 上,也支援 DXGI_FORMAT_R9G9B9E5_SHAREDEXP 格式。
  2. SDR 交換緩衝區的 D3D12 資源可以是 DXGI_FORMAT_R8G8B8A8_UNORM、DXGI_FORMAT_R8G8B8A8_UNORM_SRGB 或 DXGI_FORMAT_R10G10B10A2_UNORM。在 XBOX Series X|S 上,也支援 DXGI_FORMAT_R9G9B9E5_SHAREDEXP 格式。
接著必須使用 ID3D12CommandQueue::PresentX 呈現這兩個交換緩衝區 (沒有其他 Present 呼叫支援 HDR)。 呼叫 PresentX 時,第一個顯示平面的 D3D12XBOX_PRESENT_PLANE_PARAMETERS.ColorSpace 必須設定為 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020。在 XBOX Series X|S 上,ColorSpace 也可以設定為 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709、DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_D65P3、DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P2020、DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P709 和 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_D65P3。如需詳細資訊,請參閱轉譯一節。

轉譯

遊戲應使用著色器將 HDR10 值轉譯到第一個顯示平面的交換緩衝區。也就是說,色彩值必須位於 Rec.2020 色彩空間 (在 XBOX Series X|S 上另外還有 Rec. 709 和 P3),並使用 ST.2084 伽瑪曲線編碼。第二個顯示平面交換緩衝區的色彩值必須位於 Rec.709 色彩空間,並可使用為 SDR 顯示器轉譯 SDR 時通常使用的相同伽瑪曲線編碼。在 XBOX Series X|S 上,第二個顯示平面是選用的。 在 XBOX Series X|S 上,遊戲可以選擇轉譯線性 HDR 值,而不是套用 ST.2084 伽瑪曲線的非線性值。色彩值可以位於 Rec. 709、Rec.2020 或 P3 色彩空間,並正規化為 0.0 到 1.0 之間。無論使用哪一種色彩空間,D65 10,000 nit 白色一律表示為 (1.0, 1.0, 1.0)。若使用此選項,遊戲必須使用交換緩衝區格式 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,並搭配呈現色彩空間 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P2020、DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_D65P3 或 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709。如需詳細資訊,請參閱呈現平面參數一節。如果遊戲內容未使用完整的 Rec. 2020 色域,建議轉譯為較小的 P3 和 Rec. 709 色域,因為這樣可提升色彩精確度,特別是在使用交換緩衝區格式 DXGI_FORMAT_R9G9B9E5_SHAREDEXP 時。這也能避免轉換為 Rec. 2020 色域的額外負荷,因為轉換將由顯示硬體免費執行。

自動色調對應

在某些情況下,遊戲可能會依賴系統自動產生經過色調對應的 SDR 影像,此程序稱為自動色調對應。啟用此功能時,遊戲的著色器會被指示不要將色彩值轉譯到次要顯示平面。 此程序涉及兩個關鍵旗標:D3D12XBOX_RESOURCE_FLAG_ALLOW_AUTOMATIC_GAMEDVR_TONE_MAP 和 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET。 系統會代表遊戲呼叫計算著色器來執行色調對應。此計算著色器的運作可以在 GPU PIX 擷取中觀察到,具體位於標示為 Auto Tone Mapping 的事件括號內,發生在 Present 呼叫之前。 請務必注意,此功能所使用的記憶體、頻寬和 GPU 資源,與遊戲自行產生 SDR 影像時大致相同。換句話說,圖形驅動程式會為次要顯示平面配置額外資源。另請參閱 XBOX One API SetHDRToneMapperX。 在 XBOX Series X|S 上,自動色調對應可以帶來效能優勢,因為自動色調對應是由硬體完成。因此,遊戲不必花費 GPU 週期或額外記憶體來產生經過色調對應的 SDR 影像。在 4K 的 XBOX Series X 以及 1440p 的 XBOX Series S 上,預期可節省 0.12ms。在記憶體方面,以 4K 進行三重緩衝時,遊戲不必為 SDR 配置額外的交換鏈緩衝區,可節省將近 100MB。

HDR 與 120Hz 之間的偏好設定

遊戲可能想同時支援 HDR 和 120Hz。透過 XDisplayTryEnableHdrMode 啟用 HDR 時,遊戲可以設定偏好 HDR 或 120Hz,以應付使用者的主機和電視設定無法同時支援兩者的情況。請參閱 Simple120Hz 範例。 呼叫 API 嘗試啟用 HDR 時,遊戲可以設定偏好,指出偏好 HDR 還是高更新頻率。如果可以,我們會同時提供兩者;如果不行,則依據遊戲的偏好提供。遊戲可以詢問使用者,或替使用者做決定 (例如根據多人遊戲等遊戲模式),由遊戲自行決定。 如需詳細資訊,請參閱 XDisplayTryEnableHdrMode API 主題。

HDR 遊戲校正

HDR 遊戲校正應用程式會顯示一系列測試圖樣,以判斷 HDR 電視的特性。此應用程式位於主機的 [設定] 中的 [電視與顯示選項] 下的 [校正遊戲的 HDR]。 主機 [設定] 中 [電視與顯示選項] 下 [校正遊戲的 HDR] 的影像 系統會判斷電視色調對應的最小和最大亮度校正值,並由 XDisplayTryEnableHdrMode API 傳回。這些校正值會儲存在系統中,XBOX One 和 XBOX Series X|S 上的 Microsoft Game Development Kit (GDK) 遊戲可以選擇使用此資訊,針對連接的 HDR 電視提升視覺品質。如需如何使用這些值,請參閱 HDRDisplayMapping 和 HDRCalibration 範例中的著色器原始程式碼。 遊戲可以透過兩種方式使用校正值。
  1. 不實作遊戲專屬的校正畫面,直接使用 API 提供的校正值來實作顯示對應。
  2. 實作遊戲專屬的校正畫面,但使用 API 的校正值作為預設值,以及遊戲校正畫面的起始值。此選項的好處是,即使玩家未使用遊戲的校正畫面,遊戲仍會使用正確的預設值。此外,如果玩家確實使用遊戲的校正畫面,校正畫面一開始就已經是良好的值。
遊戲可以包含其他微調校正畫面,例如對比度和紙白 nit 調整,這些不屬於 HDR 遊戲校正應用程式。 遊戲也可以視需要以深層連結方式開啟 HDR 遊戲校正應用程式。

適用於 XBOX 遊戲的 Dolby Vision

Dolby Vision 是由 Dolby 所建立的高動態範圍 (HDR) 視訊格式名稱,與 HDR10 相比具有更豐富的色彩深度和視覺外觀。支援方式有兩種:一種是內建的 XBOX 平台解決方案,會將 Dolby Vision 套用至 HDR10 遊戲;另一種是使用 Dolby 的 SIDK 進行原生 Dolby Vision 實作。 如需詳細資訊,請參閱適用於 XBOX 遊戲的 Dolby Vision

自動 HDR

自動 HDR 是一項可以自動為 SDR 遊戲加入 HDR 的功能。它使用 XBOX Series X 和 S 的硬體功能,因此 XBOX One 不支援此功能。此功能不會對遊戲或系統造成任何效能成本。也就是說,此功能不使用任何 CPU 或 GPU,不需要額外的記憶體或頻寬,也不會增加額外的延遲。 使用自動 HDR 而非原生 HDR 實作時,遊戲不應建立 HDR 專用的交換緩衝區,例如不應指定旗標 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P2020。不過,建議使用 10 位元交換緩衝區格式而非 8 位元格式,因為這可讓最終 HDR 影像具有更高的精確度,減少潛在的色帶瑕疵。 如需詳細資訊,請參閱 XBOX 開發人員論壇文章 Auto HDR on XBOX Series X|S consoles。 下列程式碼示範如何在 SDR 遊戲上啟用自動 HDR。
如需詳細資訊,請參閱 D3D12XBOX_CREATE_DEVICE_FLAGS 中旗標 D3D12XBOX_CREATE_DEVICE_FLAG_ENABLE_AUTO_HDR 的說明、D3D12XBOX_CREATE_DEVICE_PARAMETERS 中的 AutoHDRPaperWhiteLevelNits,以及 AutoHDR 範例。

另請參閱

圖形概觀
Last modified on October 6, 2026