> ## 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.

# 使用 XBOX Series X|S HDR 與顯示硬體

> 充分發揮 XBOX Series X|S HDR 與顯示硬體的威力

本主題說明 XBOX Series X|S 顯示硬體如何提供提升遊戲視覺品質與 GPU 效能的機會。了解如何透過下列方式節省 GPU 處理時間與記憶體：

* 將部分高動態範圍 (HDR) 處理卸載至顯示硬體。
* 搭配 120 赫茲 (Hz) 顯示器實現更多畫面播放速率選項。
* 使用 Dolby Vision 與 Auto HDR 等功能。

<Note>
  此資訊截至 2022 年 4 月為最新。之後可能已有數項功能變更或更新。
</Note>

XBOX 有許多硬體元件，包括 CPU 與 GPU。不過，由於顯示硬體是 XBOX Series X|S 的新元件，因此經常被忽略。它是主機中獨立的硬體區塊。顯示驅動程式會控制顯示硬體並為其設定程式。顯示硬體負責處理遊戲最終轉譯的影像，將其轉換為透過 HDMI 纜線傳輸至顯示器的資料。

XBOX Series X|S 顯示硬體具有可程式化的部分。例如 1D 與 3D 查閱表 (LUT)，以及縮放、矩陣乘法與內插等數學運算。這使它在呈現影像細節方面遠比 XBOX One 顯示硬體強大。您可以利用這種可程式化能力實現進階選項，例如在顯示硬體中實作 Auto HDR。

<a id="offload-gpu-work-to-display-hardware" />

## 將 GPU 工作卸載至顯示硬體

本節說明如何將部分處理從 GPU 移至顯示硬體。

### HDR 場景轉譯

大多數遊戲會使用高精確度的轉譯目標格式，在中繼背景緩衝區中轉譯 HDR 值。部分 PC 遊戲使用每像素 64 位元 (bpp) 或 128 bpp 的格式。在主機上轉譯 HDR 場景時，建議您盡量減少使用 64 bpp 與 128 bpp 的轉譯目標。建議您改用 32 bpp 或更低，原因如下。

* 停用 Alpha 混色時，您可以透過 render backend plus (RB+) 獲得雙倍速率的色彩匯出。
* 降低記憶體、頻寬與快取壓力。
* 這在 XBOX Series S 上特別重要。

另一項最佳化是以 R9G9B9E5\_SHAREDEXP 取代常用的 R11G11B10 轉譯目標格式。它具有下列優點。

* 色彩精確度更高，非常明亮的藍色除外
* 全速率讀取、寫入與混色

如需 R9G9B9E5\_SHAREDEXP 的範例，請參閱 [Microsoft Game Development Kit (GDK) 主機範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics) 中的 HDRPrecision 範例。此範例會切換轉譯目標格式或交換鏈結格式中的各種格式。它展示了使用各種轉譯目標格式組合時，在 GPU 效能與色彩精確度方面的優點。

**圖 1. 線性值的誇大色帶視覺化。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s05.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=26e189710891274380b6e522e6dc9f5b" alt="線性值的誇大色帶視覺化" width="1440" height="810" data-path="images/gdk/features/graphics/xf22-gr02-s05.png" />

圖 1 比較 PIX 擷取中所示的 R11G11B10 與 R9G9B9E5 色彩精確度。上方的 R11G11B10 影像出現色帶瑕疵。下方的 R9G9B9E5 影像則沒有，這表示 R9G9B9E5 格式的色彩精確度優於 R11G11B10 格式。

### 交換鏈結緩衝區

XBOX 支援的 HDR 標準之一是 HDR10。它要求主機使用 Rec.2020 色彩空間與 ST.2084 伽瑪曲線將影像傳送至 HDR10 顯示器。顯示硬體可以進行色彩轉換並套用伽瑪曲線，進而提升效能。

色彩空間轉換有兩個選項。

* 在 GPU 上處理轉換
* 在顯示硬體上處理轉換。

#### 色彩空間轉換：選項 1

遊戲可以使用 GPU 計算，在後製處理轉譯階段中進行色彩空間轉換。

**圖 2. 使用 GPU 計算進行色彩空間轉換。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s07.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=40f422a4d4d2fd3dfc5453a10e7ae9c5" alt="使用 GPU 計算進行色彩空間轉換" width="1440" height="276" data-path="images/gdk/features/graphics/xf22-gr02-s07.png" />

圖 2 顯示使用 GPU 計算的色彩空間轉換順序。

1. 遊戲以 Rec.709 轉譯場景。
2. 著色器在 GPU 上將 Rec.709 轉換為 Rec.2020。
3. 交換鏈結的色彩值為 Rec.2020。
4. 顯示硬體將這些值傳遞至顯示器。

在此順序中，您必須使用 `Present` 旗標 DXGI\_COLOR\_SPACE\_RGB\_FULL\_\*\_NONE\_P2020。它會向驅動程式表示您的交換鏈結具有 Rec.2020 色彩空間值。

#### 色彩空間轉換：選項 2

色彩空間轉換也可以由顯示硬體完成。

