Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |