白レベル調整効果
この効果により、イメージの白レベルを直線的にスケーリングできます。 これは、ディスプレイ参照の輝度空間とシーン参照の輝度空間の間、またはその逆の変換を行う場合に特に役立ちます。
この効果のプロパティは 、D2D1_WHITELEVELADJUSTMENT_PROP列挙によって識別され、CLSID が CLSID_D2D1WhiteLevelAdjustment。
Effect プロパティ
表示名とインデックス列挙 | 型と既定値 | 説明 |
---|---|---|
InputWhiteLevel、D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | FLOAT | 入力イメージの白レベル (ニット単位)。 |
OutputWhiteLevel、D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | FLOAT | 出力イメージの白レベル (ニット単位)。 |
解説
この効果は、 HDR トーン マップ効果 と組み合わせて、適切な色管理とトーン マッピングを使用して Direct2D で HDR イメージをレンダリングすることを目的としています。 詳細については、そのトピックの 「解説 」を参照してください。 効果は、すべての Windows HDR イメージ形式を処理し、ディスプレイの機能 (HDR または WCG/SDR) に適応するクラス最高の HDR 画像表示エクスペリエンスを提供する任意のフレームワークを対象としています。
Windows では、すべての SDR/WCG コンテンツは、ディスプレイ参照の輝度空間内にあると見なされます。つまり、最終的に表示される前に、コンテンツの白レベルをディスプレイの白レベルにスケールアップする必要があります。 ただし、これを行うのがアプリケーションの責任とは限りません。 これに対し、HDR コンテンツはシーンで参照される輝度空間内にあると見なされます。つまり、最終的にはディスプレイの白レベルに合わせてスケーリングするべきではありません。 とはいえ、HDR コンテンツをレンダリングするときに、アプリケーションでスケーリングを実行して、これが確実に結果であることを確認する必要がある場合があります。
Windows デスクトップが SDR または WCG モードの場合、デスクトップはディスプレイ参照の輝度空間で構成されます。 ただし、Windows デスクトップが HDR モードの場合、デスクトップコンポジションはシーン参照の輝度空間で行われます。 ただし、デスクトップ ウィンドウ マネージャー (DWM) 自体は、8 ビットコンポジション サーフェスの輝度調整 (多くの場合、SDRBoost と呼ばれます) を実行し、その場合のアプリケーションを簡略化します。 それでも、自動ブーストとは、ある輝度空間から別の輝度空間への変換におけるアプリケーションの役割が、アプリケーションがコンテンツを表示するために使用しているコンポジション形式に依存することを意味します。
次の表では、アプリケーションでホワイト レベルの調整を実行する必要がある場合と実行すべきでないケースと、その調整の内容について説明します。 一般に、調整は 3 つの要因に依存します。
- 入力コンテンツの色空間。 入力コンテンツに高ダイナミック レンジ (HDR) の輝度値が含まれているかどうか。 WCG コンテンツは、輝度動作の SDR と同じように動作します。
- コンポジション形式。 DWM に表示されるターゲット サーフェスのピクセル形式 ( スワップ チェーン や コンポジション サーフェスなど)。 Direct2D を使用してレンダリングする場合、これは UINT8 または FP16 です。
- デスクトップの高度な色モード。 DWM が現在のディスプレイの SDR、WCG、または HDR モードで実行されているかどうか。 この情報は 、DXGI_OUTPUT_DESC1::ColorSpace または AdvancedColorInfo.CurrentAdvancedColorKind を使用して取得します。
これらの 3 つの要因に基づいて、 プロパティと OutputWhiteLevel
プロパティに適切な値を設定するInputWhiteLevel
必要があります。
入力コンテンツ | コンポジション形式 | 高度なカラー モード | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8 | Any | 該当なし | 該当なし |
SDR/WCG | FP16 | SDR/WCG | 該当なし | 該当なし |
SDR/WCG | FP16 | Hdr | SDRWhite | 80 |
Hdr | Any | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
Hdr | UINT8 | Hdr | 80 | SDRWhite |
Hdr | FP16 | Hdr | 該当なし | 該当なし |
この表の値 80 は、sRGB または scRGB コンテンツの参照ホワイト レベル (nits) です。 このためには、 でd2d1effects_2.h
定義されている定数D2D1_SCENE_REFERRED_SDR_WHITE_LEVELを使用できます。 値 SDRWhite
は、白い sRGB コンテンツを表示するためにディスプレイで使用する必要があるニットの数です。 この値を取得するには、 AdvancedColorInfo.SdrWhiteLevelInNits プロパティに アクセスします。 値 N/A は、このシナリオではホワイト レベル調整が使用されないことを意味します。グラフから効果を削除するか、操作なしの値を設定できます。
なお、アプリケーションで白色レベルの調整が不要な場合、DWMまたはディスプレイは、ディスプレイ参照輝度空間からシーン参照輝度空間への変換を処理している可能性がある。
- SDR/WCG モードでは、変換は DWM コンポジション後に行われ、そのディスプレイに表示されるすべてのコンテンツに適用されます。 この変換は、表示によって暗黙的に実行されます。
- HDR モードでは、アプリケーションのコンポジション サーフェスが SDR である限り、コンポジションの前に DWM によって変換が自動的に実行されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 Version 1809 (10.0;ビルド 17763) [デスクトップ アプリ |UWP アプリ] |
ヘッダー | d2d1effects_2.h |
ライブラリ | d2d1.lib、dxguid.lib |