* 交換鏈結值為 Rec.709 或 P3-D65。
* `Present` 使用下列其中一個旗標。
  * DXGI\_COLOR\_SPACE\_RGB\_FULL\_\*\_NONE\_P709.
  * DXGI\_COLOR\_SPACE\_RGB\_FULL\_\*\_NONE\_D65P3.

**圖 3. 使用顯示硬體進行色彩空間轉換。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s08.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=f41dd94202445f3d8da831b8e03549fb" alt="使用顯示硬體進行色彩空間轉換" width="1440" height="258" data-path="images/gdk/features/graphics/xf22-gr02-s08.png" />

圖 3 顯示使用主機顯示硬體的色彩空間轉換順序。此方式不會使用 GPU。

1. 遊戲以 Rec.709 或 P3-D65 轉譯場景。
2. 不在 GPU 上進行處理。交換鏈結的值位於 Rec.709 色彩空間或 P3-D65 色彩空間。
3. 顯示硬體將色彩空間轉換為顯示器所需的 Rec.2020 色彩空間。
4. `Present` 使用下列其中一個旗標。

* DXGI\_COLOR\_SPACE\_RGB\_FULL\_\*\_NONE\_P709
* DXGI\_COLOR\_SPACE\_RGB\_FULL\_\*\_NONE\_D65P3

除了效能優勢之外，此選項的色彩精確度也比 GPU 轉換更高。位元會被充分利用，不會浪費在工作色彩空間以外的值上。

#### 範例：以 Rec.709 轉譯紅色蘋果

**圖 4. 範例：以 Rec.709 轉譯紅色蘋果。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s11.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=a81fea6f797d90b0c4cd0caf31264943" alt="範例：以 Rec.709 轉譯紅色蘋果" width="1440" height="810" data-path="images/gdk/features/graphics/xf22-gr02-s11.png" />

圖 4 顯示使用交換緩衝區的紅色蘋果範例。

在 Rec.709 色彩空間中，最紅的紅色以值 (1.0, 0.0, 0.0) 表示。遊戲永遠不會轉譯比這更紅的紅色。圖 4 代表交換緩衝區中紅色通道的 10 個位元。所有 10 個位元都用於 Rec.709。

同樣的紅色也可以在較大的 Rec.2020 色彩空間中以值 (0.63, 0.007, 0.016) 表示。請注意，數值與 Rec.709 的值不同，但色彩相同。只有色彩空間不同。

圖 4 的上排顯示 Rec.709 交換鏈結，下排顯示 Rec.2020 交換鏈結。請注意，遊戲中最紅的紅色現在位於 Rec.2020 交換鏈結中。換句話說，交換鏈結中的 10 個位元並非全部用於遊戲所轉譯的最紅紅色。部分位元用於表示比遊戲所能轉譯的最紅紅色更紅的紅色值。因此，位元遭到浪費。

可用的交換鏈結格式與色彩空間組合有很多種。

**圖 5. 使用線性 Rec.2020 與線性 Rec.709 的 R9G9B9E5 交換鏈結。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s12.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=dd32114d87a5732eec27fc94ff0edfaa" alt="使用線性 Rec.2020 與線性 Rec.709 的 R9G9B9E5 交換鏈結" width="1440" height="386" data-path="images/gdk/features/graphics/xf22-gr02-s12.png" />

圖 5 顯示兩種色彩組合。左側影像使用線性 Rec.2020，藍色值出現色帶瑕疵。右側影像使用 Rec.709。與左側影像相比，它的藍色沒有色帶瑕疵。建議您不要將 R9G9B9E5 交換鏈結與線性 Rec.2020 搭配使用。

### 伽瑪曲線處理選項

有兩種伽瑪曲線處理選項可用。

* 在 GPU 上處理伽瑪曲線
* 在顯示硬體上處理伽瑪曲線

#### 伽瑪曲線處理：選項 1

**圖 6. 使用 GPU 計算的伽瑪曲線處理。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s13.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=7f4581da11b38b2a5c2b84a9a0fc8d5c" alt="使用 GPU 計算的伽瑪曲線處理" width="1440" height="249" data-path="images/gdk/features/graphics/xf22-gr02-s13.png" />

圖 6 顯示使用 GPU 處理伽瑪曲線的順序。

1. 遊戲轉譯線性值。
2. 遊戲使用著色器將線性值轉換為 ST.2084 伽瑪值。
3. 交換鏈結緩衝區現在包含套用 ST.2084 伽瑪曲線的非線性正規化值。
4. 由於顯示器使用 ST.2084 值，顯示硬體不做任何處理。
5. 使用 R10G10B10A2\_UNORM 轉譯目標格式或 R9G9B9E5\_SHAREDEXP 轉譯目標格式來處理伽瑪曲線。
6. `Present` 使用 `DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_*` 旗標。

`Present` 旗標包含 G2084。這會向硬體顯示驅動程式表示交換鏈結所含的值已套用 ST.2084 伽瑪曲線。

遊戲在 GPU 上進行處理。顯示硬體負責傳遞資料。

#### 伽瑪曲線處理：選項 2

