380 likes | 537 Views
Glob ális illumináció (GI). Szirmay-Kalos László. Tone mapping. pixel. Virtuális világ. . . . . Képszintézis = valós világ illuziója. színérzet. Valós világ. Sugársűrűség = egységnyi látható felület egységnyi térszögbe kisugárzott teljesítménye. . Árnyalási egyenlet.
E N D
Globális illumináció (GI) Szirmay-Kalos László
Tone mapping pixel Virtuális világ Képszintézis = valós világ illuziója színérzet Valós világ Sugársűrűség = egységnyi látható felület egységnyi térszögbe kisugárzott teljesítménye
Árnyalási egyenlet Radiancia = Emisszió + Megvilágítás * Visszaverődés L(x, ) = Le (x, ) + L(y, w’)fr(’,) cos’ dw’ y ’ ’ L = Le + tL x
GI megoldás • Lokális illumináció • Expanzió • Iteráció L = Le+L Le+Le L = Le+L = Le+Le+ 2L= Le+Le+ 2 Le + 3L = nLe = Le+(Le+(Le +…)) Ln = Le+ Ln-1
Nagydimenziós integrál színtér kép Le wn w1 R képszintézis = integrál a fényutak terében
Hogyan működik a természet? • 100 W égő 1042 fotont emittál másodpercenként • Fotonok által eltalált felület meghatározása fénysebességgel és párhuzamosan • Fotonok véletlenszerűen elnyelődnek, vagy véletlen irányban visszaverődnek • A fotonok egy kis része a szembe jut
Szimuláció • elfogadható számítási idő: 107 részecske • alapművelet: ray-shooting: egy részecske által eltalált felület • Véletlenszerű irány generálása • Szemhozzájárulás számítása
Mintaszám drasztikus csökkentése • Sűrű minták: • fényutak kitöltik a lehetséges teret • Fontosság szerinti mintavétel: • Az alacsonyteljesítményű úttartományokban kevesebb minta is elég • Gyors számítás • útszámítás • koherencia
Háromszögek Száma Átlagos magasság alap Error = f/2/M·1/M·M= f/2/M=O(M-1) Sűrű minták f (z) dz 1/M f (zi) M minta D f 0 1
= F(x)dx F(x) Magasabb dimenziókban y f (x,y) dy dx x n = M mintaszám Error=O(n-1) = O(M-0.5)
Determinisztikus, Alacsony diszkrepancia quasi Monte Carlo Véletlen: Monte Carlo method Sűrű minták magasabb dimenizókban
10 samples/pixel Monte-Carlo Integálás Integrál = várható érték f (z) dz =f (z)/p(z) ·p(z) dz = =E[f (z)/p(z)]1/M f(zm)/p(zm) 100 samples/pixel 1 sample/pixel Error < 3·(Standard deviation of f /p) ·M-1/2 99.7% konfidencia szinttel
Fontosság szerinti mintavételezés • f /p variációja legyen kicsi: ahol f nagy p is nagy f /p f /p f f p p jó rossz hasonló f /p minták Ritka, nagy f /p minták
Véletlen bolyongás pixel L =Le + Lin(w’) fr cos’ dw’ w: visszaverődés sűrűség • BRDF mintavétel: arányosfr cos’ • Fényforrás mintavétel
dA/cos dA Eldobott minták Diffúz BRDF mintavételezés dw dwcos • 1. Egyenletes minták az egységnégyzetben • 2. Körön kívüli minták eldobása • do { x = r1, y = r2 } while (x2+ y2 > 1) • 3. Gömbre vetítés • z = 1 - x2- y2
Végtelen dimenziós integrálok: Orosz rulett • 1. MC integrál: • wi(Le +...) dwi = E[wi(Le +...) /p(wi)]= E[ Lrefl ] • 2. Számítsd ki s valószínűséggel, különben 0 • 3. Kompenzálj s-sel osztással • Várható érték: • E[ Lrefl* ] = s E[ Lrefl/s ] + (1-s) 0 = E[ Lrefl ] • Szórás nő: • D2[ Lrefl* ] = s E[ (Lrefl/s)2 ] + (1-s) 0 - E2[ Lrefl ]= • (1/s - 1) E[(Lrefl)2 ] + D2[ Lrefl ]
No caustics shadow rays shooting visibility rays No visible mirrors and glass Fényút építés gathering
Gyűjtés p ray FOR each pixel p Color color = 0 FOR sample = 1 to M Ray ray = sample ray from eye through pixel p samplecolor = Trace(ray) color += samplecolor/M ENDFOR WritePixel(p, color) ENDFOR
Lövés p ray Clear Image FOR sample = 1to M Ray ray = sample ray from the lightsource power of the ray = Le cos /p/M Shoot(ray) // add to affected pixel ENDFOR
Path tracing Le1 Le3 Le2 • BRDF sampling: Pr{next direction} Brdf cos ‘ • Russian roulette: Termination with 1- ai • P= Le1+Le2 w1/p1/a1 + Le3 w1/p1/a1 w2/p2/a2 1 1 1
Fényforrás mintavétel shadow rays Le1* Le3* Le2* L = Le+ tLe+ t 2Le + t 3Le ... = Le+(tLe)+t(tLe)+ t 2(tLe) + ... Le1* Le2 * Le3*
Path Tracer Color Trace(ray, depth) (object, x) = Intersect(ray) IF no intersection THEN RETURN Lsky color = Direct Lightsource(x, -ray.dir) if (depth == 0) color += Le (x, -ray.dir) prob = RussianRoulette (normal, -ray.dir) IF (prob == 0) RETURN color prob *= BRDFSampling (newdir, normal, -ray.dir) IF (prob == 0) RETURN color color += Trace(Ray(x, newdir), depth+1) * Brdf(newdir, normal, -ray.dir) cos’ / prob RETURN color
Foton térkép gyűjtés • Hit: • Position • Direction • Power • Normal vector Gömb n foton találat L=Lin frcosd= dF/(dA cos d) frcosd = r2 L= Fifr
Virtuális fényforrások 600 x 600 pix 5 sec
Virtuális fényforrások kiterjesztés Caustics lövésből Ideális tükröző, törő felületek: path tracing
Metropolis light transport Mutációk: irány, lépésszám váltás
Klasszikus fontosság szerinti mintavétel Importance: I 1. I ami közelíti f-t 2. I normalizálása pdf = I / I dx 2.Valószínűségeloszlás CDF(y) = y pdf dx 3. Mintavétel: Egyenletes eloszlás transzformálása r in [0,1]: x = CDF-1(r) Integrandus: f Sűrűség: pdf x CDF r
Metropolis mintavételezés 1. Iami hasonlóf 2. Normalizáló konstans: b = I dx 3.Mintavétel: Mutáció/Elfogadás Folyamat, amely x-et I(x)/bvalószínűségsűrűséggel mintavételezi Importance: I Integrandus: f x
Elfogadási valószínűség • “Bármilyen” mutációT(xy) • Elfogadási valószínűséga(xy) úgy, hogy a határeloszlás a fontossággal arányos legyen: p(x) I(x) a(xy) a(yx) I(y) T(yx) I(x) T(xy) p(x) T(xy) a(xy) = y x Maximális konvergencia: Detailed balance I(y)·T(y x) a(x y)=min{ ,1} I(x)·T(x y)
Metropolis algoritmus FOR i=1 TO M DO Using zi choose another random, tentative point zt a(zi zt) = (I(zt) T(ztzi)) /(I(zi) T(zizt)) // accept with probability a(zi zt) Generate random number r in [0,1] IF r < a(zi zt) THEN zi+1 = zt ELSE zi+1 = zi Use zi+1in the integral quadrature ENDFOR