Z´apisky z pˇredn´aˇsky Global illumination with many-light methods Tom´aˇs Z´ameˇcn´ık (2012) Martin Kahoun (2011)
1
1
V´ ypoˇ cet glob´ aln´ıho osvˇ etlen´ı
1.1
Zobrazovac´ı rovnice v 3b formulaci
V t´eto u ´vodn´ı ˇc´ asti se budeme zab´ yvat v´ ypoˇctem intenzity svˇeteln´eho paprsku. Paprsek bude vˇzdy zad´ an dvˇema body (m´ıstem vzniku a m´ıstem dopadu). N´ asleduj´ıc´ı rovnice popisuje intenzitu svˇeteln´eho paprsku, smˇeˇruj´ıc´ıho z bodu x0 do bodu x00 . L(x0 → x00 ) = Le (x0 → x00 ) + Lr (x0 → x00 )
(1)
L se skl´ ad´ a ze dvou pˇr´ıspˇevk˚ u: • Le - intenzita svˇeteln´eho paprsku emitovan´eho z x0 do x00 • Lr - intenzita svˇeteln´ ych paprsk˚ u odraˇzen´ ych v x0 Hodnota Lr se vypoˇcte integrac´ı z intenzity paprsk˚ u dopadaj´ıc´ıch do x0 ze vˇsech bod˚ u x vˇsech povrch˚ u sc´eny M . Po dosazen´ı za Lr je funkce L zad´ana n´asleduj´ıc´ım rekurentn´ım vztahem, zn´ am´ ym jako zobrazovac´ı rovnice: Z L(x0 → x00 ) = Le (x0 → x00 ) + L(x → x0 ) · fr (x → x0 → x00 ) · G(x ↔ x0 )dAx (2) M
fr je odrazov´ a funkce (BRDF). G je geometrick´ y ˇclen, z´avisej´ıc´ı na vz´ajemn´e poloze bod˚ u x a x0 . G(x ↔ x0 ) = V (x ↔ x0 )
|cosθo ||cosθi0 | kx − x0 k2
V je funkce vz´ ajemn´e viditelnosti bod˚ u x a x0 . 1 pokud jsou body x, x0 vz´ajemnˇe viditeln´e V (x ↔ x0 ) = 0 jinak
(3)
(4)
Existuje v´ıce ekvivalentn´ıch formulac´ı zobrazovac´ı rovnice. Varianta zadan´a vztahem (2) je v´ yznaˇcn´ a t´ım, ˇze nepouˇz´ıv´ a integraci pˇres hemisf´eru, ale pˇres vˇsechny body sc´eny. Neintegrujeme po u ´hlech, ale po bodech.
1.2
Mˇ eˇ ric´ı rovnice v 3b formulaci
Nyn´ı nav´ aˇzeme na pˇredchoz´ı kapitolu a uvedeme zp˚ usob v´ ypoˇctu intenzity svˇetla dopadaj´ıc´ıho na plochu jednoho pixelu. Intenzita j-t´eho pixelu se vypoˇcte podle n´asleduj´ıc´ıho pˇredpisu (mˇeric´ı rovnice). Z Ij = We(j) (x → x0 ) · L(x → x0 ) · G(x ↔ x0 )dAx dAx0 (5) M ×M (j)
Zde x jsou body sc´eny a x0 body senzoru (pixelu). We (x → x0 ) je hodnota v´ahov´e funkce senzoru (odezva) pro paprsek z x do x0 . L(x → x0 ) je hodnota radiance bodu x0 , vypoˇcten´a podle (2).
1.3
Integrov´ an´ı pˇ res svˇ eteln´ e cesty
Nyn´ı pˇreformulujeme rovnici (5) tak, ˇze budeme integrovat m´ısto pˇres body sc´eny pˇres cel´e svˇeteln´e cesty (posloupnosti bod˚ u, v nichˇz se paprsky odr´aˇzej´ı pˇri cestˇe ze zdroje svˇetla do senzoru - pixelu) Z Ij = fj (¯ x)dµ(¯ x) (6) Ω
Ω je zde prostor (mnoˇzina) svˇeteln´ ych cest mezi zdroji svˇetla a j-t´ ym pixelem. µ(¯ x) je m´ıra na tomto prostoru. 2
dµ(¯ x) = dAx0 dAx1 dAx2 ...
(7)
x0 , x1 , x2 , ... odpov´ıdaj´ı 1., 2., 3., ... bod˚ um cest x ¯. fj (¯ x) je pˇr´ıspˇevek cesty x ¯ k intenzitˇe j-t´eho pixelu. Tato funkce ˇr´ık´a, kolik procent svˇetla dojde ze zdroje do senzoru. Integrov´ an´ım pˇres cesty jsme se zbavili rekurentn´ıho z´apisu. Jin´ ymi slovy Ij v (6) je hodnotou integr´ alu, nikoliv ˇreˇsen´ım integr´ aln´ı rovnice. Nestrann´ y odhad hodnoty Ij vypoˇcteme Monte-Carlo integrac´ı: Ij ≈
fj (¯ x) p(¯ x)
(8)
p(¯ x) je hodnota hustoty pravdˇepodobnosti cesty x ¯ v prostoru cest Ω. Nebo-li jedn´a se o pravdˇepodobnost, ˇze cesta x ¯ p˚ ujde z vrcholu x0 do x1 , ..., aˇz nakonec skonˇc´ı v xk : p(¯ x) = p(x0 , ..., xk ) = p(x0 )p(x1 |x0 )p(x2 |x0 , x1 )...p(xk |x0 , ..., xk−1 )
(9)
Pozn´ amka: Uˇzit´ım Bayesova vzorce odvod´ıme, ˇze p(x0 , ..., xk ) = p(xk , ..., x0 ). Tzn. nez´alˇeˇz´ı, zda uvaˇzujeme cesty smˇeˇruj´ıc´ı ze zdroje svˇetla do senzoru nebo obr´acenˇe. 1.3.1
V´ ypoˇ cet fj (¯ x)
Necht’ x ¯ = (x0 , ..., xk ), potom plat´ı: fj (¯ x) = Le (x0 → x1 ) · fr (x0 → x1 → x2 ) · G(x0 ↔ x1 )· (j) ·... · fr (xk−2 → xk−1 → xk ) · G(xk−1 ↔ xk ) · We (xk−1 → xk ) Pozn´ amka: Emisn´ı sloˇzka Le se zapoˇc´ıt´av´a pouze v bodˇe x0 . Situace pro cestu ˇc´ıtaj´ıc´ı pˇet bod˚ u je ilustrov´ana n´asleduj´ıc´ım obr´azkem:
1.3.2
Renderov´ an´ı
Konkr´etn´ı odhad intenzity pixelu Ij se z´ısk´a Monte Carlo integrac´ı n´asledovnˇe: for i = 1 to pocet cest do: • Vygeneruj cestu xi , pro n´ıˇz We je nenulov´e (tj. ”skrz”pixel). • Aktualizuj odhad Ij : Ij +=
1 fj (xi ) · pocet cest p(xi )
3
(10)
2
Instant radiosity
Uk´ aˇzeme si nyn´ı metodu publikovanou Kellerem v roce 1997, kterou nazval instatn´ı (okamˇzit´a) radiozita [2]. Cel´ a tˇr´ıda metod odvozen´ ych z instantn´ı radiozity je pak ˇcasto naz´ yv´ana many-lights methods nebo virtual point light methods. Z´ akladem metody je pˇrid´ an´ı nov´ ych (virtu´aln´ıch) svˇetel do sc´eny (VPL - virtual point lights). Pˇri samotn´em vykreslov´ an´ı poˇc´ıt´ ame pouze pˇr´ım´e osvˇetlen´ı a to jak z re´aln´ ych, tak i z virtu´aln´ıch svˇetel. V´ ypoˇcet osvˇetlen´ı m´ a dvˇe f´ aze: 1. Vygenerov´ an´ı virtu´ aln´ıch svˇetel 2. Vykreslen´ı sc´eny v´ ypoˇctem pˇr´ım´eho osvˇetlen´ı Pozn´ amka: Metoda pˇredpokl´ ad´ a, ˇze vˇsechny povrchy jsou ˇcistˇe difuzn´ı.
2.1
Tvorba VPL
Pˇrid´ av´ an´ım nov´ ych svˇetel se snaˇz´ıme dos´ahnout vzhledu sc´eny, kde je pouˇzito i nepˇr´ım´eho osvˇetlen´ı. VPL generujeme tak, ˇze vrh´ ame paprsky ze skuteˇcn´ ych svˇeteln´ ych zdroj˚ u. Tam, kde paprsek dopadne na povrch sc´eny, pˇrid´ ame nov´e virtu´aln´ı svˇetlo. Paprsek se m˚ uˇze d´ale odr´aˇzet. S kaˇzd´ ym odrazem vznik´ a v dan´em bodˇe nov´e VPL. Cestu paprsku ukonˇc´ıme principem Russian roulette. Kaˇzd´ y virtu´ aln´ı zdroj povaˇzujeme za ˇcistˇe difuzn´ı emitor a pro radianci pˇrich´azej´ıc´ı od nˇej plat´ı: ρd (y) cos θy , L(y → x) = Φ π kde Φ je svˇeteln´ y tok nesen´ y ˇcastic´ı, kter´a vygenerovala virtu´aln´ı svˇetlo (v´ ypoˇcet Φ viz. photon tracing ve fotonov´ ych map´ ach). D´ ale ρd (y) je dif´ uzn´ı odrazivost (albedo) v bodˇe y.
2.2
Informace uloˇ zen´ e ve VPL
Pokud je splnˇen pˇredpoklad, ˇze vˇsechny povrchy jsou ˇcistˇe difuzn´ı, uchov´av´ame u kaˇzd´eho svˇetla jeho pozici, norm´ alov´ y vektor povrchu a intenzitu nesenou paprskem svˇetla, z nˇejˇz VPL vzniknul. Leskl´e povrchy jsou probr´ any v dalˇs´ı pˇredn´aˇsce.
2.3
Vykreslen´ı sc´ eny s VPL
Ve druh´em kroku poˇc´ıt´ ame pomoc´ı tohoto seznamu virtu´aln´ıch svˇetel pˇr´ım´e osvˇetlen´ı sc´eny a to n´ asleduj´ıc´ım zp˚ usobem: L(x, ωo ) = Le (x, ωo ) +
n X
L(yk → x) G(yk ↔ x) fr (yk → x → ωo )
(11)
k=1
Tato rovnice nen´ı niˇc´ım jin´ ym, neˇz Monte Carlo estim´atorem zobrazovac´ı rovnice ve tvaru (2). Virtu´ aln´ı bodov´e zdroje pak pˇredstavuj´ı vzorky radiance na ploch´ach sc´eny. Instantn´ı radiozita je tedy podmnoˇzinou obousmˇern´eho sledov´an´ı cest (bidirectional path tracing). Pouˇz´ıv´ame ovˇsem jen prvn´ıho dopadu paprsku z kamery a nav´ıc vrcholy cest od svˇeteln´ ych zdroj˚ u (tj. virtu´aln´ı bodov´e zdroje) se pˇrepouˇz´ıvaj´ı pro vˇsechny pixely.
4
2.4
St´ınov´ e mapy
Pro v´ ypocˇet viditelnosti mezi jedn´ım bodov´ ym zdrojem a vˇsemi viditeln´ ymi body sc´eny lze s v´ yhodou vyuˇz´ıt algoritmu st´ınov´ych map (shadow maps). St´ınov´e mapy funguj´ı ve dvou kroc´ıch: Nejprve vyrenderujeme sc´enu z pohledu svˇetla a do bufferu ukl´ad´ame vzd´alenost svˇeteln´eho zdroje a objektu sc´eny, ˇc´ımˇz vytvoˇr´ıme st´ınovou mapu. Ve druh´em pr˚ uchodu renderujeme uˇz norm´alnˇe z pohledu kamery. V kaˇzd´em bodˇe sc´eny se pak dotazujeme do st´ınov´e mapy a porovn´av´ame vzd´ alenost bodu od svˇetla s hodnotou ve st´ınov´e mapˇe: pokud je vzd´alenost bodu vˇetˇs´ı neˇz hodnota ve st´ınov´e mapˇe, pak je bod zast´ınˇen, jinak je osvˇetlen.
2.5
ˇ Sum
Pˇrid´ an´ım VPL vneseme do sc´eny i chyby(artefakty) v podobˇe m´ıst s vysokou intenzitou, lokalizovan´ ych typicky v ”roz´ıch sc´eny”- pokud je zde um´ıstˇeno nˇejak´e VPL. Pokud je VPL v rohu, jsou body sousedn´ı pˇrivr´ acen´e stˇeny velmi bl´ızko (vzd´alenost se bl´ıˇz´ı nule) a tud´ıˇz pˇresvˇetlen´e (geometrick´ y ˇclen G(x ↔ x0 ) zobrazovac´ı rovnice je extr´emnˇe vysok´ y (jde k ∞)). Vliv ˇsumu (pˇresvˇetlen´ a m´ısta) je dobˇre patrn´ y na n´asleduj´ıc´ım obr´azku:
2.6
Odstranˇ en´ı ˇ sumu oˇ rez´ av´ an´ım
Nahrad´ıme-li v´ ypoˇcet (11) pˇr´ıspˇevku VPL k osvˇetlen´ı bodu x pˇredpisem: L(x, ωo ) = Le (x, ωo ) +
n X
L(yk → x) min{c, G(yk ↔ x)fr (yk → x → ωo )},
(12)
k=1
pˇresvˇetlen´ a m´ısta zmiz´ı. Stane se tak d´ıky, tomu, ˇze hodnotu G(yk ↔ x)fr (yk → x → ωo ) shora omezili vhodnˇe zvolenou konstantou c. Toto ˇreˇsen´ı vˇsak nen´ı uspokojiv´e, nebot’ pˇrestoˇze se vzhled sc´eny zlepˇsil (zmizela pˇresvˇetlen´ a m´ısta), vnesli jsme do n´ı ve skuteˇcnosti dalˇs´ı chybu, protoˇze oˇrez´ an´ım jsme ztratili i ˇc´ ast energie, kter´a do sc´eny patˇrila (nevznikla ˇsumem).
3
V´ ypoˇ cet glob´ aln´ıho osvˇ etlen´ı v re´ aln´ em ˇ case
V t´eto kapitole se budeme zab´ yvat metodami, urychluj´ıc´ımi v´ ypoˇcet glob´aln´ıho osvˇetlen´ı s VPL.
3.1
Reflective Shadow Maps
Prvn´ı metoda se soustˇred´ı na urychlen´ı distribuce virtu´aln´ıch svˇetel. Budeme generovat pouze svˇetla pˇr´ımo viditeln´ a z re´ aln´eho svˇeteln´eho zdroje. Vyuˇzijeme st´ınov´e mapy, popsan´e v kapitole 2.4. Kaˇzd´ y bod uloˇzen´ y ve st´ınov´e mapˇe se stane nov´ ym VPL. Generujeme tedy pouze cesty ˇc´ıtaj´ıc´ı dva body (svˇeteln´ y zdroj a VPL).
5
3.1.1
Pˇ r´ıliˇ s mnoho svˇ etel
Nev´ yhodou t´eto metody je, ˇze pokud m´a st´ınov´a mapa vysok´e rozliˇsen´ı, vygeneruje se zbyteˇcnˇe velk´e mnoˇzstv´ı svˇetel, coˇz m´ a za n´ asledek zpomalen´ı v´ ypoˇctu nepˇr´ım´eho osvˇetlen´ı pˇri vykreslov´an´ı sc´eny. Tento probl´em lze ˇreˇsit napˇr´ıklad podvzorkov´an´ım svˇeteln´e mapy. Jinou moˇznost´ı je do v´ ypoˇctu osvˇetlen´ı bodu x zahrnout pouze relevantn´ı VPL. Pˇr´ıspˇevek virtu´aln´ıho svˇetla k intenzitˇe bodu x se vyn´ asob´ı v´ahou v z´avislosti na vzd´alenosti VPL od x ve st´ınov´e mapˇe (v projekci svˇetla).
3.2
Incremental Instant Radiosity
Nyn´ı pop´ıˇseme urychlovac´ı metodu, kter´a se zamˇeˇruje na pˇr´ıpad, kdy se svˇetla mohou pohybovat, sc´ena vˇsak z˚ ust´ av´ a statick´ a. Kl´ıˇcem k urychlen´ı je pˇredpoklad, ˇze se svˇetla mezi dvˇema sn´ımky pohnula pouze ”m´ alo”a tedy, ˇze st´ınov´e mapy v obou sn´ımc´ıch pro dan´e svˇetlo sd´ıl´ı vˇetˇsinu bod˚ u. V nov´em sn´ımku vyuˇzijeme virtu´aln´ıch svˇetel ze sn´ımku pˇredchoz´ıho. VPL, kter´a jsou zakryt´ a pˇrek´ aˇzkou nebo se nach´ azej´ı mimo ”zorn´e pole”svˇetla odstran´ıme a pˇrid´ame nov´a. Budeme se snaˇzit pˇrid´ avat nov´ a virtu´ aln´ı svˇetla tak, abychom z´aroveˇ n zachov´avali rovnomˇernost jejich pokryt´ı.
(a) VPL vytvoˇren´ a metodou Reflective Shadow Maps (b) V´ ypoˇcet nepˇr´ım´eho osvˇetlen´ı (pro oranˇzov´ y bod) (c) Posun svˇetla - jedno z virtu´ aln´ıch svˇetel se stane nevalidn´ım. Obr´ azek pˇrevzat z [5]. Algoritmus v bodech: 1. Urˇcen´ı platnosti vˇsech st´ avaj´ıc´ıch VPL 2. Odstranˇen´ı nevalidn´ıch VPL (v z´ajmu zachov´an´ı rovnomˇern´eho pokryt´ı i nˇekter´ ych validn´ıch) 3. Vytvoˇren´ı nov´ ych VPL 4. V´ ypoˇcet intenzity nov´ ych VPL 5. Projekce VPL podle nov´e pozice svˇetla 3.2.1
Odstraˇ nov´ an´ı VPL
Kromˇe validn´ıch svˇetel odstran´ıme i nˇekter´a dalˇs´ı, abychom udrˇzovali rovnomˇernost pokryt´ı. Kv˚ uli rychlosti vyuˇzijeme pro odstraˇ nov´ an´ı jednoduch´eho hladov´eho algoritmu. Budeme odstraˇ novat virtu´ aln´ı svˇetla z m´ıst, kde maj´ı nejvˇetˇs´ı hustotu (jsou mezi nimi mal´e vzd´alenosti). Nejprve z projekce VPL (z pohledu svˇetla) vytvoˇr´ıme triangulaci (vrcholy odpov´ıdaj´ı virtu´aln´ım svˇetl˚ um). Smaˇzeme svˇetlo, kter´e m´ a v triangulaci nejkratˇs´ı hrany. Poˇcet svˇetel, kter´a se mohou smazat vˇetˇsinou urˇc´ıme pˇredem (kv˚ uli zachov´ an´ı sn´ımkovac´ı frekvence).
6
3.2.2
Pˇ rid´ av´ an´ı VPL
Nov´ a svˇetla budeme pˇrid´ avat do m´ıst s nejmenˇs´ım pokryt´ım. Z triangulace vytvoˇr´ıme Voronoi˚ uv diagram a nalezneme bod, kter´ y m´a nejvˇetˇs´ı vzd´alenost k nejbliˇzˇs´ım virtu´ aln´ım svˇetl˚ um (bude to nˇekter´ y z pr˚ useˇc´ık˚ u hran diagramu) a do nˇej pˇrid´ame nov´e VPL. Vzd´ alenost se nepoˇc´ıt´ a ve sc´enˇe, ale na projekci svˇeteln´eho zdroje. Stejnˇe jako v pˇr´ıpadˇe maz´ an´ı, budeme poˇcet pˇridan´ ych svˇetel shora omezovat konstantou, abychom pˇr´ıliˇs nesniˇzovali sn´ımkvou frekvenci.
3.3
Imperfect Shadow Maps
Technika probran´ a v t´eto kapitole se zab´ yv´a urychlen´ım v´ ypoˇctu st´ınov´ ych map. C´ılem je aproximace glob´ aln´ıho osvˇetlen´ı dynamick´ ych sc´en v re´aln´em ˇcase. Pˇri generov´ an´ı st´ınov´e mapy nejprve n´ahodnˇe urˇc´ıme mnoˇzinu bod˚ u, kde vypoˇcteme hloubku. Hodnoty ve zb´ yvaj´ıc´ıch bodech budeme interpolovat pomoc´ı Pull-push algoritmu. 3.3.1
Pull-push algoritmus
Necht’ je st´ınov´ a mapa uloˇzen´ a ve ˇctvercov´e matici se stranou d´elky 2n . Vygenerujeme st´ınov´e mapy s niˇzˇs´ım rozliˇsen´ım o velikostech 2n−1 , ..., 1. C´ılem je interpolovat chybˇej´ıc´ı hodnoty. Interpolace m´ a dvˇe f´ aze: 1. Proch´ az´ıme od mapy s nejvyˇsˇs´ım rozliˇsen´ım k mapˇe s nejniˇzˇs´ım a poˇc´ıt´ame hodnoty pixel˚ u pr˚ umˇerov´ an´ım (ˇctyˇr jemnˇejˇs´ıch pixel˚ u z pˇredchoz´ı mapy). Pokud ˇz´adn´ y ze ˇctyˇr pixel˚ u nen´ı definov´ an, nech´ ame hodnotu nevyplnˇenou. 2. Proch´ az´ıme od mapy s nejniˇzˇs´ım rozliˇsen´ım. Tam, kde naraz´ıme na chybˇej´ıc´ı hodnotu ji vypln´ıme zkop´ırov´ an´ım hodnoty z pˇr´ısluˇsn´eho m´ısta hrubˇs´ı mapy. Pozn´ amka: Pokud pˇri pr˚ uchodu dol˚ u dospˇejeme k mapˇe, jeˇz m´a vˇsechny hodnoty definovan´e, nemus´ıme vytv´ aˇret dalˇs´ı mapy s hrubˇs´ım rozliˇsen´ım.
Reference [1] Haˇsan M., Kˇriv´ anek J., Walter B., Bala K., Virtual Spherical Lights for Many-Light Rendering of Glossy Scenes, Proc SIGGRAPH Asia ’09. [2] Keller Alexander, Instant radiosity. Proc. SIGGRAPH ’97. [3] Kollig Thomas, Keller Alexander, Illumination in the Presence of Weak Singularities, Monte Carlo And Quasi-monte Carlo Methods, 2004. [4] S. Laine et al., Incremental Instant Radiosity for Real-Time Indirect Illumination, Eurographics Symposium on Rendering (2007). [5] T. Ritschel et al., Imperfect Shadow Maps for Efficient Computation of Indirect Illumination, ACM Trans. Graph. 27(5) (Proceedings SIGGRAPH Asia 2008).
7