次の方法で共有


白レベル調整効果

この効果により、イメージの白レベルを直線的にスケーリングできます。 これは、ディスプレイ参照の輝度空間とシーン参照の輝度空間の間、またはその逆の変換を行う場合に特に役立ちます。

この効果のプロパティは 、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 つの要因に依存します。

  1. 入力コンテンツの色空間。 入力コンテンツに高ダイナミック レンジ (HDR) の輝度値が含まれているかどうか。 WCG コンテンツは、輝度動作の SDR と同じように動作します。
  2. コンポジション形式。 DWM に表示されるターゲット サーフェスのピクセル形式 ( スワップ チェーンコンポジション サーフェスなど)。 Direct2D を使用してレンダリングする場合、これは UINT8 または FP16 です
  3. デスクトップの高度な色モード。 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