Transcript grafika

Globális illumináció (GI)
Szirmay-Kalos László
Á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
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
3
e
2
n e
=
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
Numerikus integrálás
Df
 f (z) dz 1/M  f (zi )
M minta
0
1
Átlagos
magasság
alap
Háromszögek
Száma
Hiba = 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
dimenziókban
Véletlen:
Monte Carlo method
Determinisztikus,
Alacsony diszkrepancia
quasi Monte Carlo
Monte Carlo Integrá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)
Hiba < 3·( f /p szórása) ·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
Nincs
kausztika
gathering
shadow rays
shooting
visibility rays
Nincsenek
látható tükrök és törés
Path tracing
Le1
Le3
Le2



BRDF mintavétel: Pr{köv irány}  Brdf cos ‘
Orosz rulett: Befejezés 1- ai valószínűséggel
P= Le1+Le2 w1/p1/a1 + Le3 w1/p1/a1 w2/p2/a2
1
1
1
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
Light tracing
d
L(x,) = dA cos’d
is selected with probability pe  Le(x,1)cos
Pr{next direction}  BRDF cos
Termination with 1- ai
Source
P =
Lecos/pe w1/p1/a1 w2/p2 /a2 … weye g
 total
1
1
Bi-directional path tracing
pixel
fr(y) cos y fr(x) cos x
L=  /(dx cos  d)= in
|x – y|2
Multiple importance sampling
pixel
f
g1
g2
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 =  d/ (dA cos d) fr cos d
L= 
Di / DA
fr
DA = r2
Direkt megjelenítés
Final gathering
Virtuális fényforrások
fr(y) cos y fr(x) cos x
L= in
v(x,y)
2
|x – y|
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
Mutációk az elsődleges
mintavételi térben
u5
u7, u9
u16
u1, u3
u11
u2, u4 , u6, u8
u12, u14
Fényutak
u10
U=(u1 ,…)
Véletlen számok
Mutációk az elsődleges
mintavételi térben
U=(u1 ,…)
Path space
Primary sample space
Mutációk az elsődleges
mintavételi térben
random
number
generation
path
generation
adding
the
contribution
primary sample
space of random
numbers
Metropolis