Path Tracing - Biblioteka.sk

Panta Rhei Doprava Zadarmo


A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Path Tracing

Path tracing je fotorealistický 3D vykresľovací algoritmus, ktorý využíva integrovanie metódou Monte Carlo na výpočet intenzity svetla, ktoré sa odrazí od jednotlivých bodov na povrchu objektu scény a dopadá do virtuálnej kamery. Algoritmus jednotlivo simuluje tok svetla na scéne, ktoré sa pohybujú smerom od svetla do kamery. Medzi jeho hlavné výhody patrí jeho fyzikálna vernosť, ktorá umožňuje zachytávať javy ako nepriame osvetlenie, mäkké tiene alebo kaustiky pod vodnou hladinou.

Práve pre jeho presnosť a nestrannosť sa dnes využíva ako referenčný algoritmus pri testovaní iných, rýchlejších algoritmov. Vykresľovanie kvalitných obrázkov pomocou path tracingu môže trvať niekoľko desiatok až stoviek hodín.

História

V roku 1986 James Kajiya predstavil zobrazovaciu rovnicu, popri ktorej zároveň publikoval aj algoritmus, ktorý odhaduje jej numerickú aproximáciu. O desať rokov neskôr Eric P. Lafortune priniesol niekoľko vylepšení, medzi ktoré patril aj algoritmus bidirectional path tracing.

V roku 2009 Austin Robinson z Nvidia prezentoval prvú komerčnú implementáciu algoritmu path tracing, ktorý beží na grafickej karte. Tá vo veľkej miere ovplyvnila ďalšie implementácie, ktorým pomohlo aj vyzretie technológií pre programovanie na GPU ako sú CUDA alebo OpenCL.

Opis

Zobrazovacia rovnica, ktorú publikoval Kajiya sa zdží troch zásad optiky: Princíp globálneho osvetlenia, Princíp ekvivalencie (odrazené svetlo je ekvivalentné vyžarovanému svetlu) a Princíp smerov (odrazené aj refraktované svetlo majú svoj smer).

V svete okolo nás, objekty sú viditeľné pre ich odrazivosť svetla. Z tohto hľadiska možno pozorovať, že sa objekty (aj odrazeným) svetlom osvetľujú navzájom. Z tohto jednoduchého pozorovania vychádzajú ďalšie dva princípy:

I. Pre danú uzavretú scénu, každý objekt na scéne musí vyžarovať svetlo na každý objekt.

II. Nie je žiadny rozdiel v správaní svetla, ktoré prichádza priamo od svetelného zdroja a svetla, ktoré je odrazené.

Teoretické pozadie

Algoritmus aproximuje radianciu, ktorá zo scény prichádza do kamery zo scény, teda tú ktorá je vyžarovaná priamo, aj tú, ktorú odrážajú osvetlené objekty v scéne. Pri odrazenom svetle z objektov na scéne do kamery je nutné uvažovať nielen svetlo, ktoré dopadá na ne priamo zo svetelného zdroja, ale aj to, ktoré ich osvetľuje po odraze zo scény. Preto je nutné najprv poznať zobrazovaciu rovnicu:

Ktorá hovorí o tom, že pre daný bod x na scéne v smere je súčet radiance, ktorá je z bodu x vyžarovaná priamo (v prípade svetelného) zdroja a integrálu prichádzajúcej radiancie z celej hemisféry funkcie BRDF doplnenú o faktor . Výraz vyjadruje presečník z bodu x v smere so scénou a je prichádzajúca radiancia z bodu do bodu x.

V komplikovanejších scénach však nie je možné v krátkom čase vypočítať priestorový integrál analyticky. V tomto prípade je nutné použiť numerickú metódu pre výpočet integrálu. V prípade algoritmu path tracing sa využíva metóda Monte Carlo, pre ktorý príslušný estimátor bude mať tvar:

Kde je náhodne vygenerovaný smer a je pravdepodobnosť, s akou bol smer vygenerovaný.

Popis algoritmu

Pre jednoduchosť algoritmus počíta s kamerou ako s bodom. Odtiaľ cez jednotlivé pixely vedie lúče a skúša, či sa od scény neodrazí do svetla. Ak áno, vypočíta príspevok v danom bode a vráti sa naspäť cez odrazené miesta postupne až ku kamere, pričom v odrazených miestach eliminuje intenzitu svetla v závislosti na odrazivosti konkrétneho bodu na scéne.

Prvý krok algoritmu, pri ktorom vedie lúč smerom od kamery na scénu
  1. Na začiatku nech x je pozícia kamery
  2. Zvolí sa smer ω cez pixel na obrazovke smerom od kamery do scény
  3. Nájde sa priesečník y smeru ω so scénou