**圖 7. 使用顯示硬體的伽瑪曲線處理。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s14.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=c789f49eea336077814af846bd2c458b" alt="使用顯示硬體的伽瑪曲線處理" width="1440" height="257" data-path="images/gdk/features/graphics/xf22-gr02-s14.png" />

圖 7 顯示使用顯示硬體處理伽瑪曲線的順序。

1. 遊戲轉譯線性值。
2. 交換鏈結值為線性正規化值，1.0 代表 10,000 尼特。
3. 您必須使用 R9G9B9E5\_SHAREDEXP 轉譯目標格式。
4. `Present` 使用 DXGI\_COLOR\_SPACE\_RGB\_FULL\_G10\_NONE\_\* 旗標。

處理是在顯示硬體上完成，而不是由遊戲在 GPU 上完成。

`Present` 旗標包含 G10 值，這是 gamma 1.0 的縮寫。這會向硬體顯示驅動程式表示交換鏈結包含線性值，且仍須套用 ST.2084 伽瑪曲線。

### 建議的影像解決方案

有許多會發生色彩轉換的格式組合可用。下列建議可提供高精確度、明亮且色彩豐富的影像，同時減少 GPU 處理。

**圖 8. 遊戲以 Rec.709 轉譯。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s15.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=02590fd09f74438048bb497bb9c60702" alt="遊戲以 Rec.709 轉譯" width="1440" height="245" data-path="images/gdk/features/graphics/xf22-gr02-s15.png" />

在圖 8 中，遊戲以 Rec.709 轉譯其場景。

**圖 9. 從 Rec.709 擴展色域至 P3-D65。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s16.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=fa45aef14bd30d808d91d3da80dd28af" alt="從 Rec.709 擴展色域至 P3-D65" width="1440" height="255" data-path="images/gdk/features/graphics/xf22-gr02-s16.png" />

圖 9 顯示從 Rec.709 擴展色域至較大的 P3-D65 色彩空間。這可確保影像色彩更豐富。由於著色器指令很容易實作，建議您將它們合併到現有的著色器中，而不是使用個別的著色器。本節結尾提供了程式碼範例。

**圖 10. 交換緩衝區值。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s17.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=25a81f81fded84f89678df4bbdc3de2b" alt="交換緩衝區值" width="1440" height="255" data-path="images/gdk/features/graphics/xf22-gr02-s17.png" />

圖 10 顯示交換鏈結現在具有 P3-D65 色彩空間中的線性色彩值。您必須使用 R9G9B9E5 格式，並以 D65P3 `Present` 旗標指定 G10。

**圖 11. 顯示硬體的色彩轉換與伽瑪曲線。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s18.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=2f09bf4067cafc41e05f5760a6bde94b" alt="顯示硬體的色彩轉換與伽瑪曲線" width="1440" height="248" data-path="images/gdk/features/graphics/xf22-gr02-s18.png" />

圖 11 顯示顯示硬體將色彩空間從 P3 轉換為 Rec.2020，並將線性 P3 轉換為 ST.2084。

大多數 HDR 顯示器都能接近完整顯示 P3 色彩空間。它比 Rec.709 色彩空間大得多。不過，許多開發人員使用 Rec.709 來製作遊戲母版，導致顯示器的色彩無法被充分利用。

#### 色域擴展

色域擴展是一個經常被忽略的程序。不過，它成本低廉、容易實作，而且能提升遊戲的圖形表現。

**圖 12. 影像範例。**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/images/gdk/features/graphics/xf22-gr02-s19.png" alt="影像範例" />

在圖 12 中，左側影像顯示一個紅綠燈。紅燈很亮，但呈現的是擴散的橘色而非紅色。

接下來的兩張影像模擬 Rec.709 與較寬色彩空間之間的差異。中間的 Rec.709 影像顯示藍天，但飽和度降低。在右側影像中，較大的 P3 色彩空間同樣有藍天，但保留了藍色。此比較說明較大的色彩空間如何維持較佳的色彩飽和度。這是因為 Rec.709 的色彩體積較小。色彩越亮，體積就越小。這會導致明亮色彩的飽和度降低。

**圖 13. 色彩體積與飽和度。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s19d.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=989b3ec81b4c4f29bbe45dc04083d76d" alt="色彩體積與飽和度" width="1258" height="525" data-path="images/gdk/features/graphics/xf22-gr02-s19d.png" />

圖 13 顯示當色彩體積較小時，明亮的色彩值會降低飽和度。

使用 Rec.709 時，色彩無法同時明亮又鮮豔。此外，色彩只能是明亮但飽和度低，或是鮮豔但暗淡。

將 Rec.709 轉換為 P3 的程式碼很簡單。只需要一次矩陣運算與一次線性內插。

