M. Kupczyk - Oświetlenie w grach

Transkrypt

M. Kupczyk - Oświetlenie w grach
O świetlenie w grach komputerowych. Deferred Shading.
Mateusz Kupczyk1
1
Wydział Inżynierii Mechanicznej i Informatyki
Kierunek informatyka, Rok I
Politechnika Częstochowska
[email protected]
Streszczenie
Celem niniejszej pracy jest przedstawienie roli o świetlenia w grach
trójwymiarowych oraz ogólne zaprezentowanie kilku najpopularniejszych
sposobów oświetlenia sceny (z użyciem lightmap, per vertex i per pixel).
Głównym zamierzeniem jest natomiast porównanie tych technik z technik ą
relatywnie nową - "deferred shading", która reprezentuje odmienne podej ście w
renderowaniu oświetlenia i dzięki odpowiedniej mocy obliczeniowej dzisiejszych
kart graficznych jest stosowana we współczesnych grach 3D.
1 Wst ęp
Postęp technologiczny oraz wydajność dzisiejszego sprzętu pozwalają twórcom
gier na jeszcze dokładniejsze symulowanie zjawisk, które mają odzwierciedlenie w
rzeczywistości. Dzięki temu obecne gry pozwalają cieszyć się m.in. coraz to lepszym
odwzorowaniem fizyki obiektów, inteligentniejszym zachowaniem przeciwnika
sterowanego przez komputer oraz przede wszystkim zaawansowaną, szczegółową
oprawą graficzną. Wszystkie te dziedziny mają duży wpływ na odbiór gry przez
użytkowników, także jako produktu (za który przecież zapłacili i od którego mają prawo
wymagać, by spełniał ich oczekiwania). Czasy, w których na uświadczenie
dynamicznego oświetlenia oraz cieni mogli sobie pozwolić tylko posiadacze
najnowszych kart graficznych, odeszły do lamusa, a gra, w której posta ć podczas
dialogu nie porusza ustami, wywołuje uśmiech na twarzach graczy. Dlatego te ż
konieczna jest dbałość producentów gier o to, jak ich produkt się prezentuje, a okresowy
„wyścig” kilku największych tytułów o miano „najładniejszego” dodaje argumentów,
aby takową grę zakupić.
Oświetlenie ma niewątpliwie ogromny wpływ na ostatecznie wygenerowany
obraz. Poniższy obrazek przedstawia porównanie wyglądu tej samej sceny w dwóch
wersjach: nieoświetlonej oraz ze światłem punktowym.
1
Rys. 1. Wpływ o świetlenia na ko ńcowy efekt. Po lewej stronie scena nieo świetlona.
(źródło: http://irrlicht.sourceforge.net)
Różnica jest zauważalna. Dodatkowo w grach, w odró żnieniu od grafiki
wyrenderowanej w studio graficznym, konieczne jest generowanie obrazu w czasie
rzeczywistym, jednocześnie zachowuj ąc płynne dzia łanie (przynajmniej ok. 25-30
klatek na sekundę) na wielu ró żnych konfiguracjach sprz ętowych. Do dzi ś jest to cz ęsto
przeszkodą w osiągni ęciu zamierzonych efektów, jednak dzi ęki wydajno ści obecnych
komputerów możemy jeszcze dokładniej je odwzorowa ć. Od wielu lat powstawa ły i
ciągle są opracowywane nowe techniki oświetlania sceny, aby ten cel osi ągn ąć.
2 O świetlenie w teorii
W celu dokładnego zasymulowania o świetlenia obiektów przez konkretne źród ła
świat ła stosowanych jest wiele ró żnych modeli lub ich rozszerze ń. Podstawowym,
opisanym w tym rozdziale, b ędzie uproszczony model Phong. Ostateczny kolor
powierzchni oświetlonej mo żna zapisa ć za pomoc ą poni ższego wzoru.
kolor powierzchni = emisja + otoczenie + dyfuzja
Wspołczynnik emisji (ang. emissive) określa świat ło emitowane przez obiekt - jest to
zwykły kolor RGB dodawany do koloru powierzchni. Zazwyczaj jest wy łączony
(przypisana jest mu warto ść #000000), jednak u życie go bardzo u łatwia tworzenie
efektów niestandardowych.
Współczynnik otoczenia (ang. ambient) określa nat ężenie ogólnego świat ła panuj ącego
na scenie, które pochodzi ze wszystkich stron i nie zale ży od żadnego konkretnego
kierunku ani źród ła. Ma on na celu zasymulowa ć efekt świat ła odbitego od innych
obiektów, jednak ze względu na kosztowno ść obliczeniow ą zazwyczaj jest sta łą
wartości ą przypisywaną całej scenie, cho ć popularne jest równie ż przeprowadzanie
skomplikowanych obliczeń już na etapie projektowania gry. Kilka lat temu firma Crytek
po raz pierwszy zastosowała technik ę dokładniejszego przybli żania tego efektu w czasie
rzeczywistym (SSAO, ang. Screen Space Ambient Occlusion), do dziś jest ona ci ągle
rozwijana i stosowana w najnowszych grach.
2
Współczynnik rozproszenia (ang. diffuse) dotyczy świat ła, które ze wzgl ędu na
chropowatość powierzchni obiektu odbija si ę od niej we wszystkich kierunkach.
Natężenie świat ła odbitego od obiektu jest proporcjonalne do k ąta padania świat ła na t ę
powierzchni ę. Wzór pozwalający na obliczenie współczynnika rozproszenia:
rozproszenie=K d ×K l ×max( N⋅L , 0)
gdzie:
•
•
•
•
Kd to kolor rozproszenia obiektu
Kl to kolor świat ła
N to znormalizowana normalna powierzchni
L to znormalizowany wektor skierowany w stron ę źród ła świat ła
Rys. 2. Sposób obliczania świat ła rozproszonego w punkcie P.
Iloczyn skalarny wektorów N i L daje w rezultacie miar ę k ąta mi ędzy tymi
wektorami, a zastosowanie funkcji max pozwala ograniczy ć wynik do przedziału <0,1>.
Dzi ęki temu w łatwy sposób uzyskujemy efekt, w którym świat ło padaj ące z góry ma
najwi ększe nat ężenie (równe 1, stopniowo zmieniaj ące si ę wraz z k ątem padania), a
powierzchnia skierowana „ty łem” do źród ła świat ła nie zostanie o świetlona
(współczynnik wynosi 0).
3 Ró żne techniki realizacji o świetlenia w grach
Na przestrzeni lat, zarówno poziom skomplikowania wy świetlanych scen, jak i
jako ść prezentowanych efektów świetlnych, zmienia ły si ę bardzo znacz ąco. Zadaniem
programistów było (i wci ąż jest) dostosowanie gry do platformy sprz ętowej graczy, co
jeszcze kilka lat temu wi ąza ło si ę z powa żnym uproszczeniem modelu o świetlenia.
Przede wszystkim niska wydajno ść komputerów i ch ęć uzyskania jak najbardziej
zadowalaj ących efektów zmusi ły twórców gier do opracowania technik, które przy
obecnych ograniczeniach sprz ętu pozwalały na uzyskanie po żądanego celu.
Pierwsz ą technik ą, która pozwala ła uzyska ć naprawd ę dobre efekty, by ło u życie
map świetlnych (ang. lightmaping). Cała idea polega na obliczeniu nat ężenia świat ła
dla ka żdego punktu na scenie ju ż na etapie projektowania poziomu (za pomoc ą
odpowiedniego narz ędzia wbudowanego w edytor mapy). Wyniki skomplikowanych
oblicze ń (które uwzgl ędnia ły równie ż wp ływ świat ła odbitego od innych obiektów,
3
ang.radiosity) były zapisywane na specjalnej teksturze, która by ła u żywana przy
renderowaniu obrazu w czasie gry.
Rys. 3. Sposób działania map świetlnych.
Kolejno od lewej: tekstura ściany, mapa świat ła, o świetlony obiekt.
Każdy obiekt był pokrywany dwiema teksturami – pierwsza okre śla ła wygl ąd
obiektu, druga natomiast nat ężenie świat ła w danym punkcie. Dzi ęki wymno żeniu tych
dwóch kolorów obszary słabiej o świetlone zosta ły przyciemnione, a te o wi ększym
natężeniu rozja śnione. Zalet ą tego rozwi ązania by ła wydajno ść i jako ść uzyskiwanych
efektów. Twórcy poziomu nie byli praktycznie w ogóle ograniczeni, gdyż
skomplikowanie modelu o świetlenia lub ustawienie wi ększej ilo ści świate ł przek łada ło
się tylko i wyłącznie na d łu ższy czas generowania mapy świate ł, pozostawiaj ąc
szybkość działania gry bez zmian. Sporymi wadami by ły natomiast: czas „wypalania”
lightmap, statyczność o świetlenia i rozmiar przechowywanych danych. Ka żda zmiana
układu oświetlenia przez projektanta mog ła skutkowa ć konieczno ści ą powtórnego
przeprowadzania nawet kilkunastogodzinnych obliczeń.
Kolejnym typem o świetlenia, które w odró żnieniu od lightmappingu
umożliwiało ustawienie na scenie dynamicznych świate ł, by ło oświetlenie obliczane
dla wierzchołków (ang. per-vertex lighting). Około 1999 roku producenci kart
graficznych wprowadzili sprz ętowe wsparcie dla tej techniki (T&L), jednak posiada ły
one ograniczenie do 8 świateł oddziałuj ących jednocze śnie na rysowany obiekt.
Rys. 4. Wygenerowane oświetlenie per-vertex dla ró żnych poziomów
szczegółowości ( źród ło: [1])
4
Obiekt trójwymiarowy w grze sk łada si ę z siatki trójk ątów. W o świetleniu per-vertex,
dla każdego wierzchołka wielok ąta obliczane jest nat ężenie świat ła, a wynik jest
interpolowany dla całej jego powierzchni. Technika ta daje zadowalaj ące efekty w
przypadku powierzchni o skomplikowanej strukturze, jednak dla obiektów o prostej
budowie, gdzie wierzchołki s ą od siebie mocno oddalone, efekt jest jedynie
przybliżony, a niekiedy wr ęcz niepoprawny. Wp ływ skomplikowania siatki na ko ńcowy
rezultat przedstawia rys. 4.
Zaletami tej techniki są przede wszystkim wydajność i mo żliwo ść dynamicznego
oświetlenia sceny, cho ć cz ęsto rezultaty uzyskiwane dzi ęki niej s ą niewystarczaj ące.
Ciekawym podejściem wykorzystywanym przez twórców gier by ło po łączenie
oświetlenia per-vertex z mapami świate ł – świat ła statyczne by ły renderowane z
użyciem lightmap, natomiast dynamiczne o świetlenie wierzcho łkowe oddzia ływa ło
tylko na niektóre, odpowiednio oznaczone przez projektantów obiekty.
Naturalnym rozwiązaniem problemu braku odpowiedniego zag ęszczenia siatki
wielokątów dla o świetlenia per-vertex jest obliczanie warto ści nat ężenia świat ła dla
każdego piksela, co jest podstawą działania techniki oświetlenia per-pixel (ang. perpixel lighting). W 2004 roku, dzi ęki odpowiedniej mocy obliczeniowej ówczesnych
komputerów, John Carmack mógł po raz pierwszy u ży ć tego typu o świetlenia na du żą
skalę w grze Doom 3, a wprowadzenie do uk ładów graficznych mo żliwo ści
programowania jednostek Vertex i Pixel Shader rozpowszechni ło u życie tej metody na
stałe. Jako ść uzyskiwanych efektów była nieporównywalnie lepsza z metod ą per-vertex
i przede wszystkim niezale żna od ilo ści wielok ątów. Nak łada ła jednak ograniczenie
renderowania tylko jednego świat ła w ka żdym przebiegu, co oznacza tyle, że dla
skomplikowanej sceny zbudowanej z 200 000 trójk ątów o świetlonej pi ęcioma
świat łami, karta graficzna musiała przetworzy ć milion wielok ątów, co jest ju ż sporym
obciążeniem. Z tego te ż powodu powsta ło wiele sposobów optymalizowania renderingu
oświetlenia, m. in. pomijanie rysowania świate ł niewidocznych lub znajduj ących si ę w
bardzo dalekiej odległo ści od gracza.
4
Deferred Shading
Wydajność standardowego, wieloprzebiegowego podej ścia do rysowania świate ł
per-pixel pozostawia wiele do życzenia. Rozwi ązanie problemu renderowania geometrii
tyle razy, ile jest świate ł na scenie, stanowi technika deferred shading, która poniekąd
stanowi jej rozszerzenie.
Pierwsza praca na temat tej metody zosta ła opublikowana ju ż w 1988 roku przez
Michaela Deeringa [5]. Pomysł był rozwijany i modyfikowany przez innych, by na
początku lat 90-tych przyj ąć form ę, na której bazuj ą dzisiejsze implementacje. Od
początku miał on na celu zmniejszenie liczby oblicze ń w skomplikowanych modelach
oświetlenia, jednak dopiero od kilku lat jeste śmy w posiadaniu sprz ętu b ęd ącego w
stanie praktycznie wykorzystać tę technik ę w czasie rzeczywistym.
Deferred shading wykorzystuje całkowicie odmienne podej ście w rysowaniu
oświetlenia. Cały proces jest podzielony na dwie fazy: faz ę geometrii i faz ę o świetlenia.
5
Faza geometrii, zamiast wyświetlania wyniku od razu na ekran monitora,
polega na wyrenderowaniu wszystkich potrzebnych danych do specjalnego bufora (ang.
G-Buffer – Geometry Buffer). W praktyce jest to kilka tekstur, z których ka żda z nich
przechowuje informacje zapisane w postaci kolorów, takie jak pozycj ę piksela, wektor
normalny, kolor tekstury, kolory rozproszenia, emisji i inne atrybuty materia łu. Obecne
karty graficzne pozwalają na u życie MRT (ang. Multi Render Target), dzięki czemu
wypełnienie bufora mo że odby ć si ę w jednym przebiegu.
W fazie oświetlenia, zamiast kosztownego wyświetlania obiektów,
wykorzystywane s ą dane zgromadzone w buforze. Dzi ęki temu, niezale żnie od poziomu
skomplikowania sceny, koszt dodania ka żdego kolejnego świat ła jest znikomy.
Wyrenderowanie następnego świat ła polega na narysowaniu zwyk łego prostok ąta,
natomiast odpowiednio zaprogramowana jednostka cieniowania pikseli dokona obliczeń
i wyświetli zamierzony wynik.
Rys. 5. Od lewej: oświetlona scena i u żyte tekstury G-bufora (pozycji, koloru tekstury
i wektorów normalnych) dla przykładowej aplikacji [6].
Dzięki zastosowaniu deferred shadingu mo żemy uzyska ć ogromny wzrost
wydajności przy renderowaniu rozbudowanych scen z du żą ilo ści ą dynamicznych
świateł. W niektórych grach projektanci poziomów i graficy wykorzystuj ą ten fakt do
tego stopnia, że umieszczaj ą nawet do kilkunastu świate ł o bardzo znikomym wp ływie
(np. promieniu kilku pikseli) w rogu pomieszczenia, symuluj ąc w ten sposób
wspomniany na początku pracy efekt świat ła odbitego od innych powierzchni.
Niestety technika ta nie jest pozbawiona wad. Oprócz obci ążania karty
graficznej wypełnianiem pikseli oraz wi ększym zapotrzebowaniem na pami ęć,
problematyczną kwestią jest sposób rysowania obiektów przezroczystych - elementy
prześwituj ące musimy rysowa ć osobno, nak ładaj ąc je na wcze śniej wygenerowane t ło.
Pozostałe niedogodności, z których najbardziej uporczyw ą by ł brak sprz ętowego
wygładzania kraw ędzi (ang. anti-aliasing), w wi ększo ści zostały wyeliminowane wraz
z rozwojem ostatnich generacji kart graficznych - DirectX 10 oraz 11 wprowadzają
znacz ące udogodnienia.
5 Porównanie wydajno ści metod o świetlenia per-pixel
Testy wydajności dwóch metod o świetlenia per-pixel (podej ścia standardowego
oraz deferred shadingu) zostały przeprowadzone przy u życiu aplikacji testowej
(napisanej w C++ z u życiem DirectX 9.0c), na komputerze wyposa żonym w procesor
6
Intel Core i5 M480 2,66 GHz, 8GB pami ęci RAM oraz kart ę graficzn ą ATI Radeon
Mobility HD 5470. Kryterium oceny wydajno ści by ła ilo ść uzyskanych klatek na
sekundę (ang. frames per second – FPS).
Rys. 6. Zrzut ekranu z aplikacji testowej – 48 w pełni dynamicznych świate ł.
Rendering oświetlenia został wykonany dla dwóch ró żnych scen – pierwsza z
nich, o niskim stopniu skomplikowania, sk łada ła si ę z 4 tysi ęcy wielok ątów, druga
natomiast z ponad 35 tysięcy. Wyniki przestawiaj ą wykresy 1. i 2.
Wykres 1. Test wydajności podczas renderingu pierwszej sceny.
Standardowe podej ście w rysowaniu oświetlenia per-pixel sprawdzi si ę tylko
przy mało skomplikowanych scenach oraz małej ilo ści dynamicznych świate ł. Ka żde
kolejne źródło świat ła znacz ąco obni ża wydajno ść tej metody, dzi ęki czemu ju ż przy
zastosowaniu kilkunastu świate ł widoczna jest przewaga deferred shadingu.
7
Wykres 2. Test wydajności podczas renderingu drugiej sceny.
Tak jak w poprzednim przypadku, zwiększanie liczby świate ł znacznie odbija si ę
na wydajności standardowej techniki o świetlenia, podczas gdy koszt ka żdego kolejnego
źródła świat ła w deferred shadingu jest niezale żny od ilo ści rysowanej geometrii.
Znaczna ilość renderowanych wierzchołków oraz dynamicznych źróde ł świat ła
są przykładami sytuacji, w których deferred shading sprawdzi si ę znakomicie, co
potwierdzają wyniki powyższych testów.
6 Podsumowanie
Wraz ze wzrostem realizmu gier komputerowych nale ży przypuszcza ć, i ż
używane modele o świetlenia b ęd ą coraz bardziej skomplikowane, a zapotrzebowanie na
moc obliczeniow ą będzie ci ągle ros ło. Z tego powodu mo żna niew ątpliwie uzna ć
Deferred Shading za technik ę najlepiej spełniaj ąc ą wymagania zarówno programistów,
jak i graczy – dzi ęki zaoszcz ędzonym przebiegom renderingu uzyskana wydajno ść jest
satysfakcjonująca, a co najwa żniejsze dzieje si ę to praktycznie bezstratnie w stosunku
do oprawy graficznej. Poziom graficzny prezentowany przez niektóre gry korzystaj ące z
tej metody (m.in. S.T.A.L.K.E.R., Gears of War czy Crysis) potwierdzaj ą jako ść
uzyskanych efektów.
Bibliografia
[1] R. Fernando, M. J. Kilgard, Język Cg. Programowanie grafiki w czasie
rzeczywistym, Gliwice: Wydawnictwo HELION, 2003.
[2] K. Dempski, DirectX. Rendering w czasie rzeczywistym, Gliwice: Wydawnictwo
HELION, 2003.
[3] W. Toman, Deferred Shading jako wydajna technika oświetlenia, Siedlce, 2008.
[4] S. Hargreaves, M. Harris, Deferred Shading, 2004.
[5] M. Deering, S. Winner, B. Schediwy, C. Duffy, N. Hunt, The Triangle Processor
and Normal Vector Shader: A VLSI System for High Performance Graphics, 1988.
[6] NVIDIA Corporation, Deferred Shading. User Guide, 2004.
8

Podobne dokumenty