概觀
高動態範圍 (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 和 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 影像。 以下是交換緩衝區的詳細資料。- HDR 交換緩衝區的 D3D12 資源格式必須是 DXGI_FORMAT_R10G10B10A2_UNORM。在 XBOX Series X|S 上,也支援 DXGI_FORMAT_R9G9B9E5_SHAREDEXP 格式。
- SDR 交換緩衝區的 D3D12 資源可以是 DXGI_FORMAT_R8G8B8A8_UNORM、DXGI_FORMAT_R8G8B8A8_UNORM_SRGB 或 DXGI_FORMAT_R10G10B10A2_UNORM。在 XBOX Series X|S 上,也支援 DXGI_FORMAT_R9G9B9E5_SHAREDEXP 格式。
轉譯
遊戲應使用著色器將 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] 的影像](https://mintcdn.com/microsoft-4404708b/EHFikhsC0GyEu9Ca/images/gdk/features/graphics/HDR_calibration.png?fit=max&auto=format&n=EHFikhsC0GyEu9Ca&q=85&s=f6fa5fc5ad4048d91d93e1ed41e7d89e)
- 不實作遊戲專屬的校正畫面,直接使用 API 提供的校正值來實作顯示對應。
- 實作遊戲專屬的校正畫面,但使用 API 的校正值作為預設值,以及遊戲校正畫面的起始值。此選項的好處是,即使玩家未使用遊戲的校正畫面,遊戲仍會使用正確的預設值。此外,如果玩家確實使用遊戲的校正畫面,校正畫面一開始就已經是良好的值。
