Matematyka oświetlenia (Direct3D 9)
Model oświetlenia Direct3D obejmuje oświetlenie otoczenia, rozproszone, lustrzane i emisyjne. Jest to wystarczająca elastyczność, aby rozwiązać szeroką gamę sytuacji oświetleniowych. Łączna ilość światła w scenie jest nazywana oświetleniem globalnym i obliczana przy użyciu następującego równania.
Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light
oświetlenie otoczenia (Direct3D 9) jest stałym oświetleniem. Jest stała we wszystkich kierunkach i koloruje wszystkie piksele obiektu w taki sam sposób. Szybko można obliczyć, ale pozostawia obiekty wyglądające płasko i nierealistyczne. Aby zobaczyć, jak oświetlenie otoczenia jest obliczane przez Direct3D, zobacz Oświetlenie otoczenia (Direct3D 9).
oświetlenie rozproszone (Direct3D 9) zależy zarówno od kierunku światła, jak i powierzchni obiektu normalnego. Zmienia się na powierzchni obiektu w wyniku zmiany kierunku światła i zmieniającego się wektora liczbowego powierzchni. Obliczanie rozproszonego światła trwa dłużej, ponieważ zmienia się dla każdego wierzchołka obiektu, jednak zaletą jego użycia jest to, że zacienia obiekty i nadaje im trójwymiarową (3D) głębię. Aby zobaczyć, jak rozproszone oświetlenie jest obliczane w direct3D, zobacz Oświetlenie rozproszone (Direct3D 9).
oświetlenie zwierciadlane (Direct3D 9) identyfikuje jasne refleksy zwierciadlane, które występują, gdy światło pada na powierzchnię obiektu i odbija się z powrotem w kierunku kamery. Jest bardziej intensywny niż rozproszone światło i spada szybciej na powierzchni obiektu. Obliczanie oświetlenia widmowego trwa dłużej niż oświetlenie rozproszone, jednak zaletą korzystania z niego jest dodanie znaczących szczegółów do powierzchni. Aby zobaczyć, jak jest obliczane oświetlenie widmowe w trybie Direct3D, zobacz Specular Lighting (Direct3D 9).
oświetlenie emisyjne (Direct3D 9) to światło emitowane przez obiekt; na przykład poświata. Aby zobaczyć, jak obliczane jest oświetlenie emisyjne w Direct3D, zobacz Emissive Lighting (Direct3D 9).
Realistyczne oświetlenie można osiągnąć przez zastosowanie każdego z tych typów oświetlenia do sceny 3D. Wartości obliczane dla otoczenia, emisyjnego i rozproszonych składników są przedstawiane jako kolor rozproszony wierzchołka; wartość składnika oświetlenia widmowego jest wyprowadzana jako kolor wierzchołka widmowego. Wartości światła otoczenia, rozproszonego i odbitego mogą być wpływane przez tłumienie i współczynnik reflektora danego światła. Aby uzyskać więcej informacji o sposobie działania tłumienia, zobacz Attenuation and Spotlight Factor (Direct3D 9).
Aby osiągnąć bardziej realistyczny efekt oświetlenia, należy dodać więcej świateł; jednak renderowanie sceny trwa dłużej. Aby osiągnąć wszystkie efekty, które chce projektant, niektóre gry używają większej mocy procesora CPU niż jest powszechnie dostępna. W tym przypadku zwykle zmniejsza się liczbę obliczeń oświetlenia do minimum przy użyciu map oświetlenia i map środowiskowych w celu dodania oświetlenia do sceny podczas korzystania z map tekstur.
Oświetlenie jest obliczane w przestrzeni kamery. Aby zobaczyć, jak są obliczane przekształcenia oświetlenia, zobacz Przekształcenia przestrzeni aparatów (Direct3D 9). Zoptymalizowane oświetlenie można obliczyć w przestrzeni modelu, gdy istnieją specjalne warunki: normalne wektory są już znormalizowane (D3DRS_NORMALIZENORMALS ma wartość True), mieszanie wierzchołków nie jest potrzebne, macierze przekształcenia są ortogonalne itd.
Tematy pokrewne