Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Ray tracing: slepá ulička nebo budoucnost grafiky?

10.9.2008, Petr Štefek, článek
Ray tracing: slepá ulička nebo budoucnost grafiky?
Intel vehementně propaguje alternativní metodu renderování v počítačových hrách zvanou ray tracing. Nvidia naopak stojí za osvědčenou současnou metodou rasterizace. AMD přešlapuje a mlčí, ale nová Cinema 2.0 a neoficiální dema se přiklání na stranu Intelu.

Úvod do světa ray tracingu


Ray tracing je v poslední době často skloňován v souvislosti s budoucností počítačové grafiky, ale metoda sama není žádnou novinkou. Samotný ray tracing je založen na principu velmi podobném tomu, jak vnímáme obraz světa lidským okem. Ray tracing jako takový je pouze jednou z mnoha metod renderování, jako je ray casting nebo rasterizace.

Tato metoda byla doposud nasazována pouze tam, kde bylo možné na výsledný render čekat delší dobu, což je především doména filmových efektů nebo statických obrázků. Pro počítačovou grafiku je nutné, aby vše probíhalo v reálném čase. V předešlých letech nebylo vůbec možné uvažovat nad tím, že by jakýkoli domácí počítač byl schopen podobnou úlohu zvládnout. Poslední demonstrace Intelu na mnohojádrových systémech s procesory Xeon hovoří za vše, ale ani v konkurenčním táboru nikdo nespí, a tak můžeme vidět ray tracing i v podání Nvidia a jejích profesionálních systémech Quadro.


Fotografie nebo renderovaná scéna?

Ray tracing je založen na principu fyzikálně korektního obrazu založeného na paprscích vycházejících ze zdroje (kamera), kde je sledována dráha paprsku a jeho interakce s objekty, které mají v této virtuální scéně figurovat. Mnoho čtenářů si může ray-tracing velmi dobře splést s velmi podobnou metodou zvanou ray casting, která je založena na podobném principu.

Každý paprsek je vždy otestován na vznik průniku s předmětem v dané scéně a v bodě tohoto průniku je určena úroveň osvětlení a vlastnosti objektu respektive bodu (fyzikální vlastnosti, které ovlivňují do značné míry reflexe, refrakce a další efekty) a poté konečně jeho výsledná barva. Pokud je daný objekt (potažmo pixel) odrazivý nebo průsvitný, je k dosažení požadované efektu často třeba kombinovat data několika takovýchto paprsků.


Princip ray tracingu


Ray casting - zjednodušený ray tracing?


Ray casting pracuje na stejném principu jako ray tracing, je to v podstatě jeho odnož, ale rozdíl spočívá v tom, že na rozdíl od ray tracingu počítá s paprskem (primárním) vyslaným z kamery jen do doby, kdy vznikne průsečík mezi takto vyslaným paprskem a objektem. Poté spočítána barva a informace o ní se vrací zpět. Tato metoda je výrazně rychlejší (díky absenci dalších výpočtů), ale neumožňuje další kouzla jako refrakce, reflexe nebo přirozené stíny.

Pokud si pamětníci vzpomínají na hry Wolfenstein 3D, Comanche (Voxel Space) nebo Comanche 3 (Voxel Space 2), tak právě ty jsou efektním příkladem zmíněné metody renderingu. Právě kvůli využití této techniky nebyly hry založené na Voxel Space enginu akcelerovatelné tehdejšími grafickými kartami 3dfx, ATi nebo nVidia.


Comanche 3 - Voxel Space 2

V reálném světě se paprsky jako takové odrážejí, jsou pohlcovány, nebo se lámou, než se dostanou do pozice, kde je umístěno lidské oko (v našem případě ve virtuálním světě kamera) sledující scénu. Pro účely počítačové grafiky by byl tento způsob značně neefektivní, protože by bylo velmi těžké nebo nemožné určit, které z paprsků opravdu dorazí do bodu, kde se nachází oko potažmo kamera.

Velká část výpočtů by tak byla prováděna zcela zbytečně. Pokud bychom se ovšem pohroužili do světa zpracování 3D scény ještě hlouběji, narazíme na tzv. „Photon mapping“, který je založen právě na principu výpočtu dráhy paprsků emitovaných ze světelného zdroje a zároveň z pozice kamery scény.


Photon mapping


Algoritmus jako takový byl vyvinut za účelem reálného globálního osvětlení (global illumination) 3D scény. Jedná se o tzv. „dvou průchodový“ algoritmus, kde jsou počítány nejen paprsky ze světelného zdroje, ale také paprsky vycházející z pozice kamery. Pokud je splněna podmínka a oba paprsky se propojí, je určena tzv. hodnota záření.


Photon mapping v akci

Tento typ renderování se využívá typicky tam, kde je třeba simulovat průchod světla průsvitnými předměty (sklo, voda atd.). Hlavní výhodou je také možnost vzájemné reflexe mezi osvětlovanými předměty, což znamená, že světlo po průchodu průsvitným předmětem dokáže osvětlit další předmět (kaustika). Photon mapping je výrazně náročnější alternativou k ray tracingu. V současné době není možné uvažovat o jeho nasazení v real time renderování.