Ak je y súčasť svetla, k medzivýsledku pripočíta intenzitu svetla, ktoré je z bodu y vyžarované v smere -ω (z bodu y do x)
Ak y neexistuje (nenájde priesečník), vráti sa a pripočíta sa farba okolia
Ak y je bod na scéne s nenulovou odrazivosťou, pokračuje s bodom y ako s bodom x, odtiaľ sa vygeneruje nový smer ω (na základe distribučnej funkcie) a pokračuje sa v bode 3 (rekurzívne), kde sa hľadá nový priesečník. Vypočítaný príspevok po odraze pripočíta k medzivýsledku.

Uvedený úsek algoritmu je pre 1 pixel. Výsledná scéna vznikne, ak sa spustí niekoľkokrát pre každý pixel a v rámci jedného pixelu sa hodnoty spriemerujú. Kvalita obrázku priamo závisí na počte opakovaní algoritmu na jednom pixeli.

Pseudokód

function renderImage() 
{
   for all pixels
   {
      Color pixelCol = (0,0,0);
      for k = 1 to N
      {
         wk := náhodný smer cez k- pixel
         pixelCol += getLi(camPos,wk)
      }
   }
}
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() < ρ // ruská ruleta - pravdepodobnosť prežitia
      {
         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;
}

Výber náhodného smeru

Algoritmus ako je uvedený vyššie používa metódu SampleDir() o ktorej vieme len to, že vygeneruje nejaký smer s nejakou pravdepodobnosťou . Jedno z možných riešení je, že metóda bude vyberať smery uniformne z celej hemisféry, ktorá sa však ukazuje ako korektná, ale z výsledných obrázkov šum mizne veľmi pomaly. V praxi je výhodnejšie vyberať prednostne tie smery, kde očakávame vyšší príspevok svetla.

Vzorkovanie podľa BRDF

V závislosti na charakteristike materiálu a vstupnom smere, vygenerujeme nový smer s hustotou podľa funkcie odrazivosti. Napríklad v prípade zrkadlovehó povrchu bude výsledný smer zakaždým odrazený v smere od kolmice, v prípade ideálne Lambertovského povrchu, bude vzorkovanie prebiehať s hustotou (tzv. cosínové vzorkovanie), kde je uhol medzi vygenerovaným smerom a normálou plochy v bode x.

Vzorkovanie svetla

Ak sú svetelné zdroje príliš malé, alebo dokonca sú v scéne vyjadrené ako matematický bod (nemajú nikdy priesečník s náhodne vygenerovaným smerom), môže trvať veľmi dlho, kým algoritmus vygeneruje taký smer, že bude mať s nimi priesečník. V tomto prípade je výhodné odhadovať zvlášť priame a zvlášť nepriame osvetlenie. Kým stratégia pre odhad nepriameho osvetlenia môže ostať napr. vzorkovaním podľa BRDF, priame osvetlenie algoritmus odhadne zvlášť vygenerovaným smerom zo svetelného zdroja.

Kombinované vzorkovanie

Predstavme si prípad, kde materiál je „takmer zrkadlový“ a svetlo s veľmi veľkou plochou. Ak budeme vzorkovať z plochy svetla, je veľmi nízka pravepodobnosť, že sa trafíme práve do úzkeho intervalu smerov , ktorý je materiál schopný odraziť v smere s nejakou nezanedbateľnou radian- ciou. Ak budeme mať ešte silnejší predpoklad, a to že materiál je „dokonale zrkadlový“, budeme mať len jeden prípustný smer . Ten však nami zvolená technika nikdy nevygeneruje. V týchto prípadoch bude lepšie použiť vzorkovanie podľa BRDF.

Naopak, predpokladajme, že materiál je „dokonale difúzny“ a svetlo s veľmi malou plochou. Ak budeme vzorkovať náhodne smery z celej hemisféry, opäť dostávame veľmi nízku pravdepodobnosť, že trafíme zdroj svetla. Aj v tomto prípade môžeme mať silnejší predpoklad, a to keď svetelný zdroj bude zanedbateľne malý – môžeme ho zjednodušit’ až na bodový svetelný zdroj. V tomto prípade technika vzorkovania nikdy nevygeneruje smer, kde sa trafí práve do bodu, kde je umiestnené svetlo, preto bude lepšie použiť techniku z prvého prípadu.

Oba prípady môžu nastať dokonca v rámci jednej scény. Metóda vyrovnanej heuristiky využíva obe metódy vzorkovania naraz a do výsledku dáva ich súčet upravený o váhu s akou pravdepodobnosťou by boli vygenerované tou druhou metódou.

Majme smer ktorý bol vygenerovaný metódou vzorkovania svetla, smer , ktorý bol vygenerovaný metódou vzorkovania podľa BRDF. Pravdepodobnosť bude príslušná pravdepodobnosť z prvej metódy, príslušná pravdepodobnosť pre metódu vzorkovania podľa BRDF. Pri tejto metóde vzorkovania potrebujeme ďalšie dve hodnoty a to, aká by bola pravdepodobnosť, keby sme smery a vygenerovali v druhej stratégií. Formálne


Zdroj: Wikipedia.org - čítajte viac o Path Tracing





Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky použitia.

Your browser doesn’t support the object tag.

www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk