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.
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
- odległe źródło światła
- właściwości Efekt
- tryby skalowania
- Wymagania
- Tematy pokrewne
Przykładowy obraz
Ten przykład pokazuje obrazy wejściowe i wyjściowe efektu odległego oświetlenia zwierciadlanego.
Końcowa mapa bitowa danych wyjściowych można obliczyć przy użyciu następujących równań.
gdzie
- ok? = stała oświetlenia widmowego.
= wektor jednostki normalnej powierzchni.
= "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.
Efekt używa parametrów azymutu i elewacji do obliczenia wektora światła
przy użyciu następujących równań:
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 |