次の方法で共有


白レベル調整効果

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

この効果のプロパティは、D2D1_WHITELEVELADJUSTMENT_PROP 列挙によって識別され、CLSID が CLSID_D2D1WhiteLevelAdjustment

Effect プロパティ

表示名とインデックス列挙 型と既定値 形容
InputWhiteLevel、D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL 浮く 入力イメージの白レベル (ニト単位)。
OutputWhiteLevel、D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL 浮く 出力イメージの白レベル (ニト単位)。

備考

この効果は、適切なカラー管理とトーン マッピングを使用して Direct2D で HDR イメージをレンダリングできるように、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 つの要因に基づいて、InputWhiteLevel プロパティと OutputWhiteLevel プロパティに適切な値を設定する必要があります。

入力コンテンツ コンポジション形式 高度なカラー モード 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 コンテンツの参照ホワイト レベル (nits) です。 このためには、d2d1effects_2.hで定義されている定数 D2D1_SCENE_REFERRED_SDR_WHITE_LEVELを使用できます。 SDRWhite 値は、白い sRGB コンテンツを表示するためにディスプレイが使用する必要があるニトの数です。 この値は、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