Udostępnij za pośrednictwem


Typy światła (Direct3D 9)

Właściwość typu światła definiuje typ używanego źródła światła. Typ światła jest ustawiany przy użyciu wartości z wyliczenia D3DLIGHTTYPE C++ w elemencie Type struktury D3DLIGHT9 światła. Istnieją trzy typy świateł w trybie Direct3D — światła punktowe, reflektory i światła kierunkowe. Każdy typ oświetla obiekty w scenie inaczej, z różnymi poziomami obciążenia obliczeniowego.

Światło punktowe

Światła punktowe mają kolor i położenie w scenie, ale nie ma jednego kierunku. Dają światło równomiernie we wszystkich kierunkach, jak pokazano na poniższej ilustracji.

ilustracja światła punktowego

Żarówka jest dobrym przykładem światła punktowego. Światła punktowe mają wpływ na tłumienie i zakres oraz oświetlają siatkę na wierzchołku. Podczas oświetlenia funkcja Direct3D używa położenia światła punktowego w przestrzeni światowej i współrzędnych wierzchołka oświetlonego w celu uzyskania wektora kierunku światła i odległości, z jaką poruszało się światło. Oba są używane, wraz z normalnym wierzchołkiem, aby obliczyć wkład światła do oświetlenia powierzchni.

Światło kierunkowe

Światła kierunkowe mają tylko kolor i kierunek, a nie położenie. Emitują światło równoległe. Oznacza to, że wszystkie światło generowane przez światła kierunkowe przechodzi przez scenę w tym samym kierunku. Wyobraź sobie światło kierunkowe jako źródło światła w niemal nieskończonej odległości, takie jak słońce. Światła kierunkowe nie mają wpływu na tłumienie ani zakres, więc określony kierunek i kolor są jedynymi czynnikami branymi pod uwagę podczas obliczania kolorów wierzchołków Direct3D. Ze względu na niewielką liczbę czynników oświetlenia są to najmniej obliczeniowe światła do użycia.

Jupiter

W centrum uwagi mają kolor, położenie i kierunek, w którym emitują światło. Światło emitowane z reflektorów składa się z jasnego stożka wewnętrznego i większego stożka zewnętrznego, z intensywnością światła malejącą między nimi, jak pokazano na poniższej ilustracji.

ilustracja w centrum uwagi z stożkiem wewnętrznym i stożkiem zewnętrznym

W centrum uwagi wpływa spadek, zatłoczenie i zakres. Te czynniki, a także odległość podróżować światła do każdego wierzchołka, są rysowane podczas przetwarzania efektów oświetlenia dla obiektów w scenie. Obliczanie tych efektów dla każdego wierzchołka sprawia, że w centrum uwagi najbardziej czasochłonne są wszystkie światła w trybie Direct3D.

Struktura D3DLIGHT9 C++ zawiera trzy elementy członkowskie, które są używane tylko przez w centrum uwagi. Te elementy członkowskie - Falloff, Theta i Phi - kontrolują, jak duże lub małe są wewnętrzne i zewnętrzne stożki obiektu w centrum uwagi oraz jak światło spada między nimi.

Wartość Theta jest kątem radiana wewnętrznej stożki reflektora, a wartość Phi jest kątem zewnętrznego stożka światła. Wartość Falloff określa, jak intensywność światła zmniejsza się między zewnętrzną krawędzią stożka wewnętrznego a wewnętrzną krawędzią stożka zewnętrznego. Większość aplikacji ustawia wartość Falloff na 1.0, aby utworzyć rezerwę, która występuje równomiernie między dwoma stożków, ale można ustawić inne wartości zgodnie z potrzebami.

Na poniższej ilustracji przedstawiono relację między wartościami tych elementów członkowskich a sposobem, w jaki mogą one wpływać na wewnętrzne i zewnętrzne stożki światła w centrum uwagi.

ilustracji, w jaki sposób wartości phi i theta odnoszą się do stożków w centrum uwagi

Reflektory emitują stożek światła, który ma dwie części: jasny stożek wewnętrzny i stożek zewnętrzny. Światło jest najjaśniejsze w stożku wewnętrznym i nie jest obecne poza stożkiem zewnętrznym, z intensywnością światła tłumienia między dwoma obszarami. Ten typ tłumienia jest często określany jako spadek.

Ilość światła odbieranego wierzchołka zależy od lokalizacji wierzchołka w wewnętrznych lub zewnętrznych stożków. Funkcja Direct3D oblicza produkt kropkowy wektora kierunkowego w centrum uwagi (L) i wektor z światła do wierzchołka (D). Ta wartość jest równa cosinusowi kąta między dwoma wektorami i służy jako wskaźnik położenia wierzchołka, które można porównać do kątów stożka światła w celu określenia, gdzie wierzchołek może znajdować się w wewnętrznych lub zewnętrznych stożkach. Poniższa ilustracja przedstawia graficzną reprezentację skojarzenia między tymi dwoma wektorami.

ilustracja wektora kierunku w centrum uwagi i wektor z wierzchołka do centrum uwagi

System porównuje tę wartość z cosinusem kątów wewnętrznej i zewnętrznej stożki w centrum uwagi. W strukturze D3DLIGHT9 światła składowe Theta i Phi reprezentują całkowite kąty stożka dla stożków wewnętrznych i zewnętrznych. Ponieważ zatłoczenie występuje, gdy wierzchołek staje się bardziej odległy od środka oświetlenia (a nie przez całkowity kąt stożka), środowisko uruchomieniowe dzieli te kąty stożka na pół przed obliczeniem ich cosinusów.

Jeśli kropka wektorów L i D jest mniejsza lub równa cosinie zewnętrznego kąta stożka, wierzchołek leży poza stożek zewnętrzny i nie otrzymuje światła. Jeśli kropka produktu L i D jest większa niż cosinus kąta wewnętrznego stożka, wierzchołek znajduje się w stożku wewnętrznym i otrzymuje maksymalną ilość światła, nadal biorąc pod uwagę tłumienie na odległość. Jeśli wierzchołek znajduje się gdzieś między dwoma regionami, falloff jest obliczany przy użyciu następującego równania.

formułę dla intensywności światła w wierzchołku, po opadaniu

Gdzie:

  • I f jest intensywność światła po upadku
  • Alfa to kąt między wektorami L i D
  • Theta jest kątem stożka wewnętrznego
  • Phi jest kątem stożka zewnętrznego
  • p to spadek

Ta formuła generuje wartość z zakresu od 0,0 do 1,0, która skaluje intensywność światła na wierzchołku, aby uwzględnić spadek. Zatłoczenie jako czynnik odległości wierzchołka od światła jest również stosowane. Na poniższym wykresie pokazano, jak różne wartości opadu mogą wpływać na krzywą spadku.

wykres intensywności światła a odległość wierzchołka od światła

Wpływ różnych wartości opadu na rzeczywiste oświetlenie jest subtelny, a niewielka kara za wydajność jest naliczana przez kształtowanie krzywej spadku z wartościami spadkowymi innymi niż 1,0. Z tych powodów ta wartość jest zazwyczaj ustawiona na wartość 1.0.

światła i materiały