Ray tracing: slepá ulička nebo budoucnost grafiky?
10.9.2008, Petr Štefek, článek
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.
Kapitoly článku:
- Ray tracing: slepá ulička nebo budoucnost grafiky?
- Ray tracing vs. reálný svět a jeho současné využití
- Nvidia a AMD vs. ray tracing
- Intel a jeho nadšení pro ray tracing
- Závěr - kdo s koho
Reálný svět vs. ray tracing
V reálném světě je zdrojem světla většinou slunce nebo jiný zdroj „umělého“ světla a na povrch libovolného předmětu dopadá nespočet paprsků (můžeme o nich uvažovat jako o proudu fotonů směřujících do stejného bodu). V momentě, kdy se do cesty paprsku postaví nějaká překážka, je v závislosti na jejím povrchu část paprsků odražena, část projde a část je absorbována.
Toto vysvětlení je opět velmi zjednodušené, neboť se velmi často stává, že povrch reflektuje paprsky v mnoha různých směrech a stejně tak při průchodu mohou být paprsky vychýleny do mnoha různých směrů v závislosti na vnitřní struktuře tělesa. Výjimkou je neviditelné světlo vyšších vlnových délek, které se za určitých podmínek může konvertovat ve světlo viditelné. To způsobuje jev zvaný fluorescence.
I takto mohou vypadat hry za pár let
Ray tracing můžeme brát jako výrazně zjednodušený (a obrácený) model reálného fungování zobrazování v reálném světě. Pokud omezíme počet počítaných paprsků a počet dalších reflexí a refrakcí, vznikne nám ve své podstatě výše jmenovaná metoda renderování. Pokud se podíváte na ilustrační obrázky nebo videa, tak jsou velmi patrné výhody, které nám rasterizace jen těžko může nabídnout. Pokud se ptáte, zda-li je ray tracing skutečně staronovým nástupcem současného typu renderování, tak budete pravděpodobně zklamáni. Odpověď pravděpodobně nikdo nezná. Vše je závislé především na ochotě vývojářů a také přijatelném výkonu pro provozování tzv. „real-time ray tracingu“.
Kde je využíván ray tracing?
Historie ray tracingu sahá několik desítek let zpět, a jak už bylo řečeno výše, byl primárně nasazován do prostředí, jako je filmová postprodukce, kde nemusí být snímek připraven v několika málo milisekundách, jako je tomu u počítačových her. Na poli herního průmyslu mluvíme vždy o tzv. „real-time ray-tracingu“. Efekty, které přispívají k vysoké úrovni fotorealismu v počítačových hrách, jsou především reflexe (odrazy světla), refrakce (lámání světla), depth-of-field nebo vysoce kvalitní stíny. Všechny tyto efekty známe i ze současného typu rasterizovaného renderování, kde je jejich simulování daleko těžší. Pro ray-tracing jsou tyto efekty do značné míry přirozené.
Rasterizace je oproti raytracingu opravdu rychlá a existuje spousta metod, jak tento typ renderování dále zefektivnit. Základem pro stavbu zobrazované scény nejsou paprsky, ale trojúhelníky, kde u každého z nich je možné určit pokrytí a následně i určit barvu každého jednotlivého viditelného pixelu. Současné grafické karty jsou postaveny tak, aby co nejefektivněji pracovaly právě při rasterizaci, kdy dokáží zároveň provést mnoho dalších kouzel pro rychlejší a efektivnější zpracování scény. Při tomto typu renderování je každý trojúhelník vykreslován vždy nezávisle. Ray tracing neustále využívá celou geometrii scény a je proto považován na rozdíl od rasterizace za globální rendering.
Toy Story (1995)
Uveďme si ale příklady z filmové branže. Najde se mezi čtenáři někdo, kdo nikdy neviděl filmy (nejen pro děti) z produkce věhlasného filmového studia Pixar? Jako příklady můžeme uvést filmy Toy Story, Hledá se Nemo nebo Cars. Pokud si vezmeme nejstarší uvedený příklad Toy Story, tak každý snímek trvalo vyrenderovat okolo 2 hodin. U posledně jmenovaného filmu Cars (Auta) to trvalo i přes desetiletý věkový rozdíl hodin 15. To vše je způsobeno úrovní detailů, které chtějí tvůrci ve filmu ztvárnit. Právě u těchto děl hrál ray tracing stěžejní roli.