Anpassungseffekt auf weißer Ebene

Mit diesem Effekt kann die weiße Ebene eines Bilds linear skaliert werden. Dies ist besonders hilfreich, wenn Sie zwischen dem angezeigten Strahlraum und dem szenenbezogenen Leuchtdichteraum oder umgekehrt konvertieren.

Die Eigenschaften für diesen Effekt werden durch die D2D1_WHITELEVELADJUSTMENT_PROP-Enumeration identifiziert, und die CLSID ist CLSID_D2D1WhiteLevelAdjustment.

Effekteigenschaften

Anzeigename und Indexaufzählung Typ und Standardwert BESCHREIBUNG
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL GLEITKOMMAZAHL Die weiße Ebene des Eingabebilds in Nits.
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL GLEITKOMMAZAHL Die weiße Ebene des Ausgabebilds in Nits.

Bemerkungen

Dieser Effekt soll mit dem HDR-Ton-Karteneffekt kombiniert werden, damit Sie HDR-Bilder in Direct2D mit ordnungsgemäßer Farbverwaltung und Tonzuordnung rendern können. Weitere Informationen finden Sie in den Anmerkungen zu diesem Thema. Die Effekte sind auf jedes Framework ausgerichtet, das eine erstklassige HDR-Bildanzeigeerfahrung bieten möchte, die alle Windows HDR-Bildformate behandelt und sich an die Funktionen des Displays anpasst (ob HDR oder WCG/SDR).

Bei Windows wird davon ausgegangen, dass sich alle SDR/WCG-Inhalte in einem Anzeigebereich befinden, was bedeutet, dass die Weiße Ebene des Inhalts auf die weiße Ebene der Anzeige skaliert werden sollte, bevor sie letztendlich präsentiert wird. Es ist jedoch nicht immer die Verantwortung Ihrer Anwendung, dies zu tun. Im Gegensatz dazu wird davon ausgegangen, dass HDR-Inhalte in einem Szenenbesprechungsbereich enthalten sind, d. h., es sollte nicht letztendlich skaliert werden, um der weißen Ebene des Displays zu entsprechen. Dies bedeutet, dass Ihre Anwendung die Skalierung unter bestimmten Umständen ausführen muss, wenn HDR-Inhalte gerendert werden, um sicherzustellen, dass dies das Nettoergebnis ist.

Wenn sich der desktop Windows im SDR- oder WCG-Modus befindet, wird der Desktop in einem anzeigebezogenen Leuchtraum zusammengesetzt. Wenn sich der Windows Desktop jedoch im HDR-Modus befindet, erfolgt die Desktopkomposition im szenenbezogenen Leuchtraum. Das heißt, der Desktop Window Manager (DWM) selbst führt Leuchtdichteanpassungen (häufig als SDRBoost bezeichnet) für 8-Bit-Kompositionsoberflächen aus, und das vereinfacht Ihre Anwendung für diesen Fall. Die automatische Verstärkung bedeutet, dass die Rolle Ihrer Anwendung beim Konvertieren von einem Leuchtraum in einen anderen vom Kompositionsformat abhängig ist, das Ihre Anwendung zum Präsentieren des Inhalts verwendet.

In der nachstehenden Tabelle werden die Fälle beschrieben, in denen Ihre Anwendung eine Anpassung auf weißer Ebene durchführen sollte, sowie deren Anpassung. Im Allgemeinen hängt die Anpassung von drei Faktoren ab.

  1. Eingabeinhaltsfarbraum. Gibt an, ob ihr Eingabeinhalt hohe Hdr-Leuchtdichtewerte enthält oder nicht. WCG-Inhalt verhält sich identisch mit SDR für das Leuchtkraftverhalten.
  2. Kompositionsformat. Das Pixelformat der Zieloberfläche, die dem DWM angezeigt wird, z. B. eine Swapchain oder eine Kompositionsoberfläche. Beim Rendern mit Direct2D ist dies entweder UINT8 oder FP16.
  3. Erweiterter Desktopfarbmodus. Gibt an, ob der DWM im SDR-, WCG- oder HDR-Modus für die aktuelle Anzeige ausgeführt wird. Rufen Sie diese Informationen über DXGI_OUTPUT_DESC1::ColorSpace oder AdvancedColorInfo.CurrentAdvancedColorKind ab.

Basierend auf diesen drei Faktoren sollten Sie die entsprechenden Werte für die InputWhiteLevel und OutputWhiteLevel die Eigenschaften festlegen.

Eingabeinhalt Kompositionsformat Erweiterter Farbmodus 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

In der Tabelle ist der Wert 80 der Referenzweißwert in Nits für sRGB- oder scRGB-Inhalte. Dazu können Sie die Konstante D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL verwenden, die in d2d1effects_2.hdefiniert ist. Der Wert SDRWhite ist die Anzahl der Nits, die die Anzeige zum Anzeigen weißer sRGB-Inhalte verwenden soll. Sie können diesen Wert abrufen, indem Sie auf die AdvancedColorInfo.SdrWhiteLevelInNits-Eigenschaft zugreifen. Der Wert N/A bedeutet, dass die Anpassung auf weißer Ebene in diesem Szenario nicht verwendet wird; Sie können entweder den Effekt aus Ihrem Diagramm entfernen oder Werte für ein No-Op festlegen.

Beachten Sie, dass in Fällen, in denen eine Anpassung auf weißer Ebene von der Anwendung nicht benötigt wird, die DWM oder das Display möglicherweise die Konvertierung von anzeigebezogenem Leuchtraum in szenenbezogene Leuchtdichteraum behandeln.

  • Im SDR/WCG-Modus erfolgt die Konvertierung nach der DWM-Komposition und gilt für alle inhalte, die auf diese Anzeige präsentiert werden. Die Anzeige führt diese Konvertierung implizit aus.
  • Im HDR-Modus wird die Konvertierung automatisch von der DWM vor der Komposition ausgeführt, solange die Kompositionsoberfläche Ihrer Anwendung SDR ist.

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809 (10,0; Build 17763) [Desktop-Apps | UWP-Apps]
Header d2d1effects_2.h
Bibliothek d2d1.lib, dxguid.lib