共用方式為


白階調整效果

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

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

效果屬性

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

言論

此效果旨在與 HDR 音調對應效果結合,讓您以適當的色彩管理和音調對應在 Direct2D 中轉譯 HDR 影像。 如需詳細資訊,請參閱該主題的 。 效果針對任何想要提供最佳 HDR 影像檢視體驗的架構,可處理所有 Windows HDR 影像格式,並適應顯示器的功能(無論是 HDR 或 WCG/SDR)。

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

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

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

  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 值表示此案例中不會使用白階調整;您可以從圖形中移除效果,或為 no-op設定值。

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

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

要求

要求 價值
最低支援的用戶端 Windows 10 版本 1809 (10.0;組建 17763) [傳統型應用程式 |UWP 應用程式]
頁眉 d2d1effects_2.h
圖書館 d2d1.lib、dxguid.lib