下列程式碼取自 [SimpleHDR 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

```cpp theme={null}
// The following is a color rotation matrix from Rec.709 into P3-D65.
static const float3x3 from709toP3_D65 =
{
    {0.822461969f, 0.1775380f, 0.0000000f},
    {0.033194199f, 0.9668058f, 0.0000000f},
    {0.017082631f, 0.0723974f, 0.9105199f}
};

// The following code is the original Rec.709 color but rotated into the P3 color space.
float3 Rec709 = mul(from709toP3_D65, hdrSceneValue.rgb);

// Treat the color as if it were originally mastered in the P3 color space.
float3 P3 = hdrSceneValue.rgb;

// Interpolate between Rec.709 and P3, but do so only for bright HDR values. The overall look of the image must remain the same.
float lum = max(max(hdrSceneValue.r, hdrSceneValue.g), hdrSceneValue.b);
float start = 1.0f;     // This is an HDR scene value where Rec.709 is still used.
float stop = 5.0f;      // This is an HDR scene value where full P3 is used.
float lerp = saturate((lum - start) / (stop - start));
float3 expandedColorInP3 = ((1.0f - lerp) * Rec709) + (lerp * P3);
```

此程式碼會擴展色彩空間。影像的大部分仍保留在 Rec.709 色彩空間中，但明亮的色彩會被擴展。這可減少色彩飽和度降低的情況。例如，膚色等自然色彩不會改變。

當色彩變得更亮時，就會使用 P3 色彩空間中的色彩值。場景會保持其色彩飽和度，而不會降低飽和度。

### 標準動態範圍自動色調對應

標準動態範圍 (SDR) 自動色調對應是另一項將 GPU 工作移至顯示硬體時能帶來好處的技術。SDR 自動色調對應是一種程序，由遊戲提供 HDR 影像，再由 XBOX 系統自動從中建立 SDR 影像。SDR 影像用於 Game DVR、廣播與串流等即時情境。

SDR 自動色調對應具有下列優點。

* 將工作移至顯示硬體，提升 GPU 效能
* 減少記憶體與頻寬
* 簡化遊戲程式碼

在使用 120 Hz 顯示器或 XBOX Series S 時，請善用這些效能提升。

如需詳細資訊，請參閱 [HDRAutoToneMapping 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

為 Game DVR、廣播與串流產生即時 SDR 影像的兩個選項如下。

* 遊戲將 SDR 影像轉譯到第二個交換鏈結中，這會使用 GPU 處理與額外的記憶體。
* 遊戲不轉譯第二個交換鏈結，而是由 XBOX Series X|S 顯示硬體產生影像，不會耗費任何 GPU 效能或記憶體用量。

#### 使用顯示硬體節省時間與記憶體

如果您的遊戲以 4K 轉譯並使用三重緩衝，就需要為第二個交換鏈結配置 96 MB 的額外記憶體，以轉譯經色調對應的 SDR 影像。不過，如果由顯示硬體進行處理，就不需要配置記憶體。

在 GPU 方面，節省的程度取決於遊戲如何處理其色調對應器與色彩分級。如果色調對應器受限於算術邏輯單元 (ALU)，就能省下色調對應器的成本。

如果色調對應器受限於頻寬，您可以使用 3D LUT。這可以為您節省：

* 在 XBOX Series X 上以 4K 執行時 120 微秒。
* 在 XBOX Series S 上以 1440p 執行時 120 微秒。

120 微秒看似不多，但如果您以 120 FPS 轉譯，這就是很寶貴的時間節省。開發人員會花費大量時間，試圖透過節省數十微秒來最佳化效能。顯示硬體處理有助於實現效能最佳化。

### 顯示平面

在顯示硬體而非 GPU 上處理顯示平面，可帶來額外的效能提升。使用顯示硬體時，您可以為每個顯示平面使用不同的重新整理頻率、色彩空間與解析度。例如，您可以以 4K 轉譯 UI 並以 30 Hz 更新，同時以 1440p 轉譯場景並以 60 Hz 更新。接著，顯示硬體會縮放 UI 元素並將其合成到遊戲的最終影像上。

**圖 14. 顯示硬體合成平面。**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/images/gdk/features/graphics/xf22-gr02-s27.png" alt="顯示硬體合成平面" />

圖 14 顯示硬體顯示器合成兩個不同的平面。

XBOX One 上的合成功能採用率偏低，原因如下：

* 它是在非線性伽瑪空間中完成。
* 它無法與 HDR 搭配使用。

在 XBOX Series X|S 上，合成：

* 是在線性伽瑪空間中完成。
* 如果您使用自動色調對應，則可以與 HDR 搭配使用。

<a id="120-hz-and-60-fps" />

## 120 Hz 與 60 FPS+

120 Hz 顯示器最大的好處可能是玩家可以玩 120 FPS 的遊戲。不過，120 Hz 顯示器也可以搭配其他畫面播放速率使用。

### HDMI 頻寬

更高的解析度、更高的重新整理頻率與 HDR 都需要更高的 HDMI 頻寬。較高的頻寬會限制主機可以傳送至顯示器的內容。HDMI 規格定義了 HDMI 裝置之間可傳輸的最大頻寬。

#### HDMI 2.1

* 48 Gbps 的頻寬足以同時傳送 4K HDR 與 120 Hz。
* 部分顯示器僅在一個連接埠上支援 HDMI 2.1，其他連接埠則為 HDMI 2.0。

#### HDMI 2.0

* 18 Gbps 的頻寬不足以同時傳送 4K HDR 與 120 Hz。
* 可用的主機顯示設定為 1080p 120 Hz 或 1440p 120 Hz。

如果顯示器無法同時處理 4K HDR 與 120 Hz，請在 API 中指定模式偏好設定。例如，多人模式偏好 120 Hz 重新整理頻率，單人模式則偏好 HDR。如下列程式碼範例所示。

```cpp theme={null}
auto preference = (GameMode == MultiPlayer) ?
                      XDisplayHdrModePreference::PreferRefreshRate :
                      XDisplayHdrModePreference::PreferHdr;
auto result = XDisplayTryEnableHdrMode(preference, nullptr);
bIsDisplayInHDRMode = (result == XDisplayHdrModeResult::Enabled);
```

您可以在遊戲轉譯時切換偏好模式。在執行階段切換模式時，必須以正確的順序呼叫下列 API。

1. XDisplayTryEnableHdrMode
2. GetDisplayModeListX
3. SetFrameIntervalX
4. ScheduleFrameEventX

如需詳細資訊，請參閱 [Simple120Hz 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

建議您針對 HDMI 2.0 的複雜情況開發或測試遊戲。如果您的顯示器支援 HDMI 2.1，請使用 XBOX Manager 或 xbconfig 模擬 HDMI 2.0 的頻寬限制。

**圖 15. 在 XBOX Manager 中模擬 HDMI 2.0 頻寬限制。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s32.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=f8b79760f0dd412ac33d95707d60ab49" alt="在 XBOX Manager 中模擬 HDMI 2.0 頻寬限制" width="1440" height="429" data-path="images/gdk/features/graphics/xf22-gr02-s32.png" />

圖 15 顯示 XBOX Manager 中的顯示設定。若要測試 HDMI 2.0 的複雜情況，請將 **Display connection** 設定從 **Auto** 變更為 **HDMI2**。測試完成後，請務必將設定改回 **Auto**。

### 60FPS Plus 模式

120 Hz 顯示器能讓您做的不只是以 120 FPS 轉譯。現在有一種 *60FPS Plus* (60FPS+) 模式。在此模式下，遊戲會在 VSync 鎖定於 60 Hz 的情況下轉譯。不過，對於高於 60 FPS 的畫面播放速率 (例如 90 FPS)，它可以在不鎖定的情況下執行，而不會出現畫面撕裂或畫面卡頓。

此模式需要顯示器支援 120 Hz 與可變重新整理頻率 (VRR)。如果不支援，遊戲會自動同步至 60 Hz。VRR 用於流暢地顯示畫面。

如果目標是 120 FPS，請勿使用 60 FPS+ 模式。請改用不含 60FPS+ 模式旗標的 D3D12XBOX\_FRAME\_INTERVAL\_120\_HZ。如下列程式碼範例所示。

```cpp theme={null}
typedef enum D3D12XBOX_FRAME_INTERVAL_FLAGS
{
    D3D12XBOX_FRAME_INTERVAL_FLAG_NONE = 0x0,
    D3D12XBOX_FRAME_INTERVAL_FLAG_60FPS_PLUS = 0x1,
} D3D12XBOX_FRAME_INTERVAL_FLAGS;
```

如需詳細資訊，請參閱 [Simple120Hz 與 Responsiveness 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

### 24 Hz 與 40 Hz 轉譯模式

以下說明搭配 120 Hz 顯示器的 24 FPS 與 40 FPS 轉譯模式。

**24 Hz**

* 系統會呈現五個 120 Hz 畫面。
* 這些畫面適用於即時過場動畫。
* 與 30 FPS 相比，24 FPS 可提供額外 8.33 毫秒的 GPU 時間。這可用於提升視覺品質。

**40 Hz**

* 系統會呈現三個 120 Hz 畫面。
* 如果遊戲無法達到 60 FPS，40 FPS 是不錯的選擇。
* 與 60 FPS 相比，40 FPS 可提供額外 8.33 毫秒的 GPU 時間。

請使用 `DisplayModeList` 檢查顯示器是否支援。

| 定義 | 微秒 |
| - | - |
| #define D3D12XBOX\_FRAME\_INTERVAL\_120\_HZ | 8,333 |
| #define D3D12XBOX\_FRAME\_INTERVAL\_60\_HZ | 16,667 |
| #define D3D12XBOX\_FRAME\_INTERVAL\_40\_HZ | 25,000 |
| #define D3D12XBOX\_FRAME\_INTERVAL\_30\_HZ | 33,333 |
| #define D3D12XBOX\_FRAME\_INTERVAL\_24\_HZ | 41,667 |

<a id="suspendresume" />

## 暫停/繼續

玩家隨時可以暫停您的遊戲，以切換到其他遊戲、應用程式，或在 XBOX 首頁上執行某些操作，例如設定主機設定。下列情況可能會在您的遊戲處於暫停或受限模式時導致顯示模式變更。

* 主機設定在 60 Hz 與 120 Hz 之間切換
* 在主機設定中開啟或關閉 HDR
* 更換顯示器
* 更換 HDMI 纜線
* 新增或移除影音接收器

遊戲必須使用下列項目來處理暫停/繼續與受限/不受限狀態：

* `RegisterAppStateChangeNotification`
* `RegisterAppConstrainedChangeNotification`

請處理這些可能發生顯示模式變更的情況。若要這麼做，請在您的不受限或繼續程式碼中實作下列程式碼範例中的四個 API。

下列程式碼範例取自 [Simple120Hz 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

```cpp theme={null}
void Sample::OnUnConstrained()
{
    TryEnableHDR(); // XDisplayTryEnableHdrMode
    RefreshSupportedIntervals(); // GetDisplayModeListX
    UpdateFrameInterval(); // SetFrameIntervalX and ScheduleFrameEventX
}
```

在繼續遊戲或解除遊戲受限狀態時，必須以正確的順序呼叫這四個與顯示相關的 API。

<a id="hdr-game-calibration" />

## HDR 遊戲校正

HDR 遊戲校正應用程式會顯示測試圖樣，用來判斷顯示器色調對應的最小與最大亮度。這可讓玩家只需校正主機一次，而不必針對每款遊戲校正。校正值會依主機儲存在系統中。這些值會用於遊戲的顯示對應器著色器。XBOX One 與 XBOX Series X|S 都支援 HDR 遊戲校正。

**圖 16. HDR 遊戲校正。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s39.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=99ff14f2ee4c32dacbde58e8b4fc92bd" alt="HDR 遊戲校正" width="1170" height="727" data-path="images/gdk/features/graphics/xf22-gr02-s39.png" />

圖 16 顯示用來啟動 HDR 遊戲校正應用程式的設定。

**圖 17. 校正測試圖樣。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s40.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=e51de1c0f8ef943f7da10b57253679bd" alt="校正測試圖樣" width="1440" height="811" data-path="images/gdk/features/graphics/xf22-gr02-s40.png" />

圖 17 顯示三種校正亮度測試圖樣。它們是根據 HDR Gaming Interest Group (HGiG) 的建議所設計。它們會判斷顯示器上可看見的最暗與最亮細節。圖 17 顯示校正測試找出明亮細節開始被裁切之值的位置。

若要擷取校正值，請使用下列程式碼範例。

```cpp theme={null}
XDisplayHdrModeInfo CalibrationDataFromSystem; // Try to switch the display into HDR mode, and then retrieve the calibration data.
auto hdrModeResult = XDisplayTryEnableHdrMode(XDisplayHdrModePreference::PreferHdr,
                            &CalibrationDataFromSystem);
// Games generally determine maximum tone-map luminance from their own calibration screen.
// This is the maximum brightness where details start to clip.
maxTVBrightness = CalibrationDataFromSystem.maxToneMapLuminance;
```

### 校正值：選項 1

不要實作您自己的校正畫面。請使用 API 提供的值。

* 不要實作遊戲校正畫面。
* 在遊戲的顯示對應器著色器中使用 API 校正值。
* 建議您使用下列深層連結程式碼，在遊戲功能表中新增可前往校正應用程式的選項。`#include <XLauncher.h>` `XLaunchUri(nullptr, "hdrgamecalibration://");`

### 校正值：選項 2

若要實作遊戲校正畫面，請執行下列動作。

1. 對比：進行簡單的調整，例如 `pow(x, displayGamma)`。
2. 亮度：進行紙白亮度調整。
3. 最大亮度：判斷最大亮度裁切點。

使用 API 校正值作為預設值。

* 如果玩家不使用遊戲校正，遊戲仍會使用正確的預設值。
* 如果玩家使用遊戲校正，起始值就已經是正確的。

**圖 18. 校正值：選項 2 範例。**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/images/gdk/features/graphics/xf22-gr02-s43.png" alt="校正值：選項 2 範例" />

圖 18 顯示使用選項 2 的場景。

如需詳細資訊，請參閱 [HDRCalibration 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

**圖 19. Gears 5 HDR 校正畫面。**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/images/gdk/features/graphics/xf22-gr02-s44.png" alt="Gears 5 HDR 校正畫面" />

圖 19 顯示 Gears 5 的 HDR 校正畫面。它不使用客觀的測試圖樣。畫面會顯示變更校正值時遊戲影像受到的影響。如此一來，玩家就能看到 HDR 對暗部細節、中間調與亮部細節的效果。玩家可以切換到實際轉譯的遊戲畫面。

<a id="dolby-vision-for-gaming" />

## 遊戲用 Dolby Vision

自 XBOX One S 推出以來，就已支援 Netflix 等媒體應用程式的 Dolby Vision。遊戲用 Dolby Vision 的支援則於 2021 年年中新增，但僅適用於 XBOX Series X|S。

Dolby Vision 的優點：

* 簡化內容製作。
* 在所有 Dolby Vision 顯示器上都能保留藝術意圖。
* 玩家所體驗的遊戲，會與您在開發期間製作母版時的樣貌一致。
* 不需要 HDR 校正，因此 HDR 遊戲校正應用程式並不適用。

### Dolby Vision：選項 1 (原生 Dolby Vision)

* 遊戲使用 Dolby 的 Software Implementation Development Kit (SIDK)，以中介軟體形式實作原生 Dolby Vision。
* 支援靜態顯示對應與動態顯示對應。
* 原生 Dolby Display Vision 包含適用於 HDR10 與 SDR 的色調對應器。
* GPU 成本因所選選項而異。

**圖 20. 選項 1：原生 Dolby Vision。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s47.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=ab5608966887df26d40df65df2bef2ea" alt="選項 1：原生 Dolby Vision" width="1440" height="532" data-path="images/gdk/features/graphics/xf22-gr02-s47.png" />

圖 20 顯示原生 Dolby Vision 程序。

### Dolby Vision：選項 2 (自動 Dolby Vision)

* XBOX 系統會自動將 HDR10 轉換為 Dolby Vision。
* 系統會套用 Dolby 的靜態顯示對應器。
* 遊戲輸出為 HDR10。
* 遊戲不會偵測 Dolby Vision。
* 遊戲可以選擇不使用 Dolby Vision。
* 沒有 GPU 成本。一切都透過顯示硬體完成。

請確認已在主機顯示設定中啟用 Dolby Vision。您可以使用 **4K TV details** 選項來確認連接的顯示器是否支援 Dolby Vision。

**圖 21. 主機顯示設定。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s49a.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=1f24babdc35e30995f07b65093df4864" alt="選項 2：主機顯示設定" width="1492" height="574" data-path="images/gdk/features/graphics/xf22-gr02-s49a.png" />

**圖 22. 選項 2：主機顯示設定中的 4K 電視 (顯示器) 詳細資料。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s49b.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=0a1f39983469caac79a84c71e44bd760" alt="選項 2：主機顯示設定中的 4K 電視詳細資料" width="1590" height="523" data-path="images/gdk/features/graphics/xf22-gr02-s49b.png" />

圖 21 與圖 22 顯示在 XBOX 上玩遊戲時的 **General TV and display options** 設定。

<a id="auto-hdr" />

## Auto HDR

Auto HDR 功能會在系統層級自動為 SDR 遊戲新增 HDR。此功能通常套用於回溯相容遊戲。不過，GDK 遊戲也可以使用。由於 Auto HDR 是由顯示硬體處理，因此不會增加 CPU、GPU、記憶體、頻寬或延遲方面的成本。Auto HDR 不會改變 SDR 影像原本的藝術意圖。

Auto HDR 具有下列優點。

* 增加最高 1,000 尼特的額外亮度範圍。
* 增加色彩的額外範圍，最高可達 P3-D65 色彩空間。

建議您實作原生 HDR。如果無法實作，Auto HDR 是相較於 SDR 輕鬆獲得視覺提升的絕佳方式。Auto HDR 會針對連接的顯示器最佳化 HDR 校正值。

### 模擬 HDR 影像範例

這裡無法顯示 HDR 影像，但圖 23 模擬了在 SDR 顯示器上的效果。

**圖 23. 模擬 HDR 影像範例。**

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/images/gdk/features/graphics/xf22-gr02-s53.png" alt="模擬 HDR 影像範例" />

圖 23 左側為 SDR 影像，右側為模擬的 Auto HDR 影像。請注意，兩個檢視中影像的整體外觀保持不變。使用 Auto HDR 的目標是提升影像的視覺品質，而不是改變其藝術意圖。

在左側的 SDR 影像中，最亮的像素位於水面上明亮的反射周圍。由於是 SDR，這些像素呈現白色，而不是明亮。

在右側經 Auto HDR 增強的影像中，水面反射光線所形成的明亮高光，亮度最高可達 1,000 尼特。高光不僅更亮，細節也更豐富。木筏下方的淺藍色圓形光線因為位於 P3 色彩空間而色彩更豐富。

**圖 24. 熱度圖。**

<img src="https://mintcdn.com/microsoft-4404708b/bbcb-wO6G9v_h7Cf/images/gdk/features/graphics/xf22-gr02-s53p.png?fit=max&auto=format&n=bbcb-wO6G9v_h7Cf&q=85&s=3bdaa0959c3f83200337869d3b8a8729" alt="熱度圖" width="1440" height="474" data-path="images/gdk/features/graphics/xf22-gr02-s53p.png" />

圖 24 顯示一張熱度圖，指出場景中 Auto HDR 增強的位置。比 SDR 範圍更亮的色彩會以黃色與橘色的明亮 Auto HDR 值標示。熱度圖以視覺化方式呈現影像如何在適當之處獲得增強，而非被改變。

### Auto HDR 與 GDK 遊戲

若要啟用 Auto HDR，請依照程式碼範例所示執行下列動作。

1. 將顯示器切換為 HDR 模式。
2. 在建立 Direct3D 裝置時新增啟用 Auto 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 Direct3D device creation.
    params.CreateDeviceFlags = D3D12XBOX_CREATE_DEVICE_FLAG_ENABLE_AUTO_HDR;
}​

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

此程式碼產生的視覺效果與回溯相容的 Auto HDR 相同，但對玩家而言有一些細微差異。

* 玩家不會收到遊戲使用 Auto HDR 的通知。
* XBOX 儀表板上不會顯示 Auto HDR 指示器。
* 在主機設定中切換 Auto HDR，不會影響 GDK 遊戲的 Auto HDR。

### Auto HDR 建議

使用高精確度的交換緩衝區格式。

* 使用 R9G9B9E5 或 R10G10B10A2。
* R9G9B9E5 最佳，因為它能提供最高的色彩精確度。
* 避免使用 R8G8B8A8，因為它可能會產生色帶。

避免使用純白色的抬頭顯示器 (HUD) 與 UI 元素。

* 純白像素會達到 1,000 尼特。對 HUD 或 UI 而言太亮了。
* 在 HDR 模式下，使用線性亮度比例來調暗 HUD 或 UI。

降低光暈強度。

* 明亮區域中的細節，看起來會比細節很少的大片亮斑更好。

如需詳細資訊，請參閱 [AutoHDR 範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

### Auto HDR 示範影片

[Gears of War Ultimate:](https://youtu.be/StYt-xGX76k)

[Prey:](https://youtu.be/N-MJPbCciho)

這些並排比較的示範影片展示了使用 Auto HDR 的回溯相容遊戲。這些示範最好在 HDR 顯示器上觀看。

<a id="summary-the-display-hardware-is-very-capable" />

## 摘要

卸載 GPU 工作。

* 色彩空間轉換
* 伽瑪曲線
* SDR 自動色調對應
* 顯示平面

使用進階功能。

* Dolby Vision
* Auto HDR

120 Hz 可支援 24/40/60 FPS+。

使用 HDR 遊戲校正值。

### 與本主題相關的範例

* AutoHDR
* HDRAutoToneMapping
* HDRCalibration
* HDRDisplayMapping
* HDRPrecision
* ResponsivenessSample
* Simple120Hz
* SimpleHDR

如需詳細資訊，請參閱 [GDK 主機範例頁面上的這些範例](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list#graphics)。

如需下載指示，請參閱[下載本主題中提及的 Microsoft Game Development Kit 主機範例](#gdk-graphics-samples)。

<a id="next-steps" />

## 後續步驟

如果您想檢閱與本概觀相關的簡報資料資訊，請從 [XBOX Developer Download Secure Data Storage (SDS)](https://www.microsoft.com/en-us/software-download/gdk) 下載下列檔案。

* 投影片：Xfest 2022 Graphics Track PowerPoints (Xfest2022GfxPPTs.ZIP) 中的 Harnessing the power of the XBOX Series X|S HDR and display hardware.pptx
* 視訊簡報：Xfest 2022 Graphics Track Videos (Xfest2022GfxVids.ZIP) 中的 GR02.mp4

### 下載 Microsoft PowerPoint 簡報與視訊

1. 前往 [Game Development Kit (GDK) 下載](https://www.microsoft.com/en-us/software-download/gdk)。
2. 在 <b>Select file type</b> 下，選取 **Conference Materials**，然後選取 **Confirm**。
3. 在 <b>Select build/version number</b> 下，選擇下列其中一個圖形簡報。
   * Xfest 2022 Graphics Track PowerPoints
   * Xfest 2022 Graphics Track Videos
4. 選取 <b>Download Now</b>，然後等待 .zip 檔案下載完成。
5. 前往您本機的「下載」資料夾，然後從壓縮資料夾中解壓縮 (擷取) 檔案。

<a id="gdk-graphics-samples" />

### 下載本主題中提及的 Microsoft Game Development Kit 主機範例

1. 前往 [Game Development Kit (GDK) 下載](https://www.microsoft.com/en-us/software-download/gdk)。
2. 在 <b>Select file type</b> 下，選取 **GDK**，然後選取 **Confirm**。
3. 在 <b>Select build/version number</b> 下，選擇最新的 **Microsoft GDKX (Sample only)** 選項。
4. 選取 <b>Download Now</b>，然後等待 .zip 檔案下載完成。
5. 前往您本機的「下載」資料夾，然後從壓縮資料夾中解壓縮 (擷取) 檔案。
6. 選取 **GDKSamples** > **Graphics**，然後搜尋該範例。

<a id="see-also" />

## 另請參閱

[高動態範圍 (HDR) 輸出](/zh-TW/build/core-features/graphics/overviews/hdr-support)

[XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode)

[120Hz 支援](/zh-TW/build/core-features/graphics/overviews/one-twenty-hz-support)

[第 9 代 XBOX 遊戲的 Dolby Vision](/zh-TW/build/core-features/graphics/dolby-vision-for-gaming)


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [安裝 GDK 工具鏈](/zh-TW/home/setup-install/download-install.md)
- [認證逐步指南](/zh-TW/publishing/game-publishing/concepts/certification/certification-guide.md)
- [XBOX Series X|S 總覽](/zh-TW/paths/series-xs/overview.md)
- [XR046 顯示名稱與玩家圖片](/zh-TW/publishing/certification/fma/xr-046.md)
