Ewolucja Gier komputerowych i wideo
Transkrypt
Ewolucja Gier komputerowych i wideo
Programowanie gier komputerowych Tomasz Martyn Wykład 8. Światło i cienie (1) Oświetlenie lokalne (bezpośrednie) i oświetlenie globalne Oświetlenie globalne Oświetlenie pośrednie Oświetlenie pośrednie wnoszone przez fotony „1. odbicia” Oświetlenie pośrednie wnoszone przez fotony „2. odbicia” Oświetlenie globalne Color bleeding Oświetlenie globalne Równanie renderingu Oświetlenie globalne Popularne metody i techniki • Do popularnych metod wyznaczania globalnego oświetlenia w grafice komputerowej, a co za tym idzie, rozwiązywania równania renderingu, należy zaliczyć: - • radiosity – bazuje na metodzie elementów skończonych, photon mapping (wraz z jego wieloma wariantami), path tracing, różne uogólnienia ray tracingu. Do efektów i technik związanych z globalnym oświetleniem zalicza się często również: - ambient occlusion – technika cieniowania powierzchni polegająca wyznaczaniu procentu intensywności równomiernego światła otoczenia (ambient light) docierającego do danego punktu powierzchni; - spherical harmonics – technika umożliwiająca kodowanie wielu źródeł światła w dziedzinie częstotliwości przy wykorzystaniu niewielkiej liczby wsp. i następnie przybliżone rozwiązywanie równania renderingu. Oświetlenie globalne w grach komputerowych Statyczne oświetlenie globalne • • • Ze względu na wysoki koszt obliczeń rozwiązywania równania renderingu, w dzisiejszych silnikach gier pełne globalne oświetlenie wyznaczane jest, jak na razie, w fazie obliczeń wstępnych jedynie dla geometrii statycznej i nieruchomych źródeł światła (tzw. statyczne oświetlenie globalne). W przypadkach szczególnych moc obliczeniowa dzisiejszego sprzętu umożliwia aproksymowanie globalnego oświetlenia w czasie rzeczywistym (np.: jedno kierunkowe źródło światła i jedno odbicie fotonów – CryEngine 3). W silnikach Unreal Engine 3 i 4 do wyznaczania globalnego oświetlenia wykorzystywany jest system Lightmass, który wyznacza oświetlenie globalne statyczne, a także umożliwia przybliżone oświetlanie obiektów dynamicznych światłem pośrednim (LightEnvironments i spherical harmonics light). Statyczne oświetlenie globalne Lightmass i lightmapy • Lightmass wykorzystuje do obliczeń globalnego oświetlenia wariant photon mappingu i głównym rezultatem jego działania są tzw. lightmapy. • Lightmapy są teksturami przechowującymi informacje o sumarycznym (tzn. po uwzględnieniu max. N odbić fotonów) natężeniu i barwie światła docierającego do powierzchni obiektu. • Barwa odbicia rozproszonego w punkcie powierzchni wyznaczana jest poprzez przemnożenie (modulację) współczynników diffuse w tym punkcie (zwykle pobranych z tekstury diffuse aka albedo) przez odpowiednią próbkę pobraną z lightmapy. • Informacja o oświetleniu zawarta w lightmapie dotyczy wszystkich statycznych źródeł światła, które były brane pod uwagę podczas liczenia oświetlenia (tzn. nie można wyodrębnić z lightmapy informacji dotyczącej pojedynczego, wskazanego źródła światła). • Dokładność lightmap mierzona jest przede wszystkim wielkością teksela lightmapy, tzw. luxelach lub lumelach w jednostkach świata – im mniejszy luxel, tym dokładniejsza lightmapa. • Wielkość luxela przekłada się na rozdzielczość tekstury lightmapy. Dynamiczne oświetlenie globalne Lightmass i „światłomierze” • Lightmass podczas obliczeń dodatkowo rozmieszcza „światłomierze” w równomiernej siatce 3d (w granicach Ligthmass Importance Volume), które zapamiętują natężenie i barwę światła pośredniego docierającego do nich ze wszystkich kierunków. Dynamiczne oświetlenie globalne Light Environment i Spherical Harmonic Light • W UDK 3, z każdym meshem dynamicznym (interp-, kinematic-, i skeletal mesh actor) można skojarzyć tzw. Light Environment, które jest środowiskiem umożliwiającym ustawienie różnego rodzaju parametrów związanych z obliczaniem oświetlenia dla tego aktora. • Light Environment umożliwia m.in. zastępowanie on-line wszystkich źródeł światła oddziałujących w danej chwili na aktora, parą świateł: Spherical Harmonic Light i światłem kierunkowym. Dynamiczne oświetlenie globalne (cd.) Light Environment i Spherical Harmonic Light • Przy wykorzystaniu tej pary świateł oraz informacji przechowywanej w „światłomierzach” znajdujących się w aktualnym otoczeniu aktora dynamicznego, możliwe jest aproksymowanie, w czasie rzeczywistym, oświetlenia tego aktora światłem pośrednim. Statyczne oświetlenie globalne Efekt ambient occlusion World Properties / Lightmass Ambient occlusion Odbicie rozproszone AO i odbicie rozproszone Dynamiczne renderowanie cieni Podejścia W grafice komputerowej czasu rzeczywistego stosowane są dwa podejścia do dynamicznego wyznaczania cieni: • metoda brył cieni (stencil shadows) – cienie wyznaczane są bezpośrednio są na podstawie geometrii obiektów rzucających cień, z precyzją wynikającą z tej geometrii (Crow, F. „Shadow algorithms for computer graphics”, SIGGRAPH’77) • mapowanie cieni (shadow mapping) – cienie wyznaczane są na podstawie głębi fragmentów obiektów rzucających cień, zapamiętanej w teksturze; precyzja określona jest rozdzielczością tekstury (Williams, L. „Casting curved shadows on curved surfaces”, SIGGRAPH’78) Istnieją również metody hybrydowe, polegające na budowaniu brył cieni na podstawie map cieni. Nie doczekały się one jednak jak na razie szerszego zastosowania. Shadow mapping Idea Mapowanie cieni „generowanych” przez źródło światła przebiega w dwóch krokach: 1. wyrenderowanie, do tekstury głębokości (tzw. shadow mapy), odległości najbliższych fragmentów obiektów „widzianych” przez źródło światła, 2. wyrenderowanie, do bufora ramki, geometrii widzianej przez obserwatora, przy czym dany fragment uznawany jest za znajdujący się w cieniu, jeśli jego odległość od źródła światła jest większa od odpowiedniej odległości zapamiętanej w teksturze (należy dokonać przekształcenia wsp. fragmentu do wsp. rzutowania źródła światła i porównać jego wsp. Z z odpowiednią wartością pobraną z shadow mapy). Problemy podstawowe W konteście konkretnych typów źródeł światła, przedstawiony opis mapowania cieni rodzi dwa problemy: W przypadku równoległego źródła światła – co oznacza sformułowanie, że renderujemy odległości fragmentów z punktu widzenia tego źródła? W przypadku punktowego źródła światła (które przecież świeci we wszystkich kierunkach) – co oznacza sformułowanie, że renderujemy obraz odległości najbliższych fragmentów do tekstury z punktu widzenia tego źródła? Następny wykład: Światło i cienie (2)