Udostępnij przez


Efekt oświetlenia odległego i rozproszonego

Użyj efektu oświetlenia odległego, aby utworzyć obraz, który wydaje się być nieodświetlającą powierzchnią, gdzie źródło światła wydaje się pochodzić z długiej odległości (takiej jak słońce lub światła narzutowe), a światło jest rozpraszane we wszystkich kierunkach. Ten efekt używa kanału alfa jako mapy wysokości i oświetla obraz z odległym źródłem światła.

Kolor mapy bitowej danych wyjściowych jest wynikiem koloru światła, położenia światła i geometrii powierzchni obrazu. Wyjście kanału alfa dla każdego piksela z oświetleniem rozproszonym jest zawsze 1.0.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1DistantDiffuse.

Przykładowy obraz

W tym przykładzie przedstawiono obrazy wejściowe i wyjściowe efektu oświetlenia rozproszonego odległego.

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

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
Azymut
D2D1_DISTANTDIFFUSE_PROP_AZYMUT
Kąt źródła światła w płaszczyźnie XY względem osi X, mierzony przeciwnie 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_DISTANTDIFFUSE_PROP_WZNIESIENIE
Kąt kierunku źródła światła w płaszczyźnie YZ względem osi Y przeciwnie do ruchu wskazówek zegara. Jednostki są w stopniach i muszą należeć do zakresu od 0 do 360 stopni.
Typ to liczba zmiennoprzecinkowa (FLOAT).
Wartość domyślna to 0,0f.
Dyfuzorconstant
D2D1_DISTANTDIFFUSE_PROP_DIFFUSE_CONSTANT
Stosunek odbicia rozproszonego do ilości światła przychodzącego. Ta właściwość musi należeć do przedziału od 0 do 10 000 i jest bez jednostek.
Typ to „FLOAT”.
Wartość domyślna to 1.0f.
SurfaceScale
D2D1_DISTANTDIFFUSE_PROP_SURFACE_SCALE
Współczynnik skalowania w kierunku Z. Skala powierzchni nie ma jednostek i musi mieścić się w zakresie od 0 do 10 000.
Typ jest FLOAT.
Wartość domyślna to 1.0f.
Kolor
D2D1_DISTANTDIFFUSE_PROP_COLOR
Kolor światła przychodzącego. Ta właściwość jest uwidoczniona jako D2D1_VECTOR_3F (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}.
KernelUnitLength
D2D1_DISTANTDIFFUSE_PROP_KERNEL_UNIT_LENGTH
Rozmiar elementu w jądrze Sobela używanym do generowania powierzchni normalnej w kierunku X i Y. Ta właściwość przypisuje wartości dx i dy do gradientu Sobela. Ta właściwość to D2D1_VECTOR_2F (długość jednostki kernela X, długość jednostki kernela Y) i jest zdefiniowana w (pikselach niezależnych od urządzenia (ang. DIPs)/Jednostkach kernela). 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_DISTANTDIFFUSE_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 jest D2D1_DISTANTDIFFUSE_SCALE_MODE.
Wartość domyślna to D2D1_DISTANTDIFFUSE_SCALE_MODE_LINEAR.

Tryby skalowania

Wyliczenie Opis
D2D1_DISTANTDIFFUSE_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_DISTANTDIFFUSE_SCALE_MODE_LINEAR (tryb skali liniowej) 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_DISTANTDIFFUSE_SCALE_MODE_CUBIC Używa 16-próbkowego jądra sześciennego do interpolacji. Ten tryb używa najbardziej czasu przetwarzania, ale generuje obraz o wyższej jakości.
D2D1_DISTANTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR Używa 4 próbek liniowych w jednym pikselu do dobrego antyaliasingu krawędzi. Ten tryb jest dobry do skalowania w dół w niewielkim stopniu na obrazach z niewielką liczbą pikseli.
D2D1_DISTANTDIFFUSE_SCALE_MODE_ANISOTROPIC Używa filtrowania anisotropowego do próbkowania wzorca zgodnie z przekształconym kształtem mapy bitowej.
D2D1_DISTANTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC Używa wysokiej jakości sześciennego jądra o zmiennej wielkości, aby wstępnie zmniejszyć rozmiar obrazu, jeśli skala w dół jest uwzględniona w macierzy transformacji. Następnie używa trybu interpolacji sześciennych dla końcowych danych wyjściowych.

Notatka

Jeśli nie wybierzesz trybu, domyślnie zostanie ustawiony efekt D2D1_DISTANTDIFFUSE_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