Udostępnij za pośrednictwem


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.

  1. 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.
  2. 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.
  3. 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