ICC-Profilverhalten mit erweiterter Farbe
Advanced Color ist ein Dachbegriff der Betriebssystemtechnologien für Displays mit deutlich höherer Farbtreue als Standardanzeigen. Weitere Informationen finden Sie unter Verwenden von DirectX mit erweiterter Farbe in high/standard dynamic range displays. Erweiterte Farb- und automatische Farbverwaltung stellen eine konsistente und farbmetrisch genaue Anzeigefarbe für alle Apps sicher: sowohl legacy als auch modern. Ihre App führt jedoch möglicherweise bereits eine eigene explizite Farbverwaltung mithilfe von Farbprofilen des International Color Consortium (ICC) durch.
Wenn "Erweiterte Farbe" auf SDR- oder HDR-Displays aktiv ist, ändert sich das Verhalten der Anzeige-ICC-Profile auf nicht abwärtskompatible Weise. Wenn Ihre App mit ANZEIGE-ICC-Profilen funktioniert, bietet Windows Kompatibilitätshilfsprogramme an, um sicherzustellen, dass Ihre App weiterhin das richtige Verhalten erhält. Erweiterte farbfähige Apps sollten nicht direkt mit anzeige-ICC-Profilen interagieren, da Windows Ersatz-APIs für Apps bereitstellt, die das Profil abstrahieren; Vollständige Anleitungen finden Sie unter Verwenden von DirectX mit erweiterter Farbe auf high/standard dynamic range displays.
In diesem Thema werden die Änderungen des ICC-Profilverhaltens beschrieben. Wenn Ihre farbverwaltete App weiterhin ICC-Profile verwenden muss, zeigt dieses Thema außerdem, wie Sie Ihre App an die inkrementelle Nutzung erweiterter Farbvorteile anpassen können.
Verhalten der Legacy-Windows-Farbverwaltung
Wenn "Erweiterte Farbe" inaktiv ist, führt Windows keine Farbverwaltung für die visuelle Inhaltsausgabe Ihrer App durch (z. B. GDI hDC, DirectX-Swapchain oder visuelle Komposition); in der Praxis wird davon ausgegangen, dass sich der App-Inhalt im standardmäßigen sRGB-Farbraum befindet. Wenn Sie eine genaue Farbwiedergabe auf dem aktiven Display wünschen, muss Ihre App ihre eigene Farbverwaltung durchführen, meistens mit Farbprofilen des International Color Consortium (ICC). Die wichtigsten konzeptionellen Schritte sind:
- Rufen Sie die Farbmerkmale der Anzeige ab.
- Durchführen einer Farbraumkonvertierung in den Farbraum des Bildschirms.
- Führen Sie eine Gamutzuordnung aus, um die Gamut der Anzeige einzuschränken.
Hier sind weitere Details zu den drei Schritten.
Abrufen der Farbeigenschaften des Displays
Eine Win32-App verwendet die Windows Color System-Profilverwaltungsfunktionen, um das standardmäßige ICC-Profil abzurufen, das Ihnen die Farbeigenschaften der Anzeige einschließlich der verfügbaren Farbskala angibt.
Eine Universelle Windows-Plattform-App verwendet stattdessen DisplayInformation.GetColorProfileAsync-Methode.
Durchführen der Farbraumkonvertierung in den Farbraum des Bildschirms
Wenn der Farbraum des Bildschirms nicht mit dem Farbraum Ihres Inhalts übereinstimmt, müssen Sie eine Farbraumkonvertierung ausführen. Beispielsweise werden digitale Inhalte häufig als sRGB codiert, ihre Anzeige kann jedoch breit gefächert DCI-P3 sein. Normalerweise verwenden Sie eine ICC-Farbverwaltungsbibliothek, die das ICC-Profil liest, und transformiert die Farbwerte Ihrer Inhalte entsprechend. Windows bietet mehrere ICC-Farbverwaltungsmodule; Beispiel: der Direct2D-Farbverwaltungseffekt.
Es ist wichtig zu beachten, dass ICC-profilbasiertes Farbmanagement oder ausgabeverwendigenist. Das bedeutet, dass Farbwerte nicht als absolute (szenenverwiesene) Farben gespeichert werden, sondern stattdessen relativ zum Farbraum der Anzeige (das Ausgabegerät) codiert werden. Wenn Ihre App z. B. sRGB rot rendert, wird dies in der gerenderten Ausgabe als RGB(1, 0, 0)
dargestellt. Wenn Sie diesen Inhalt jedoch auf einer Adobe RGB-Anzeige rendern, wird RGB(1, 0, 0)
einfach von der Anzeige als gesättigtstes Rot (Adobe RGB-Rot) interpretiert, was falsch ist. Wenn Sie eine ICC-Farbtransformation anwenden, wird sie erneut als RGB(0.858659, 0, 0)
codiert, und wenn dies durch die Adobe RGB-Anzeige gerendert wird, wird sie ordnungsgemäß als sRGB rot reproduziert.
Durchführen der Gamutzuordnung, um die Gamut der Anzeige einzuschränken
Zusätzlich zum erneuten Interpretieren von Farbwerten, die dem Farbraum des Bildschirms entsprechen, müssen Sie den Fall behandeln, in dem die Anzeige nicht alle Farben in Ihrem Inhalt physisch reproduzieren kann; wenn die Farbskala des Inhalts größer als die Anzeige ist. Dieser Prozess wird als Gamutzuordnung bezeichnet.
Die Gamut-Zuordnung ist verlustbehaftet, da Sie einen Kompromiss darüber treffen müssen, wie Sie die größere Gamut des Inhalts annähern können. Die einfachste Methode ist colorimetrisch, wobei Farben, die sich innerhalb der Farbskala des Bildschirms befinden, beibehalten werden, und Farben, die sich außerhalb des Gamuts befinden, auf den nächsten In-Gamut-Wert abgeschnitten werden.
In einem profilbasierten ICC-Workflow wird die Gamutzuordnung in der Regel automatisch in der Farbverwaltungsbibliothek behandelt. Sie haben eine gewisse Kontrolle über das Zuordnungsverhalten, indem Sie die Renderingabsicht auswählen (siehe Renderingabsichtsmodi).
Anmerkung
Wenn Sie sich in einem erweiterten Farbworkflow befinden, empfehlen wir in der Regel nicht die Verwendung der wahrnehmungsbezogenen Renderingabsicht, weder für Die Quelle noch für das Ziel, da sie für SDR-Quellen und Ziele mit kleineren Farbskalan als die für HDR und einige WCG-Displays verwendeten entwickelt wurde; daher kann die Verwendung zu unerwartetem Verhalten führen.
Automatische Systemfarbverwaltung für Windows
Wenn "Erweiterte Farbe" aktiv ist, führt Windows die automatische Systemfarbverwaltung durch. Dadurch wird sichergestellt, dass der Farbinhalt Ihrer App auf dem Display korrekt reproduziert wird. Dadurch werden die erforderlichen Aktionen für Ihre App erheblich vereinfacht, obwohl erweiterte Apps möglicherweise weiterhin zusätzliche Verarbeitungen für maximale Farb- und Wahrnehmungsgenauigkeit ausführen. Weitere Informationen finden Sie unter Verwenden von DirectX mit erweiterter Farbe in high/standard dynamic range displays.
Abrufen der Farbeigenschaften des Displays
Erweiterte Farbfähige Apps sollten nicht direkt mit dem ANZEIGE-ICC-Profil interagieren. Stattdessen können Sie die Farbeigenschaften der Anzeige mit DisplayInformation::GetAdvancedColorInfo oder IDXGIOutput6abrufen.
Durchführen der Farbraumkonvertierung in den Farbraum des Bildschirms
Windows führt die Farbraumkonvertierung in den Farbraum des Bildschirms aus, der durch das aktuelle Standardfarbprofil bestimmt wird. Wenn kein Profil vorhanden ist, werden EDID-Farbmetriedaten verwendet. Ihre App erhält automatisch szenenverweisenden Farbverhalten, z. B. wenn Sie sRGB rot codiert als RGB(1, 0, 0)
rendern und auf einem Adobe RGB-Monitor anzeigen, wird es von Windows ordnungsgemäß als sRGB rot reproduziert. Erweiterte Farbfähige Apps sollten ihren Inhalt mit dem richtigen Farbraum markieren, um Windows mithilfe von IDXGISwapChain3::SetColorSpace1zu informieren. Für alle nicht erweiterten farbfähigen Apps, die in einem standardmäßigen ganzzahligen Pixelformat gerendert werden (z. B. 8-Bit RGBA), behandelt Windows die App explizit als sRGB. Wenn Sie AdobeRGB rot in einem Advanced Color-Szenario rendern möchten, müssen Sie RGB(1.158157,0,0)
in einer scRGB-markierten Oberfläche rendern (dies ist durch die Gamut der Anzeige eingeschränkt).
Durchführen der Gamutzuordnung, um die Gamut der Anzeige einzuschränken
Die Anzeigepipeline der GPU führt numerische Beschneidung in Out-of-Gamut-Farben durch. Wenn Ihre App eine komplexere Zuordnung verwenden möchte, müssen Sie dies selbst tun.
ICC-Profilstandardverhalten mit erweiterter Farbe
Die automatische Systemfarbverwaltung wirkt sich zwangsläufig auf die Art und Weise aus, wie sich vorhandene ICC-profilbasierte Apps verhalten, da sie viele Aktionen selbst ausführen, die jetzt vom Betriebssystem (BETRIEBSSYSTEM) behandelt werden. Windows wendet das Standardverhalten (siehe unten) auf ICC-profilbasierte Apps an. Dadurch wird sichergestellt, dass diese Apps kein falsches Verhalten aufweisen. Ohne weitere Arbeit erhalten sie jedoch keinen Zugriff auf die erweiterten Farbfunktionen.
Insbesondere ist Ihre ICC-profilbasierte App standardmäßig auf die sRGB-Gamut beschränkt, auch wenn der Monitor tatsächlich breitere Breite aufweist. Windows bietet auch einen ICC-Kompatibilitätshilfsprogramm, der Ihrer ICC-App Zugriff auf die gesamte Bandbreite der Anzeige gewähren kann. Weitere Informationen finden Sie im Abschnitt Anzeigen von ICC-Profilkompatibilitätshilfsprogramm in diesem Thema.
Abrufen der Farbeigenschaften des Displays
Wenn "Erweiterte Farbe" aktiv ist, werden alle Aufrufe der Farbprofilverwaltungs-APIs zum Abrufen des Standardprofils für eine Anzeige unabhängig davon, welche Profile tatsächlich installiert sind, "kein Profil" zurückgegeben. Standardmäßig sollte "kein Profil" als sRGB interpretiert werden.
Anzeige-ICC-Profile sind weiterhin gültig und werden mit Advanced Color verwendet, aber sie werden nur auf Systemebene verwendet, und die meisten Apps sollten nicht direkt mit ihnen interagieren. Die folgenden Informationen sind im Allgemeinen nur erforderlich, wenn Ihre App ein Dienstprogramm ist, das alle Anzeigeprofile aufzählt oder Profile erstellt/installiert.
Um dies zu erzwingen, fügt Windows das Konzept von STANDARD
und EXTENDED
Farbprofiluntertypen hinzu. Dies gilt für alle Farbprofilverwaltungs-APIs, die die COLORPROFILESUBTYPE-verwenden:
CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE
Anmerkung
STANDARD
und EXTENDED
Untertypen sind keine Im Profil selbst gespeicherte Eigenschaft; Sie gelten vielmehr für die Zuordnung des Profils auf eine Anzeige (d. a. wenn das Profil zur Profilzuordnungsliste der Anzeige hinzugefügt wird). Ein einzelnes Profil kann sowohl STANDARD
als auch EXTENDED
Untertypen für eine Anzeige zugeordnet werden, was bedeutet, dass es sowohl für Standard- als auch für Erweiterte Farbszenarien verfügbar wäre.
Anzeigen von Profilzuordnungen, die für die Verwendung in SDR vorgesehen sind – unabhängig davon, ob regulärer SDR- oder Advanced Color SDR -Wert einen Untertyp STANDARD
haben (thiat ist der Standardwert, wenn kein Wert angegeben ist). Anzeigeprofilzuordnungen für die Verwendung im HDR-Modus sind Untertyp EXTENDED
. Wenn Ihre App keinen Untertyp angibt, wird dies als STANDARD
interpretiert.
Alle getter-API mit COLORPROFILESUBTYPE geben nur Profile mit dem übereinstimmenden STANDARD
oder EXTENDED
Untertyp zurück. Wenn HDR beispielsweise aktiv ist, sind die einzigen Anzeigeprofile mit dem untertyp EXTENDED
für die Verwendung gültig, und STANDARD
Untertypprofile werden nicht verwendet.
Setter--APIs können den Untertyp angeben (STANDARD
ist die Standardeinstellung).
Durchführen der Farbraumkonvertierung in den Farbraum des Bildschirms
Da die ICC-Profilverwaltungs-APIs sRGB zurückgeben, wenn Advanced Color aktiv ist, wird Ihre ICC-profilbasierte App auf sRGB farbverwaltiert, und Windows reproduziert dies ordnungsgemäß als sRGB auf dem Display.
Durchführen der Gamutzuordnung, um die Gamut der Anzeige einzuschränken
Alle vorhandenen Gamutzuordnungsverhalten bleiben erhalten.
Anzeigen von ICC-Profilkompatibilitätshilfsprogramm
Wenn "Erweiterte Farbe" aktiv ist, stellt Windows eine Kompatibilitätshilfe für die Anzeige von ICC-Profilen bereit, die Zugriff auf die gesamte Bandbreite der Anzeige bieten. Auf diese Weise erhält Ihre App weiterhin genaue und breite Farbverbreiterfarben bis zur gemeldeten Funktion der Anzeige – die gleiche Funktionalität, die heute auf kalibrierten breitformatigen Monitoren im älteren, nicht erweiterten Farbmodus verfügbar ist. Ohne dieses Hilfsprogramm ist Ihre App auf das Standardverhalten beschränkt, das sRGB ist (siehe ICC-Profilstandardverhalten mit advanced Color).
Dieser Hilfsprogramm ist ab Windows 11 verfügbar. Es bietet keine weiteren Vorteile der erweiterten Farbe, einschließlich des Zugriffs auf eine höhere Genauigkeit/Bittiefe oder einen hohen dynamischen Bereich – Sie müssen Ihre App so ändern, dass sie erweitert farbfähig ist.
Aktivieren des ICC-Kompatibilitätshilfss für die Anzeige
Das Display ICC-Kompatibilitätshilfsprogramm ist pro App aktiviert. Sie ist standardmäßig nicht aktiviert.
Benutzer können sie für eine App aktivieren, indem Sie zur Registerkarte "Kompatibilität" der Eigenschaften der ausführbaren Datei wechseln und Legacyanzeige-ICC-Farbverwaltung verwendenauswählen. Das Kompatibilitätshilfsprogramm wird auf den gesamten Prozess angewendet und ist nur aktiv, wenn "Erweiterte Farbe" für die Anzeige aktiviert ist – es hat keine Auswirkungen auf eine standardmäßige SDR-Anzeige.
Windows aktiviert automatisch das Hilfsprogramm für einige beliebte Apps, die bekannt sind, die ICC-Farbprofilverwaltung verwenden.
Es gibt keine programmgesteuerte Möglichkeit, diese Kompatibilitätshilfshilfe für Ihre App zu aktivieren.
Abrufen der Farbeigenschaften des Displays
Wenn das Kompatibilitätshilfsprogramm aktiv ist, erstellt Windows ein synthetisches ICC-Profil mit den Windows Color System-Profilverwaltungsfunktionen, wenn Ihre STANDARD
App mithilfe der gleichen Daten, die die APIs für erweiterte Farbanzeigefunktionen auffüllt, ein synthetisches ICC-Profil abfragt. Die Daten des synthetischen Profils können aus einer Kombination des aktuellen Farbprofils, aus der EDID oder DisplayID der Anzeige oder aus anderen Quellen stammen.
Wenn Ihre App nach dem standardmäßigen EXTENDED
Farbprofil fragt, gibt dies an, dass Ihre App erweitert farbfähig ist, und sie erhält das tatsächliche EXTENDED
Profil.
Durchführen der Farbraumkonvertierung in den Farbraum des Bildschirms
Wenn das Kompatibilitätshilfsprogramm aktiv ist, wird von Ihrer App erwartet, dass die ICC-Farbverwaltung für das synthetische Anzeigeprofil verwendet wird. Windows geht davon aus, dass Ihre App auf diesen Farbraum ausgerichtet ist und die richtige Farbraumkonvertierung ausführt, um sicherzustellen, dass sie auf dem Display korrekt gerendert wird.
Die Farbraumkonvertierung gilt für den gesamten App-Prozess, sodass alle visuellen Inhalte Ihrer App als Ziel für den Farbraum des Bildschirms behandelt werden, auch wenn einige davon nicht farbverwaltet sind und nominal auf sRGB (z. B. UI) ausgerichtet sind. Die Farbraumkonvertierung wird auch unabhängig von der Grafik-API (GDI, DirectX, XAML usw.), dem Pixelformat oder anderen Merkmalen des gerenderten Inhalts angewendet.
Durchführen der Gamutzuordnung, um die Gamut des Displays einzuschränken
Alle vorhandenen Gamutzuordnungsverhalten bleiben erhalten.
Änderungen des Benutzerverhaltens
Benutzer können überprüfen, ob die ICC-Kompatibilitätshilfe für eine ausführbare Datei aktiv ist, indem Sie die Registerkarte "Kompatibilitätseigenschaften" überprüfen. Wenn Ihre App Informationen zum Standardanzeige-ICC-Profil anzeigt, sehen Benutzer, dass es sich um ein synthetisches Profil handelt. Der beschreibende Inhalt des Profils (einschließlich Name) ist ein Implementierungsdetail.
Das tatsächliche Farbverhalten sollte mit dem identisch sein, wenn "Erweiterte Farbe" deaktiviert ist. In beiden Fällen rendert Ihre App genaue Farben, die auf den vollständigen Farbverlauf der Anzeige zugreifen können, wie im ICC-Profil beschrieben.