白色層級調整效果

此效果可讓影像的白色層級以線性方式縮放。 當您在顯示參照的亮度空間和場景參照的亮度空間之間轉換時,這特別有用,反之亦然。

這個效果的屬性是由 D2D1_WHITELEVELADJUSTMENT_PROP列舉所識別,而且 CLSID 會CLSID_D2D1WhiteLevelAdjustment

效果屬性

顯示名稱和索引列舉 類型和預設值 描述
InputWhiteLevel,D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL FLOAT 輸入影像的白色層級,以 nits 為單位。
OutputWhiteLevel,D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL FLOAT 輸出影像的白色層級,以 nits 為單位。

備註

此效果旨在與 HDR 音調對應效果 結合,讓您能夠使用適當的色彩管理和音調對應,在 Direct2D 中轉譯 HDR 影像。 See that topic's Remarks for more details. 效果的目標是任何想要提供最佳類別 HDR 影像檢視體驗的架構,可處理所有 Windows HDR 影像格式,並適應顯示器 (是否為 HDR 或 WCG/SDR) 的功能。

在 Windows 上,所有 SDR/WCG 內容都假設位於顯示參考的亮度空間中,這表示內容白色層級應該在最終呈現之前相應增加為顯示器的白色層級。 不過,您不一定負責執行此動作。 相反地,HDR 內容會假設在場景參照的亮度空間中,這表示最終不應縮放以符合顯示器的白色層級。 也就是說,在轉譯 HDR 內容以確保這是淨結果時,您的應用程式可能需要在某些情況下執行調整。

當 Windows 桌面處於 SDR 或 WCG 模式時,桌面會以顯示參考的亮度空間組成。 但是,如果 Windows 桌面處於 HDR 模式,則桌面組合會在場景參照的亮度空間中發生。 也就是說,桌面視窗管理員 (DW) M 本身會執行亮度調整, (通常稱為 SDRBoost) 8 位組合表面,並簡化您針對該案例的應用程式。 即使如此,自動提升表示應用程式從一個亮度空間轉換成另一個亮度空間的角色,取決於應用程式用來呈現其內容的組合格式。

下表說明您的應用程式應該和不應該執行白階調整的情況,以及該調整應該是什麼。 一般而言,調整取決於三個因素。

  1. 輸入內容色彩空間。 您的輸入內容是否包含高動態範圍 (HDR) 亮度值。 WCG 內容的行為與 SDR 相同,適用于亮度行為。
  2. 組合格式。 呈現給 DWM 之目標表面的像素格式,例如 交換鏈結組合表面。 使用 Direct2D 轉譯時,這是 UINT8FP16
  3. 桌面進階色彩模式。 DWM 是否以 SDR、WCG 或 HDR 模式執行目前顯示器。 透過 DXGI_OUTPUT_DESC1::ColorSpaceAdvancedColorInfo.CurrentAdvancedColorKind取得此資訊。

根據這三個因素,您應該為 InputWhiteLevelOutputWhiteLevel 屬性設定適當的值。

輸入內容 組合格式 進階色彩模式 InputWhiteLevel OutputWhiteLevel
SDR/WCG UINT8 任意 N/A N/A
SDR/WCG FP16 SDR/WCG N/A N/A
SDR/WCG FP16 HDR SDRWhite 80
HDR 任意 SDR/WCG 80 DXGI_OUTPUT_DESC1::MaxLuminance
HDR UINT8 HDR 80 SDRWhite
HDR FP16 HDR N/A N/A

在資料表中,值 80 是 sRGB 或 scRGB 內容的參考白色層級。 因此,您可以使用 中定義的 d2d1effects_2.h 常數D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL。 此值 SDRWhite 是顯示器應該用來顯示白色 sRGB 內容的 nits 數目。 您可以藉由存取 AdvancedColorInfo.SdrWhiteLevelInNits 屬性來擷取此值。 N/A 值表示在此案例中不會使用白階調整;您可以從圖形中移除效果,或設定無作業的值。

請注意,如果應用程式不需要進行白階調整,DWM 或顯示器可能會處理從顯示器參照的亮度空間轉換為場景參照亮度空間的轉換。

  • 在 SDR/WCG 模式中,轉換會在 DWM 組合之後發生,並套用至呈現給該顯示的所有內容。 顯示會隱含地執行此轉換。
  • 在 HDR 模式中,只要應用程式的組合介面是 SDR,DWM 就會在組合之前自動執行轉換。

規格需求

需求
最低支援的用戶端 Windows 10 版本 1809 (10.0;組建 17763) [傳統型應用程式 |UWP 應用程式]
標頭 d2d1effects_2.h
程式庫 d2d1.lib、dxguid.lib