Rendering w czasie rzeczywistym - Strona główna...

50
RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Transcript of Rendering w czasie rzeczywistym - Strona główna...

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

Światło białe Światło kolorowe

RGB RGB

Pełne widmo Pełne widmo

Modele koloru – c.d.R

GB

Pełn

e w

idm

o

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/r2, 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/(C0 + C1r + C2r2),

w którym C0, C1, i C2 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/(22 – 0.66)

B = 0.452/(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 = C1*cos(N•L) + C2*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*cosn(H•N)

Balans jasności

Oryginalny model odbija coraz mniej światła wraz ze

wzrostem połyskliwości

I = C*(n + 2)/(2)*cosn(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:

Funkcje sin i cos można wyeliminować korzystając z

wzorów trygonometrii

22 sincos)1)(1( yx ee

hyx eeD

N

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(NV) sgn(NL) 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 rozmiesz-

czonych 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(θ) = R0 + (1 − R0)(1 − cos θ)5

Dziękuję za uwagę