Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Počítačová grafika III – Path tracing Jaroslav Křivánek, MFF UK Jaroslav.Krivanek@mff.cuni.cz
2
Monte Carlo integrování Obecný nástroj k numerickému odhadu určitých integrálů 11 f(x)f(x) 01 p(x)p(x) 22 33 44 55 66 Integrál: Monte Carlo odhad I: „V průměru“ to funguje: PG III (NPGR010) - J. Křivánek 2012 2
3
Příklady MC estimátorů
4
Odhad irradiance – uniformní vzork. Uniformní vzorkování: Estimátor: PG III (NPGR010) - J. Křivánek 2012 4
5
Odhad irradiance – cos vzorkování Importance sampling: Estimátor: PG III (NPGR010) - J. Křivánek 2012 5
6
6
7
Odhad irradiance – vzrokování zdroje PG III (NPGR010) - J. Křivánek 2012 7
8
Odhad irradiance – vzrokování zdroje Uniformní vzorkování plochy zdroje: Estimátor PG III (NPGR010) - J. Křivánek 2012 8
9
9
10
10
11
Plošné zdroje světla 1 vzorek na pixel 9 vzorků na pixel 36 vzorků na pixel PG III (NPGR010) - J. Křivánek 2012 11
12
Přímé osvětlení na ploše s obecnou BRDF Odhadovaný integrál Estimátor (uniformní vzorkování povrchu zdroje) PG III (NPGR010) - J. Křivánek 2012 12
13
Nepřímé osvětlení na ploše s obecnou BRDF Odhadovaný integrál Estimátor pro vzorkování směrů s obecnou pdf p( ) PG III (NPGR010) - J. Křivánek 2012 13 PDF úměrná nebo velmi podobná BRDF
14
Distribution Ray Tracing Path tracing
15
Sledování cest od kamery renderImage() { for all pixels { Color pixelCol = (0,0,0); for k = 1 to N { wk := náhodný směr skrz k-tý pixel pixelCol += getLi(camPos,wk) } return Lo / N } PG III (NPGR010) - J. Křivánek 2012 15
16
Distribution Ray Tracing (Cook 84) getLi(x, wi) { hit := NearestIntersect(x, wi) wo := -wi; y := hit.pos; if no intersection return backgroundCol; else { Lo = (0,0,0) for k = 1 to N { wk := náhodný směr na hemisféře s hustotou p(w) Lo += getLi(y, wk) * fr(y, wk, wo) * dot(hit.n,wk) / pdf(wk) } return Lo / N + directLighting (y, wo); } PG III (NPGR010) - J. Křivánek 2012 16
17
Distribution Ray Tracing Ad hoc ukončení rekurze 1. maximální povolená hloubka 2. minimální povolený příspěvek Oba tyto přístupy vedou k systematické chybě (bias) Zásadní problém Exponenciální růst počtu paprsků s hloubkou rekurze PG III (NPGR010) - J. Křivánek 2012 17
18
Sledování cest (Path tracing, Kajiya86) Pouze jeden sekundární paprsek 1. Náhodný výběr interakce (ideální lom, difúzní odraz, …) 2. Importance sampling podle vybrané interakce Přímé osvětlení Doufej, že náhodně vygenerovaný paprsek trefí zdroj, anebo Vyber náhodně jeden vzorek na jednom zdroji světla Trasuj stovky cest přes každý pixel a zprůměruj výsledek Výhoda: žádná exploze počtu paprsků kvůli rekurzi PG III (NPGR010) - J. Křivánek 2012 18
19
Path Tracing – Implicitní osvětlení getLi(x, w) { Color thrput = (1,1,1) Color accum = (0,0,0) while(1) { hit = NearestIntersect(x, w) if no intersection return accum + thrput * bgRadiance(x, w) if isOnLightSource(hit) accum += thrput * Le(hit.pos, -w) ρ = reflectance(hit.pos, -w) if rand() < ρ // russian roulette – survive (reflect) wi := SampleDir(hit) thrput *= fr(hit.pos, wi, -w) * dot(hit.n, wi) / (ρ*pdf(wi)) x := hit.pos w := wi else // absorb break; } return accum; } PG III (NPGR010) - J. Křivánek 2012 19
20
Ukončení rekurze – Ruská ruleta Pokračuj v rekurzi s pravděpodobností q Uprav váhu faktorem 1 / q PG III (NPGR010) - J. Křivánek 2012 20
21
Výběr náhodného směru – Importance Sampling getLi(x, w) { Color thrput = (1,1,1) Color accum = (0,0,0) while(1) { hit = NearestIntersect(x, w) if no intersection return accum + thrput * bgRadiance(x, w) if isOnLightSource(hit) accum += thrput * Le(hit.pos, -w) ρ = reflectance(hit.pos, -w) if rand() < ρ // russian roulette – survive (reflect) wi := SampleDir(hit) thrput *= fr(hit.pos, wi, -w) * dot(hit.n, wi) / (ρ * pdf(wi)) x := hit.pos w := wi else // absorb break; } return accum; } PG III (NPGR010) - J. Křivánek 2012 21
22
Obyčejně vzorkujeme s hustotou „co nejpodobnější“ součinu f r ( i, o ) cos i Ideálně bychom chtěli vzorkovat podle L i ( i ) f r ( i, o ) cos i, ale to neumíme, protože neznáme L i Co když bude hustota přesně úměrná f r ( i, o ) cos i ? PG III (NPGR010) - J. Křivánek 2012 22 Výběr náhodného směru – Importance Sampling
23
„Ideální“ BRDF Importance Sampling Normalizace (integrál pdf musí být = 1) PG III (NPGR010) - J. Křivánek 2012 23 odrazivost
24
„Ideální“ BRDF IS v Path Traceru Obecná hustota (pdf)... thrput *= fr(.) * dot(.) / ( ρ * p(wi) ) „Ideální“ BRDF importance sampling... thrput *= 1 PG III (NPGR010) - J. Křivánek 2012 24
25
Pravděpodobnost přežití cesty getLi(x, w) { Color thrput = (1,1,1) Color accum = (0,0,0) while(1) { hit = NearestIntersect(x, w) if no intersection return accum + thrput * bgRadiance(x, w) if isOnLightSource(hit) accum += thrput * Le(hit.pos, -w) ρ = reflectance(hit.pos, -w) if rand() < ρ // russian roulette – survive (reflect) wi := SampleDir(hit) thrput *= fr(hit.pos, wi, -w) * dot(hit.n, wi) / (ρ * p(wi)) x := hit.pos w := wi else // absorb break; } return accum; } PG III (NPGR010) - J. Křivánek 2012 25
26
Pravděpodobnost přežití cesty Použití odrazivosti jako p-nosti přežití dává smysl Pokud plocha odráží jen 30% energie, pokračujeme pouze s 30% pravděpodobností. Co když neumím spočítat ? Alternativa 1. Nejdříve vygeneruj náhodný směr podle p( i ) 2. Pro „ideální“ BRDF IS stejné jako původní metoda PG III (NPGR010) - J. Křivánek 2012 26
27
Zpět k obecnému MC integrování – „Multiple Importance Sampling“
28
Multiple Importance Sampling f(x) 01 p 1 (x) p 2 (x) PG III (NPGR010) - J. Křivánek 2012 28 (Veach & Guibas, 95)
29
Multiple importance sampling Máme dáno n vzorkovacích „technik“ (hustot pravděpodobnosti) p 1 (x),.., p n (x) Z každé techniky (hustoty) vybereme n i vzorků X i,1,.., X i,n i Kombinovaný estimátor PG III (NPGR010) - J. Křivánek 2012 29 vzorkovací techniky vzorky z jednotlivých technik kombinační váhy (mohou být různé pro každý vzorek)
30
Nestrannost kombinovaného odhadu Podmínka pro váhové funkce PG III (NPGR010) - J. Křivánek 2012 30
31
Volba váhových funkcí Cíl: minimalizovat rozptyl kombinovaného estimátoru 1. Aritmetický průměr (velmi špatná kombinace) 2. Vyrovnaná heuristika (velmi dobrá kombinace) …. PG III (NPGR010) - J. Křivánek 2012 31
32
Vyrovnaná heuristika (Balance heurist.) Kombinační váhy Výsledný estimátor (po dosazení vah) příspěvek vzorku nezávisí na tom, ze které byl pořízen techniky (tj. pdf) PG III (NPGR010) - J. Křivánek 2012 32
33
Vyrovnaná heuristika (Balance heurist.) Vyrovnaná heuristika je téměř optimální Žádný kombinovaný estimátor nemůže mít rozptyl „o mnoho“ menší než vyrovnaná heuristika Další možné kombinační heuristiky Maximální heuristika Mocninná heuristika viz. Veach 1997 PG III (NPGR010) - J. Křivánek 2012 33
34
Jeden člen kombinovaného odhadu f(x) 01 p 1 (x) p 2 (x) PG III (NPGR010) - J. Křivánek 2012 34
35
Aritmetický průměr 01 PG III (NPGR010) - J. Křivánek 2012 35
36
Vyrovnaná heuristika 01 PG III (NPGR010) - J. Křivánek 2012 36
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.