Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítačová grafika III – Path tracing Jaroslav Křivánek, MFF UK

Podobné prezentace


Prezentace na téma: "Počítačová grafika III – Path tracing Jaroslav Křivánek, MFF UK"— Transkript prezentace:

1 Počítačová grafika III – Path tracing Jaroslav Křivánek, MFF UK

2 Monte Carlo integrování Obecný nástroj k numerickému odhadu určitých integrálů 11 f(x)f(x) 01 p(x)p(x) 22 33 44 55 66 Integrál: Monte Carlo odhad I: „V průměru“ to funguje: PG III (NPGR010) - J. Křivánek

3 Příklady MC estimátorů

4 Odhad irradiance – uniformní vzork. Uniformní vzorkování: Estimátor: PG III (NPGR010) - J. Křivánek

5 Odhad irradiance – cos vzorkování Importance sampling: Estimátor: PG III (NPGR010) - J. Křivánek

6 6

7 Odhad irradiance – vzrokování zdroje PG III (NPGR010) - J. Křivánek

8 Odhad irradiance – vzrokování zdroje Uniformní vzorkování plochy zdroje: Estimátor PG III (NPGR010) - J. Křivánek

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

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

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 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

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

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

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

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

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

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

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 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 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

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

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

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 (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 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

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

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

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

34 Jeden člen kombinovaného odhadu f(x) 01 p 1 (x) p 2 (x) PG III (NPGR010) - J. Křivánek

35 Aritmetický průměr 01 PG III (NPGR010) - J. Křivánek

36 Vyrovnaná heuristika 01 PG III (NPGR010) - J. Křivánek


Stáhnout ppt "Počítačová grafika III – Path tracing Jaroslav Křivánek, MFF UK"

Podobné prezentace


Reklamy Google