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 vom Display bezeichneten Leuchtdichteraum und szenenbezogenen Leuchtdichteraum oder umgekehrt konvertieren.
Die Eigenschaften für diesen Effekt werden durch die D2D1_WHITELEVELADJUSTMENT_PROP Enumerationidentifiziert, und die CLSID ist CLSID_D2D1WhiteLevelAdjustment.
Effekteigenschaften
Anzeigename und Indexenumeration | Typ und Standardwert | Beschreibung |
---|---|---|
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | SCHWEBEN | Die weiße Ebene des Eingabebilds in Nissen. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | SCHWEBEN | Die weiße Ebene des Ausgabebilds in Nissen. |
Bemerkungen
Dieser Effekt soll mit dem HDR-Tonkarteneffekt kombiniert werden, damit Sie HDR-Bilder in Direct2D mit der richtigen Farbverwaltung und Tonzuordnung rendern können. Weitere Informationen finden Sie in den Anmerkungen dieses Themas. Die Effekte richten sich an alle Frameworks, die eine erstklassige HDR-Bildanzeige bieten möchten, die alle Windows HDR-Bildformate verarbeitet und sich an die Funktionen des Displays anpasst (unabhängig davon, ob es sich um HDR oder WCG/SDR handelt).
Unter Windows wird davon ausgegangen, dass sich alle SDR/WCG-Inhalte in einem anzeigebezogenen Leuchtdichtebereich 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 liegt jedoch nicht immer in der Verantwortung Ihrer Anwendung, dies zu tun. Im Gegensatz dazu wird angenommen, dass SICH HDR-Inhalte in einem szenenbezogenen Leuchtdichtebereich befinden, was bedeutet, dass er letztendlich nicht so skaliert werden sollte, dass er auf die Weiße Ebene des Displays abgestimmt wird. Dies bedeutet, dass Ihre Anwendung beim Rendern von HDR-Inhalten möglicherweise eine Skalierung durchführen muss, um sicherzustellen, dass dies das Nettoergebnis ist.
Wenn sich der Windows-Desktop im SDR- oder WCG-Modus befindet, wird der Desktop in einem anzeigebezogenen Leuchtdichtebereich erstellt. Wenn sich der Windows-Desktop jedoch im HDR-Modus befindet, erfolgt die Desktopkomposition im szenenbezogenen Leuchtdichtebereich. In diesem Fall führt der Desktop Window Manager (DWM) selbst Leuchtdichteanpassungen (häufig als SDRBoost bezeichnet) für 8-Bit-Kompositionsoberflächen durch und vereinfacht ihre Anwendung für diesen Fall. Auch die automatische Verstärkung bedeutet, dass die Rolle Ihrer Anwendung beim Konvertieren von einem Leuchtraum in einen anderen von dem 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 keine Anpassung auf weißer Ebene durchführen sollte, sowie die Anpassungen. Im Allgemeinen hängt die Anpassung von drei Faktoren ab.
- Eingabeinhaltsfarbraum. Gibt an, ob der Eingabeinhalt Hdr-Leuchtdichtewerte (High Dynamic Range) enthält. WCG-Inhalte verhalten sich genauso wie SDR für das Leuchtdichteverhalten.
- 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-.
- 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.CurrentAdvancedColorKindab.
Basierend auf diesen drei Faktoren sollten Sie die entsprechenden Werte für die eigenschaften InputWhiteLevel
und OutputWhiteLevel
festlegen.
Eingabeinhalt | Kompositionsformat | Erweiterter Farbmodus | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8- | Jegliche | N/A | N/A |
SDR/WCG | FP16- | SDR/WCG | N/A | N/A |
SDR/WCG | FP16- | HDR | SDRWhite | 80 |
HDR | Jegliche | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
HDR | UINT8- | HDR | 80 | SDRWhite |
HDR | FP16- | HDR | N/A | N/A |
In der Tabelle ist der Wert 80 der Referenzweißwert (in Nissen) für sRGB- oder scRGB-Inhalte. Dazu können Sie die Konstante D2D1_SCENE_REFERRED_SDR_WHITE_LEVELverwenden, die in d2d1effects_2.h
definiert ist. Der Wert SDRWhite
ist die Anzahl der Nissen, mit denen die Anzeige weißen sRGB-Inhalt anzeigen soll. Sie können diesen Wert abrufen, indem Sie auf die eigenschaft AdvancedColorInfo.SdrWhiteLevelInNit s zugreifen. Der Wert N/A bedeutet, dass die Anpassung auf weißer Ebene in diesem Szenario nicht verwendet wird; Sie können den Effekt entweder aus Ihrem Diagramm entfernen oder Werte für eine no-opfestlegen.
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 einem anzeigebezogenen Leuchtdichteraum in einen szenenbezogenen 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 vom DWM vor der Komposition automatisch ausgeführt, solange die Kompositionsoberfläche Ihrer Anwendung SDR ist.
Anforderungen
Anforderung | Wert |
---|---|
Mindestens unterstützter Client | Windows 10, Version 1809 (10.0; Build 17763) [Desktop-Apps | UWP-Apps] |
Kopfball | d2d1effects_2.h |
Bibliothek | d2d1.lib, dxguid.lib |