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)

Podobne dokumenty