Efekt regulacji białego poziomu
Ten efekt umożliwia liniowe skalowanie białego poziomu obrazu. Jest to szczególnie przydatne w przypadku konwersji między przestrzenią luminance skierowaną do wyświetlania a przestrzenią luminance skierowaną do sceny lub odwrotnie.
Właściwości tego efektu są identyfikowane przez wyliczenie D2D1_WHITELEVELADJUSTMENT_PROP, a identyfikator CLSID jest CLSID_D2D1WhiteLevelAdjustment.
Właściwości efektu
Nazwa wyświetlana i wyliczenie indeksu | Typ i wartość domyślna | Opis |
---|---|---|
InputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_INPUT_WHITE_LEVEL | SPŁAWIK | Biały poziom obrazu wejściowego w nitach. |
OutputWhiteLevel, D2D1_WHITELEVELADJUSTMENT_PROP_OUTPUT_WHITE_LEVEL | SPŁAWIK | Biały poziom obrazu wyjściowego w nitach. |
Uwagi
Efekt ten ma być połączony z efektu mapy tonu HDR, aby umożliwić renderowanie obrazów HDR w Direct2D z odpowiednim zarządzaniem kolorami i mapowaniem tonów. Aby uzyskać więcej informacji, zobacz uwagi tego tematu. Efekty mają na celu dowolną strukturę, która chce zapewnić najlepsze w klasie środowisko wyświetlania obrazów HDR, które obsługuje wszystkie formaty obrazów Windows HDR i dostosowuje się do możliwości wyświetlacza (niezależnie od tego, czy jest to HDR, czy WCG/SDR).
W systemie Windows zakłada się, że cała zawartość SDR/WCG znajduje się w przestrzeni luminance, co oznacza, że biały poziom zawartości powinien zostać przeskalowany w górę do poziomu białego ekranu, zanim zostanie ostatecznie przedstawiony. Jednak nie zawsze jest to odpowiedzialność twojej aplikacji za wykonanie tej czynności. Natomiast zakłada się, że zawartość HDR znajduje się w przestrzeni lumincji, co oznacza, że nie powinno być ostatecznie skalowane w celu dopasowania do białego poziomu wyświetlacza. Oznacza to, że aplikacja może wymagać przeprowadzenia skalowania w pewnych okolicznościach podczas renderowania zawartości HDR, aby upewnić się, że jest to wynik netto.
Gdy komputer z systemem Windows jest w trybie SDR lub WCG, pulpit składa się w przestrzeni luminance o określonej wyświetlaczu. Ale jeśli komputer stacjonarny z systemem Windows jest w trybie HDR, kompozycja pulpitu odbywa się w przestrzeni luminance określonej w scenie. Oznacza to, że menedżer okien klasycznych (DWM) wykonuje korekty luminance (często nazywane SDRBoost) dla 8-bitowych powierzchni kompozycji, co upraszcza aplikację w tym przypadku. Mimo to automatyczne zwiększenie oznacza, że rola aplikacji w konwersji z jednej przestrzeni luminance na drugą zależy od formatu kompozycji używanego przez aplikację do prezentowania jej zawartości.
W poniższej tabeli opisano przypadki, w których aplikacja powinna i nie powinna wykonywać korekty na poziomie białym, a także tego, co powinno być to dostosowanie. Ogólnie rzecz biorąc, korekta zależy od trzech czynników.
- Przestrzeń kolorów zawartości wejściowej. Niezależnie od tego, czy zawartość wejściowa zawiera wartości luminance o wysokim zakresie dynamicznym (HDR), czy też nie. Zawartość WCG zachowuje się tak samo jak SDR dla zachowania luminance.
- Format kompozycji. Format pikseli powierzchni docelowej prezentowanej dwM — na przykład łańcuch wymiany lub powierzchnię kompozycji . Podczas renderowania przy użyciu direct2D jest to UINT8 lub FP16.
- Zaawansowany tryb kolorów pulpitu. Czy maszyna DWM jest uruchomiona w trybie SDR, WCG lub HDR dla bieżącego wyświetlacza. Uzyskaj te informacje za pośrednictwem DXGI_OUTPUT_DESC1::ColorSpace lub AdvancedColorInfo.CurrentAdvancedColorKind.
Na podstawie tych trzech czynników należy ustawić odpowiednie wartości dla właściwości InputWhiteLevel
i OutputWhiteLevel
.
Zawartość wejściowa | Format kompozycji | Zaawansowany tryb kolorów | InputWhiteLevel | OutputWhiteLevel |
---|---|---|---|---|
SDR/WCG | UINT8 | Jakikolwiek | N/A | N/A |
SDR/WCG | FP16 | SDR/WCG | N/A | N/A |
SDR/WCG | FP16 | HDR | SDRWhite | 80 |
HDR | Jakikolwiek | SDR/WCG | 80 | DXGI_OUTPUT_DESC1::MaxLuminance |
HDR | UINT8 | HDR | 80 | SDRWhite |
HDR | FP16 | HDR | N/A | N/A |
W tabeli wartość 80 jest białym poziomem odniesienia w nitach dla zawartości sRGB lub scRGB. W tym celu można użyć stałej D2D1_SCENE_REFERRED_SDR_WHITE_LEVEL, która jest zdefiniowana w d2d1effects_2.h
. Wartość SDRWhite
to liczba nitów, których wyświetlacz powinien używać do wyświetlania białej zawartości sRGB. Tę wartość można pobrać, korzystając z właściwości AdvancedColorInfo.SdrWhiteLevelInNits. Wartość N/A oznacza, że korekta na poziomie białym nie jest używana w tym scenariuszu; Możesz usunąć efekt z grafu lub ustawić wartości dla no-op.
Należy pamiętać, że w przypadkach, gdy aplikacja nie wymaga dostosowania poziomu białego, DWM lub wyświetlacz może obsługiwać konwersję z przestrzeni lumincji do przestrzeni lumincji od określonej przez scenę.
- W trybie SDR/WCG konwersja odbywa się po kompozycji DWM i dotyczy całej zawartości przedstawionej na tym ekranie. Wyświetlacz niejawnie wykonuje tę konwersję.
- W trybie HDR konwersja jest wykonywana automatycznie przez DWM przed kompozycją, tak długo, jak powierzchnia kompozycji aplikacji jest SDR.
Wymagania
Wymaganie | Wartość |
---|---|
Minimalny obsługiwany klient | Windows 10, wersja 1809 (10.0; Kompilacja 17763) [aplikacje klasyczne | Aplikacje platformy UWP] |
Nagłówek | d2d1effects_2.h |
Biblioteka | d2d1.lib, dxguid.lib |