> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 高動態範圍 (HDR) 輸出

> 高動態範圍 (HDR) 輸出

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

* [概觀](#ID4EL)
* [初始化](#ID4E6)
* [交換緩衝區](#ID4ERB)
* [轉譯](#ID4ERD)
* [自動色調對應](#ID4ETM)
* [HDR 與 120Hz 之間的偏好設定](#ID4E120)
* [HDR 遊戲校正](#ID4ECAL)
* [適用於 XBOX 遊戲的 Dolby Vision](#ID4EDV)
* [自動 HDR](#ID4EAH)

<a id="ID4EL" />

## 概觀

高動態範圍 (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)](https://aka.ms/gdkdl)，並搜尋支援的 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。

<a id="ID4E6" />

## 初始化

若要輸出 HDR 和 WCG，遊戲必須在初始化期間呼叫 [**XDisplayTryEnableHdrMode**](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) (......\reference\system\xdisplay\xdisplay\_members.md))。如果連接的電視支援 HDR 和 WCG，且主機設定也已啟用 HDR，此呼叫會將電視切換為 HDR 模式。此 API 也會傳回電視的亮度值，可用來針對連接的顯示器最佳化遊戲的 HDR 輸出。這稱為顯示對應。

XDisplayTryEnableHdrMode 是遊戲將電視從標準動態範圍 (SDR) 切換為 HDR 模式的唯一機制。遊戲沒有任何機制可以讓電視進入或離開 HDR 模式。建議在初始化期間呼叫 XDisplayTryEnableHdrMode 一次。進入和離開 HDR 模式可能會導致電視黑畫面並靜音，時間從數百毫秒到數秒不等。時間長短取決於電視以及主機與電視之間的任何其他 HDMI 裝置。如果使用者啟動另一個佔用比遊戲更多螢幕空間的應用程式 (也就是其他應用程式以全螢幕或填滿模式執行)，電視會切換離開 HDR 模式後再切換回來。前往首頁不會造成模式變更。終止遊戲或啟動其他遊戲會使電視切換回 SDR 模式。

<a id="ID4ERB" />

## 交換緩衝區

初始化之後，遊戲應建立 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](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12commandqueue/methods/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**。如需詳細資訊，請參閱[轉譯](#ID4ERD)一節。

<a id="ID4ERD" />

## 轉譯

遊戲應使用著色器將 HDR10 值轉譯到第一個顯示平面的交換緩衝區。也就是說，色彩值必須位於 Rec.2020 色彩空間 (在 XBOX Series X|S 上另外還有 Rec. 709 和 P3)，並使用 ST.2084 伽瑪曲線編碼。第二個顯示平面交換緩衝區的色彩值必須位於 Rec.709 色彩空間，並可使用為 SDR 顯示器轉譯 SDR 時通常使用的相同伽瑪曲線編碼。在 XBOX Series X|S 上，第二個顯示平面是[選用的](#ID4ETM)。

在 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**。如需詳細資訊，請參閱[呈現平面參數](/zh-TW/reference/graphics/d3d12_x/structs/d3d12xbox_present_plane_parameters)一節。如果遊戲內容未使用完整的 Rec. 2020 色域，建議轉譯為較小的 P3 和 Rec. 709 色域，因為這樣可提升色彩精確度，特別是在使用交換緩衝區格式 **DXGI\_FORMAT\_R9G9B9E5\_SHAREDEXP** 時。這也能避免轉換為 Rec. 2020 色域的額外負荷，因為轉換將由顯示硬體免費執行。

<a id="ID4ETM" />

## 自動色調對應

在某些情況下，遊戲可能會依賴系統自動產生經過色調對應的 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](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12commandqueue/methods/id3d12commandqueue_sethdrtonemapperx)。

在 XBOX Series X|S 上，自動色調對應可以帶來效能優勢，因為自動色調對應是由硬體完成。因此，遊戲不必花費 GPU 週期或額外記憶體來產生經過色調對應的 SDR 影像。在 4K 的 XBOX Series X 以及 1440p 的 XBOX Series S 上，預期可節省 0.12ms。在記憶體方面，以 4K 進行三重緩衝時，遊戲不必為 SDR 配置額外的交換鏈緩衝區，可節省將近 100MB。

<a id="ID4E120" />

## HDR 與 120Hz 之間的偏好設定

遊戲可能想同時支援 HDR 和 120Hz。透過 [XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) 啟用 HDR 時，遊戲可以設定偏好 HDR 或 120Hz，以應付使用者的主機和電視設定無法同時支援兩者的情況。請參閱 Simple120Hz 範例。

呼叫 API 嘗試啟用 HDR 時，遊戲可以設定偏好，指出偏好 HDR 還是高更新頻率。如果可以，我們會同時提供兩者；如果不行，則依據遊戲的偏好提供。遊戲可以詢問使用者，或替使用者做決定 (例如根據多人遊戲等遊戲模式)，由遊戲自行決定。

如需詳細資訊，請參閱 [XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) API 主題。

<a id="ID4ECAL" />

## HDR 遊戲校正

HDR 遊戲校正應用程式會顯示一系列測試圖樣，以判斷 HDR 電視的特性。此應用程式位於主機的 \[設定] 中的 \[電視與顯示選項] 下的 \[校正遊戲的 HDR]。

<img src="https://mintcdn.com/microsoft-4404708b/EHFikhsC0GyEu9Ca/images/gdk/features/graphics/HDR_calibration.png?fit=max&auto=format&n=EHFikhsC0GyEu9Ca&q=85&s=f6fa5fc5ad4048d91d93e1ed41e7d89e" alt="主機 [設定] 中 [電視與顯示選項] 下 [校正遊戲的 HDR] 的影像" width="842" height="419" data-path="images/gdk/features/graphics/HDR_calibration.png" />

系統會判斷電視色調對應的最小和最大亮度校正值，並由 [XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) API 傳回。這些校正值會儲存在系統中，XBOX One 和 XBOX Series X|S 上的 Microsoft Game Development Kit (GDK) 遊戲可以選擇使用此資訊，針對連接的 HDR 電視提升視覺品質。如需如何使用這些值，請參閱 HDRDisplayMapping 和 HDRCalibration 範例中的著色器原始程式碼。

遊戲可以透過兩種方式使用校正值。

1. 不實作遊戲專屬的校正畫面，直接使用 API 提供的校正值來實作顯示對應。
2. 實作遊戲專屬的校正畫面，但使用 API 的校正值作為預設值，以及遊戲校正畫面的起始值。此選項的好處是，即使玩家未使用遊戲的校正畫面，遊戲仍會使用正確的預設值。此外，如果玩家確實使用遊戲的校正畫面，校正畫面一開始就已經是良好的值。

遊戲可以包含其他微調校正畫面，例如對比度和紙白 nit 調整，這些不屬於 HDR 遊戲校正應用程式。

遊戲也可以視需要以深層連結方式開啟 HDR 遊戲校正應用程式。

```cpp theme={null}
#include <XLauncher.h>
XLaunchUri(nullptr, "hdrgamecalibration://");
```

<a id="ID4EDV" />

## 適用於 XBOX 遊戲的 Dolby Vision

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

如需詳細資訊，請參閱[適用於 XBOX 遊戲的 Dolby Vision](/zh-TW/build/core-features/graphics/dolby-vision-for-gaming)

<a id="ID4EAH" />

## 自動 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](https://forums.xboxlive.com/articles/115015/auto-hdr-on-scarlett-consoles.html)。

下列程式碼示範如何在 SDR 遊戲上啟用自動 HDR。

```cpp theme={null}
// Try to switch the display into HDR mode
auto result = XDisplayTryEnableHdrMode(XDisplayHdrModePreference::PreferHdr, nullptr);

if (result == XDisplayHdrModeResult::Enabled)
{
   // Specify the Auto HDR flag during D3D device creation
   params.CreateDeviceFlags = D3D12XBOX_CREATE_DEVICE_FLAG_ENABLE_AUTO_HDR;
}

// Create the D3D device
HRESULT hr = D3D12XboxCreateDevice(...);
```

如需詳細資訊，請參閱 [D3D12XBOX\_CREATE\_DEVICE\_FLAGS](/zh-TW/reference/graphics/d3d12_xs/enums/d3d12xbox_create_device_flags_xs) 中旗標 D3D12XBOX\_CREATE\_DEVICE\_FLAG\_ENABLE\_AUTO\_HDR 的說明、[D3D12XBOX\_CREATE\_DEVICE\_PARAMETERS](/zh-TW/reference/graphics/d3d12_x/structs/d3d12xbox_create_device_parameters) 中的 AutoHDRPaperWhiteLevelNits，以及 AutoHDR 範例。

## 另請參閱

[圖形概觀](/zh-TW/build/core-features/graphics/overviews/graphics)


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [XR-015 管理玩家通訊](/zh-TW/publishing/certification/xr/xr-015.md)
- [玩家資料重設工具 (XblPlayerDataReset.exe)](/zh-TW/tools/tools-services/live-player-data-reset.md)
- [XDisplayHdrModeInfo](/reference/system/xdisplay/structs/xdisplayhdrmodeinfo.md)
- [認證付費服務方案](/zh-TW/publishing/game-publishing/concepts/certification/certification-paid-services.md)
