Udostępnij przez


Efekt odblaskowego oświetlenia z daleka

Użyj efektu oświetlenia dalekiego widma, aby utworzyć obraz, który wydaje się być powierzchnią odbijającą, gdzie źródło światła wydaje się pochodzić z długiej odległości (na przykład słońce lub światła narzutowe). Ten efekt używa kanału alfa jako mapy wysokości i oświetla obraz światłem z odległego źródła.

Kolor mapy bitowej danych wyjściowych jest wynikiem koloru światła, położenia światła i geometrii powierzchni. Wyjście kanału alfa dla każdego piksela z oświetleniem zwierciadlanym jest maksymalną wartością danych wyjściowych czerwonego, zielonego i niebieskiego kanału dla tego piksela.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1DistantSpecular.

Przykładowy obraz

Ten przykład pokazuje obrazy wejściowe i wyjściowe efektu odległego oświetlenia zwierciadlanego.

przykładowy zrzut ekranu przedstawiający obrazy wejściowe i wyjściowe efektu odległego oświetlenia lustrzanego.

Końcowa mapa bitowa danych wyjściowych można obliczyć przy użyciu następujących równań.

obliczenie wyjściowej mapy bitowej

gdzie

ok? = stała oświetlenia widmowego.
normalnego symbolu powierzchni. = wektor jednostki normalnej powierzchni.
symbol wektora pośredniego. = "pośredni" wektor jednostkowy między wektorem jednostkowym oka a wektorem jednostkowym światła.
Cr, Cg, Cb = jasny kolor w składnikach RGB.

Odległe źródło światła

Na poniższej ilustracji przedstawiono przykład kierunku światła z odległego źródła światła.

odległe źródło światła

Efekt używa parametrów azymutu i elewacji do obliczenia wektora światła , wektora przy użyciu następujących równań:

obliczenia wektora światła

gdzie Light?, Lightyi Lightz to wartości położenia światła wejściowego.

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
Azymut
D2D1_DISTANTSPECULAR_PROP_AZIMUTH
Kąt kierunku źródła światła w płaszczyźnie XY względem osi X w kierunku przeciwnym do ruchu wskazówek zegara. Jednostki są w stopniach i muszą należeć do zakresu od 0 do 360 stopni.
Typ jest FLOAT.
Wartość domyślna to 0,0f.
Podniesienie
D2D1_DISTANTSPECULAR_PROP_ELEVATION
Kąt kierunku źródła światła w płaszczyźnie YZ względem osi Y w kierunku przeciwnym do ruchu wskazówek zegara. Jednostki są w stopniach i muszą należeć do zakresu od 0 do 360 stopni.
Typ to FLOAT.
Wartość domyślna to 0,0f.
SpecularExponent
D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT
Wykładnik składowej specularnej w równaniu oświetlenia Phong. Większa wartość odpowiada bardziej refleksyjnej powierzchni. Wartość jest bez jednostek i musi mieścić się w przedziale od 1,0 do 128. Typ jest FLOAT.
Wartość domyślna to 1.0f.
SpecularConstant
D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT
Stosunek odbicia widmowego do światła przychodzącego. Wartość jest bezwymiarowa i musi mieścić się w przedziale od 0 do 10 000. Typ to typ danych FLOAT.
Wartość domyślna to 1.0f.
SurfaceScale
D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE
Współczynnik skalowania w kierunku Z. Wartość jest bez jednostek i musi należeć do zakresu od 0 do 10 000. Typ jest FLOAT.
Wartość domyślna to 1.0f.
Kolor
D2D1_DISTANTSPECULAR_PROP_COLOR
Kolor światła przychodzącego. Ta właściwość jest wyrażona jako D2D1_VECTOR_3F (R, G, B) i używana do obliczania LR, LG, LB. Typ jest D2D1_VECTOR_3F.
Wartość domyślna to {1.0f, 1.0f, 1.0f}.
KernelUnitLength
D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Rozmiar elementu w jądrze Sobela używanego do generowania normali powierzchni w kierunku X i Y. Ta właściwość to D2D1_VECTOR_2F (jednostkowa długość jądra X, jednostkowa długość jądra Y) i jest wyrażona w (pikselach niezależnych od urządzenia (DIPs)/jednostkach jądra). Efekt używa interpolacji dwuliniowej do skalowania mapy bitowej w celu dopasowania rozmiaru elementów jądra. Typ jest D2D1_VECTOR_2F.
Wartość domyślna to {1.0f, 1.0f}.
Tryb skalowania
D2D1_DISTANTSPECULAR_PROP_SCALE_MODE
Tryb interpolacji używany przez efekt do skalowania obrazu do odpowiedniej długości jednostki jądra. Istnieje sześć trybów skalowania, które wahają się w zakresie jakości i szybkości.
Typ to D2D1_DISTANTSPECULAR_SCALE_MODE.
Wartość domyślna to D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Tryby skalowania

Wyliczenie Opis
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Próbkuje najbliższy pojedynczy punkt i używa go. Ten tryb używa mniej czasu przetwarzania, ale generuje obraz o najniższej jakości.
D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR Używa próbki czterech punktów i interpolacji liniowej. Ten tryb generuje obraz o wyższej jakości niż najbliższy sąsiad.
D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC Używa 16 przykładowego jądra sześciennego do interpolacji. Ten tryb używa najbardziej czasu przetwarzania, ale generuje obraz o wyższej jakości.
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Używa 4 próbek liniowych w jednym pikselu do dobrego anty aliasowania krawędzi. Ten tryb jest dobry do minimalnego skalowania obrazów o niewielkiej liczbie pikseli.
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC Używa filtrowania anisotropowego do próbkowania wzorca zgodnie z przekształconym kształtem mapy bitowej.
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC (wysokiej jakości tryb skalowania sześciennego) Używa sześciennego jądra wysokiej jakości o zmiennym rozmiarze do wykonania wstępnego zmniejszenia obrazu, jeśli skalowanie w dół jest uwzględnione w macierzy transformacji. Następnie używa trybu interpolacji sześciennych dla końcowych danych wyjściowych.

Notatka

Jeśli nie wybierzesz trybu, efekt domyślnie zostanie ustawiony na D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib

ID2D1Effect