Transcript grafika

Globális illumináció (GI)
Szirmay-Kalos László
Képszintézis = valós világ illuziója
Tone
mapping
pixel
Virtuális világ

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, ’) fr(’,) cos’ d’

’
y
’
L = Le +
t
x
L
GI megoldás


Lokális illumináció
t
t
Expanzió
L = L +tL = L +tL +t L =
L +tL +t L +t L =  t
L +t(L +t (L +…))
Iteráció
Ln = Le+t Ln-1
L = Le+ L  Le+ Le
e
e
e

e
e
2
e
e
e
e
3
2
nLe
=
Nagydimenziós integrál
színtér
Le
n
1
R
képszintézis = integrál a fényutak terében
kép
Követett fényutak:
Lokális illumináció
pixel
Követett fényutak:
Sugárkövetés
pixel
Követett fényutak:
Globális illumináció
pixel
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:
–

Fontosság szerinti mintavétel:
–

fényutak kitöltik a lehetséges teret
Az alacsonyteljesítményű úttartományokban
kevesebb minta is elég
Gyors számítás
–
–
útszámítás
koherencia
Sűrű minták
Df
 f (z) dz 1/M  f (zi )
M minta
0
1
Átlagos
magasság
alap
Háromszögek
Száma
Error = Df/2/M·1/M·M= Df/2/M=O(M-1)
Magasabb dimenziókban
y
  f (x,y) dy dx =  F(x) dx
x
F(x)
n = M mintaszám
Error=O(n-1) = O(M-0.5)
Sűrű minták magasabb
dimenizókban
Véletlen:
Monte Carlo method
Determinisztikus,
Alacsony diszkrepancia
quasi Monte Carlo
Monte Carlo - quasi-Monte Carlo
Monte-Carlo Integálás
Integrál = várható érték
 f (z) dz =  f (z)/p(z) ·p(z) dz =
10
samples/pixel
100
1 sample/pixel
samples/pixel
=E[f (z)/p(z)]1/M  f(zm)/p(zm)
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
f /p
f
p
p
jó
hasonló f /p minták
rossz
Ritka, nagy f /p minták
Véletlen bolyongás
pixel
L =Le + Lin (’) fr cos’ d’
w: visszaverődés sűrűség
BRDF mintavétel: arányos fr cos’
 Fényforrás mintavétel

Diffúz BRDF mintavételezés
d
dA/cos

d cos
Eldobott minták
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
dA
Végtelen dimenziós
integrálok: Orosz rulett
1. MC integrál:
wi(Le +...) di = E[wi(Le +...) /p(i)] = 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 ]
Fényút építés
No caustics
gathering
shadow rays
shooting
visibility rays
No visible
mirrors and glass
Gyűjtés
ray
p
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
ray
p
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*
t t L + t L ... =
L +(tL )+t (t L )+ t (tL ) + ...
L = Le+ Le+
e
e
Le1*
2 e
3 e
e
Le2 *
2
e
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
Foton térkép gyűjtés
Hit:
Position
Direction
Power
Normal vector
Gömb
n foton találat
L= Lin fr cos d =  dF/(dA cos d) fr cos d
L= 
DFi / DA
fr
DA = r2
Direkt megjelenítés
Final gathering
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
Integrandus: f
2. Valószínűségeloszlás
y
Sűrűség: pdf
CDF(y) =  pdf dx
x
CDF
r
3. Mintavétel:
Egyenletes eloszlás
transzformálása
r in [0,1]:
x = CDF-1(r)
Metropolis mintavételezés
Importance: I
1. I ami hasonló f
2. Normalizáló konstans:
b =  I dx
Integrandus: f
x
3. Mintavétel:
Mutáció/Elfogadás
Folyamat, amely x-et
I(x)/b valószínűségsűrűséggel
mintavételezi
Elfogadási valószínűség


“Bármilyen” mutáció T(xy )
Elfogadási valószínűség a(xy) úgy, hogy a
határeloszlás a fontossággal arányos legyen: p(x)  I(x)
a(xy )
p(x) T(xy) a(xy)
a(yx )
I(y) T(yx)
=
I(x) T(xy )
y
x
Detailed balance
Maximális konvergencia:
a(x y) = min{
I(y)·T(y x)
I(x)·T(x y)
,1}
Metropolis algoritmus
FOR i=1 TO M DO
Using zi choose another random, tentative point zt
a(zi  zt) = (I(zt) T(zt  zi)) /(I (zi) T(zi  zt))
// 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+1 in the integral quadrature
ENDFOR
PRT: Precomputed Radiance Transfer