RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski
Plan wykładu Oświetlenie w grafice czasu rzeczywistego Modele koloru Modele źródeł światła Światła punktowe, kierunkowe i powierzchniowe Model nieba, tzw. skybox Modele odbicia światła Odbicie matowe Lambertian, Oren-Nayar Odbicie połyskliwe Phong, Cook-Torrance Odbicie anizotropowe Ashikhmin-Shirley
Plan wykładu c.d. Obiekty przeświecające (ang. translucent) Rozpraszanie podpowierzchniowe (ang. subsurface scattering, SSS) Efekty falowe dyfrakcja, interferencja Mapowanie środowiskowe Odbicie Załamanie Dyspersja
Literatura B. T. Phong, Illumination for Computer Generated Pictures, Communications of the ACM 1975 R. Cook, K. Torrance, A reflectance model for computer graphics, SIGGRAPH 1981 M. Oren, S.K. Nayar, Generalization of Lambert's Reflectance Model, SIGGRAPH 1994 M. Ashikhmin, P. Shirley, An Anisotropic Phong BRDF Model, Journal of Graphics Tools 2000
Literatura c.d. S. O Neil, Accurate Atmospheric Scattering, rozdział 16, GPU Gems 2, Addison Wesley 2005 S. Green, Real-Time Approximations to Subsurface Scattering, GPU Gems, Addison Wesley 2004 H. W. Jensen i inni, A Practical Model for Subsurface Light Transport, SIGGRAPH 2001 J. Stam, Diffraction Shaders, SIGGRAPH 1999
Oświetlenie w grafice czasu rzeczywistego Oświetlenie znane z rzeczywistości jest zbyt złożone aby dokładnie je odwzorować w aplikacjach komputerowych Konieczne są pewne modele i, czasem daleko idące, uproszczenia Zwykle komputerowa symulacja oświetlenia składa się z następujących elementów: Algorytmu liczenia oświetlenia Modeli źródeł światła Modeli odbicia
Oświetlenie w grafice czasu rzeczywistego c.d. Oświetlenie lokalne vs. oświetlenie globalne Rozpatrywane tylko źródło światła i oświetlany obiekt, obliczane jest jedno odbicie światła Rozpatrywana jest cała scena jednocześnie uwzględnienie dowolnie wielu odbić
Oświetlenie w grafice czasu rzeczywistego c.d. W grafice czasu rzeczywistego na ogół stosuje się oświetlenie lokalne Oprócz tego często spotyka się pewne elementy oświetlenia globalnego, np. Cienie wymagają rozpatrzenia dwóch obiektów oprócz źródła światła Mapowanie środowiskowe odbicia otoczenia w obiektach połyskliwych, załamanie światła w szkle, wodzie, itp.
Modele koloru Wszystkie kolory widziane przez ludzi można odtworzyć przy pomocy mieszania trzech barw w odpowiednich proporcjach Stąd popularność modelu RGB (Red-Green-Blue) Model ten bardzo dobrze nadaje się do przechowywania obrazów Niestety model ten powoduje różnorakie błędy w symulacjach oświetlenia Model ten nie ma żadnego uzasadnienia na gruncie fizyki
Modele koloru c.d. W grafice czasu rzeczywistego praktycznie zawsze stosuje się model RGB, ignorując potencjalne błędy RGB RGB Pełne widmo Światło białe Pełne widmo Światło kolorowe
Modele koloru c.d. RGB Pełne widmo
Modele źródeł światła Uproszczenie spotykanych na co dzień zjawisk na potrzeby grafiki komputerowej Niewielkie uproszczenia dla grafiki off-line, na ogół wyłącznie założenie prawdziwości optyki geometrycznej, teoria Newtona z XVIII wieku Często znaczące dla grafiki czasu rzeczywistego, np. ignorowanie rozmiaru źródła światła albo rozbieżności kierunku jego świecenia
Zanik światła z odległością Fizyka mówi: I = C/r 2, gdzie I to jasność, r to odległość od światła, a C to dowolna stała W grafice stosuje się pewne uproszczenia, przy których powyższy wzór nie zapewnia oczekiwanego rezultatu Punktowe źródła światła potencjalnie jasność Obliczanie tylko jednego odbicia często zbyt szybki zanik światła Powszechnie stosowany wzór: I = 1/(C 0 + C 1 r + C 2 r 2 ), w którym C 0, C 1, i C 2 oznaczają dowolne stałe
Światła punktowe Zajmują punkt (matematyczny) w przestrzeni Samo oświetlenie na ogół wygląda nieźle Niestety bez stosowania specjalnych sztuczek i chwytów cienie nie są dobrej jakości
Światła kierunkowe Założenie: duża odleglość źrodła światła względem rozmiaru oświetlanej sceny Uproszczenie równoległa wiązka promieni, bez zaniku (zmiana odległości jest pomijalnie mała) Często Słońce jest modelowane jako światło kierunkowe, ale nie jest to idealny model Przesuniecie obiektu na Ziemi nie ma znaczenia w porównaniu z odległością Ziemia-Słońce Jednak Słońce zajmuje pewien kąt na niebie promienie w rzeczywistości nie są rownoległe
Światła powierzchniowe Światła te posiadają ściśle określony kształt Oświetlenie pochodzi z wielu różnych kierunków Na wygląd sceny o wiele większy wpływ ma rozmiar źródła światła, niż jego konkretny kształt
Model nieba Zwykle tekstura sześcienna (stąd nazwa SkyBox) Może być też stosowane mapowanie sferyczne
Model nieba c.d. Obraz nieba albo zdjęcia albo symulacja rozpraszania światła w atmosferze W tym drugim przypadku trzeba dodatkowo modelować zjawiska atmosferyczne, np. chmury Można też modelować niebo nocne, a także wykonać dobrze wyglądające wschody i zachody słońca Często stosuje się światło podstawowe i dopełniające pozwala podkreślić detale w cieniach
Model nieba c.d.
Model nieba c.d.
Model nieba c.d.
Model nieba c.d.
Model nieba c.d. Oprócz pełnienia roli tła, niebo może oświetlać scenę, będąc światłem powierzchniowym
Model nieba c.d. Promienie słoneczne widziane w nieidealnie przeźroczystym powietrzu, tzw. godrays
Model nieba c.d. Efekty HDR (High Dynamic Range)
Modele odbicia Opisują jasność światła odbitego, przyjmując jako dane wejściowe Kierunek padania światła (L) Kierunek odbicia (V) Normalną (N) Opcjonalnie styczne (T i B) Wartości wyliczane R wektor idealnego odbicia i, i, o, o kąty przy L i V
Modele 3D przypomnienie Modele do renderingu na karcie graficznej są zbudowane z wierzchołków i trójkątów W wierzchołkach zapisane są m.in. normalne i, opcjonalnie, styczne Są to dane obliczane dla powierzchni przybliżanej siatką trójkątów, nie ma czegoś takiego jak normalna dla punktu Bardzo częsty błąd, głównie w opracowaniach dotyczących DirectX: (T, B, N) oznacza Tangent, BiTangent, Normal, a nie Tangent, BiNormal, Normal
Obliczanie oświetlenia Na współczesnych kartach graficznych można je obliczać w wierzchołkach, fragmentach albo rozdzielić operacje pomiędzy nie Dla typowych scen jest znacznie mniej wierzchołków niż fragmentów Kompromis pomiędzy wydajnością a jakością Wielkości zmieniające się liniowo pomiędzy wierzchołkami w przestrzeni obiektu albo przestrzeni ekranu można bezkarnie obliczać w programie wierzchołków
Obliczanie oświetlenia c.d. Porównanie jakości oświetlenia obliczanego w wierzchołkach i niezależnie dla każdego fragmentu
BRDF Ang. Bidirectional Reflection Distribution Function, Dwukierunkowa Funkcja Rozkładu Odbicia Modele używane zwyczajowo w renderingu off-line Często zapewnia o wiele lepsze rezultaty niż w grafice czasu rzeczywistego Obecnie programowalne karty graficzne o dużej mocy obliczeniowej pozwalają na stosowanie modeli tej klasy w grach komputerowych
Odbicie matowe Postrzegana jasność powierzchni nie zależy od kąta obserwacji Zależy tylko od kąta oświetlenia, I = C*cos(N L)
Model Orena-Nayara Też odbicie matowe, jednak model bardziej zaawansowany i zapewniający rezultaty bliższe rzeczywistości I = C/ (A + B*max(0, cos( ))*sin *tan ) A = 1 2 /(2 2 0.66) B = 0.45 2 /( 2 + 0.09) = max( i, o ) = min( i, o ) Aproksymacja modelu matematycznego, C i są parametrami
Model Orena-Nayara Odbicie niezależne od kąta obserwacji z lewej, model Orena-Nayara z prawej
Model Phonga Odbicie połyskliwe, w oryginale: obicie matowe w kolorze obiektu + połysk w kolorze światła I = C 1 *cos(n L) + C 2 *cos(r L) Dobrze oddaje wygląd obiektów plastikowych
Model Phonga c.d. Wektor połówkowy, H = normalize(l + V) Uwaga na dzielenie przez zero! Nie ma obszarów idealnie czarnych I = C*cos n (H N) Balans jasności Oryginalny model odbija coraz mniej światła wraz ze wzrostem połyskliwości I = C*(n + 2)/(2 )*cos n (H N) Poprawia jakość grafiki przy zastosowaniu HDR
Model Cook a-torrance a Powierzchnia budowana z bardzo wielu mikroskopijnych ścianek Każda ścianka odbija światło tak jak idealnie wypolerowane lustro Parametrami są siła odbicia lustra i rozkład statystyczny kątów odchylenia mikrościanek Efekt zbliżony do poprawionego modelu Phonga Można symulować wygląd powierzchni zarówno plastikowych, lakierowanych, jak i metalicznych
Model Cook a-torrance a Obiekty lakierowany i metalowy
Odbicie anizotropowe Zależność jasności od kąta padania i odbicia względem stycznych, a nie tylko normalnej
Odbicie anizotropowe c.d. Model Ashikhmina-Shirleya Oparty na mikroskopijnych zwierciadłach Analogiczny do modelu Cooka-Torrancea, z rozkładem statystycznym opisaną wzorem: D 2 2 e cos sin x e N y ( e x 1)( e y 1) h Funkcje sin i cos można wyeliminować korzystając z wzorów trygonometrii
Obiekty przeświecające
Obiekty przeświecające Obiekty te przepuszczają światło na druga stronę Można zastosować dowolny model odbicia, nieco go modyfikując Gdy sgn(n V) sgn(n L) oznacza to, że obiekt jest widziany z innej strony, niż jest oświetlany Odbicie światła opisane przez średnią ważoną odbicia zwykłego i przepuszczania światła na przeciwną stronę Model działa poprawnie tylko dla obiektów bardzo cienkich
Rozproszenie podpowierzchniowe Podobnie jak obiekty przeświecające, ale dla obiektów dowolnych, niekoniecznie cienkich
Rozproszenie podpowierzchniowe Poprzedni obrazek nie był liczony w czasie rzeczywistym Można jednak podobny efekt osiągnąć na karcie stosując pewne chwyty Poszerzenie zakresu odbicia matowego Mapy głębi
Rozproszenie podpowierzchniowe Model ten bardzo dobrze nadaje się do postaci ludzkich Konieczne aproksymacje dla renderingu czasu rzeczywistego
Efekty falowe Promienie światła uginają się na regularnie rozmieszczonych nierównościach Promienie nakładają się na siebie suma amplitudy fal Model wymaga operacji na pełnym widmie a nie RGB, konieczne konwersje
Mapowanie środowiskowe Mapa sześcienna zawierająca otoczenie obiektu Zwykle renderowana dynamicznie, konieczny jest sześciokrotny rendering tej samej sceny, ale w małej rozdzielczości Założenie: obiekt jest mały w stosunku do otoczenia Obiekt nie będzie się odbijał sam w sobie! Znalezienie kierunku odbicia i odczyt z tekstury Rozmycie tekstury dla obiektów nieidealnie połyskliwych
Odbicie
Załamanie Podobnie jak odbicie, tylko kierunek załamania Uproszczenie: promień załamany tylko raz Dyspersja inne współczynniki załamania dla składowych RGB
Efekt Fresnela Odbicie i załamanie w zależności od kąta padania Aproksymacja: R(θ) = R 0 + (1 R 0 )(1 cos θ) 5
Dziękuję za uwagę