Udostępnij za pośrednictwem


Efekt oświetlenia punktowego z połyskiem

Użyj efektu oświetlenia typu spot-specular, aby utworzyć obraz, który wydaje się być powierzchnią odbijającą, gdzie źródło światła jest ograniczone do skierowanej stożki światła. Ten efekt używa kanału alfa jako mapy wysokości i oświetla obraz źródłem światła punktowego.

Kolor mapy bitowej wyjściowej jest wynikiem koloru światła, pozycji światła, kierunku stożka i geometrii powierzchni zgodnie z specularną częścią modelu oświetlenia Phong. Wyjście kanału alfa dla każdego piksela z oświetleniem widmowym jest maksymalną wartością danych wyjściowych czerwonego, zielonego i niebieskiego kanału dla tego piksela.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1SpotSpecular.

Przykładowy obraz

W tym przykładzie przedstawiono obrazy wejściowe i wyjściowe efektu oświetlenia typu spot-specularnego.

przykład zrzutu ekranu efektu.

Światło widmowe odnosi się do światła, które odbija się w określonym kierunku.

diagram wektorów używanych do obliczenia danych wyjściowych oświetlenia zwierciadlanego dla mapy bitowej.

Efekt oblicza końcowe wartości pikseli wyjściowych przy użyciu poniższych równań:

równania pikseli wyjściowych.

gdzie

definicje zmiennych.

Źródło światła typu spot

Źródło światła punktowego emituje światło w stożku w określonym kierunku i nie emituje światła poza stożkiem.

Źródło światła punktowego oblicza wektor światła L i wektor pośredni H w taki sam sposób, jak efekt punktowo-zwierciadlany.

Efekt oblicza kolor światła Lr, Lg, Lb, jako funkcję położenia źródła światła, jak pokazano w równaniach tutaj:

równanie dla źródła światła typu spot

Wektor symbol wektora światła. jest definiowana przez następujące równania:

równanie : wektor

Symbol wektora t jest definiowany przez następujące równania:

równanie : wektor 2

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
Pozycja Światła
Pozycja światła D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
Położenie światła punktu źródła światła. Właściwość jest D2D1_VECTOR_3F zdefiniowana jako (x, y, z). Jednostki są w pikselach niezależnych od urządzenia (DIPs) i są niezwiązane. Typ jest D2D1_VECTOR_3F.
Wartość domyślna to {0.0f, 0.0f, 0.0f}.
Punkty
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Gdzie koncentruje się światło punktowe? Właściwość jest widoczna jako D2D1_VECTOR_3F (x, y, z). Jednostki są w DIP-ach, a wartości są nieograniczone. Typ jest D2D1_VECTOR_3F.
Wartość domyślna to {0.0f, 0.0f, 0.0f}.
Skupienie
D2D1_SPOTSPECULAR_PROP_FOCUS
Fokus światła punktowego. Ta właściwość jest bezjednostkowa i jest zdefiniowana w zakresie od 0 do 200. Typ jest „FLOAT”.
Wartość domyślna to 1.0f.
Ograniczenie kąta stożka
D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE (Kąt ograniczający stożek)
Kąt stożka, który ogranicza obszar, w którym jest rzutowane światło. Żadne światło nie jest rzutowane poza stożek. Kąt graniczny stożka jest kątem między osią reflektora punktowego (oś między LightPosition a PointsAt właściwości) a stożkiem światła punktowego. Ta właściwość jest zdefiniowana w stopniach i musi należeć do zakresu od 0 do 90 stopni. Typ jest FLOAT.
Wartość domyślna to 90.0f.
SpecularExponent
D2D1_PARAMETR_PUNKTOWY_BŁYSKU_WSPÓŁCZYNNIK_BŁYSZCZENIA
Wykładnik terminu specularnego w równaniu oświetlenia Phong. Większa wartość odpowiada bardziej refleksyjnej powierzchni. Ta wartość jest bez jednostki i musi należeć do przedziału od 1,0 do 128. Typ jest FLOAT.
Wartość domyślna to 1.0f.
SpecularConstant
D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT
Stosunek odbicia widmowego do światła przychodzącego. Wartość jest bez jednostki i musi być pomiędzy 0 a 10 000. Typ jest FLOAT.
Wartość domyślna to 1.0f.
SurfaceScale
D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE
Współczynnik skalowania w kierunku Z do generowania mapy wysokości. Wartość jest bezwymiarowa i musi zawierać się w przedziale od 0 do 10 000. Typ to rodzaj FLOAT.
Wartość domyślna to 1.0f.
Kolor
D2D1_SPOTSPECULAR_PROP_COLOR
Kolor światła przychodzącego. Ta właściwość jest uwidoczniona jako wektor 3 (R, G, B) i używana do obliczania LR, LG, LB. Typ to jest D2D1_VECTOR_3F.
Wartość domyślna to {1.0f, 1.0f, 1.0f}.
DługośćJednostkiKernela
D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Rozmiar elementu w jądrze Sobela używanym do generowania normalnych powierzchni w kierunkach X i Y. Ta właściwość odpowiada wartościom dx i dy w gradiencie Sobela. Ta właściwość to D2D1_VECTOR_2F (długość jednostki jądra X, długość jednostki jądra Y) i jest zdefiniowana w (DIPs/Kernel Unit). 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_SPOTSPECULAR_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. Aby uzyskać więcej informacji, zobacz Tryby skalowania.
Typ jest D2D1_SPOTSPECULAR_SCALE_MODE.
Wartość domyślna to D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR.

Tryby skalowania

Wyliczenie Opis
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_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_SPOTSPECULAR_SCALE_MODE_CUBIC Używa sześciennego jądra z 16 próbkami do interpolacji. Ten tryb używa najbardziej czasu przetwarzania, ale generuje obraz o wyższej jakości.
D2D1_SPOTSPECULAR_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 skalowania w dół o niewielkie wartości na obrazach z niewielką liczbą pikseli.
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC Używa filtrowania anisotropowego do próbkowania wzorca zgodnie z przekształconym kształtem mapy bitowej.
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Używa jądra sześciennego wysokiej jakości o zmiennej wielkości, aby przeprowadzić wstępne zmniejszenie skali obrazu, jeśli skalowanie w dół jest częścią macierzy transformacji. Następnie używa trybu interpolacji sześciennych dla końcowych danych wyjściowych.

Nota

Jeśli nie wybierzesz trybu, efekt będzie domyślnie ustawiony na D2D1_SPOTSPECULAR_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