CPU raytracing u Intelu: alternativa klasických GPU?
Bez dlouhých úvodů vám nejvíce napoví samotné ukázkové video. V Intelu pak sami dodávají, že oproti současným technikám renderingu, kdy je scéna sestavena z objektů, ty jsou prohnány různými transformacemi, potaženy texturami atd., je raytracing daleko flexibilnější z hlediska možných efektů a „eye-candy specialit“ (zpravidla dnes zajišťovaných shadery), které je klasickou cestou (rasterizace) velmi obtížné realizovat. Pro každý pixel klasicky renderované scény pak vychází několik dílčích kroků výpočtu, zatímco u raytracingu sice máte stále základní geometrii scény tvořenou trojúhelníky, ale další postup se výrazně liší. Výpočet toku světelných paprsků je převeden na stromovou strukturu, která se průběžně (průchodem scénou) štěpí na elementárnější segmenty a rendering tak putuje po stále menších „větvičkách“ k zakončením („oku pozorovatele“ alias tomu, co je vidět na monitoru). Jedna velká renderovaná scéna se tak dá rozsekat na doslova elementární úlohy a škálovatelnost výpočtů při použití raytracingu je velmi vysoká a současně efektivní.
Intel Ray-tracing engine pro Quake 4 je pak ukázkou schopností této metody renderingu, která nevyžaduje absolutně žádné výpočty ze strany grafické karty, od té se očekává pouze zobrazení toho, co je jí jako výsledek předhozeno. Jak již zde padlo, na osmi jádrech si Q4 engine vede relativně slušně a takové CPU bude za nějaké dva roky za poměrně rozumnou cenu (kde byly dvoujádra v roce 2005, že ;-). A právě škálovatelnost slibuje, že s jakýmkoli dalším jádrem navíc poroste odpovídajícím způsobem výkon, přičemž PC stále bude potřebovat libovolně mizernou starou grafickou kartu pouze na zobrazení raytracingem již vyrenderovaných dat.
V Intelu se kromě jiného na osmijádrovém systému dostali v rozlišení 1024×1024 na téměř 100 fps, pro rozlišení 1920×1080 pak odhadují, že současný výkon postačí pro zhruba 50 fps. Zatím sice jejich Q4 port neumí vše, kód je stále v experimentálním stádiu, na druhou stranu jsou schopni realizovat efekty klasickou cestou na GPU obtížně představitelné (viz. video).
A co tím chce Intel vlastně říci? Inu, to by bylo třeba vytáhnout je někam na pivo, aby se více rozpovídali, ale minimálně chtějí poukázat na fakt, že stávající architektura GPU a používané metody nejsou to jediné. Ostatně princip metody počítání všeho na CPU a grafiky pouze na zobrazování dat nás vrací do éry před 3D akcelerátory, kdy rychlost CPU byla absolutní modlou a jakákoli PCI grafika zcela dostatečnou. Mnozí z vás jistě vzpomenou třeba Duke Nukem 3D v 1024×768 na 1MB S3 Trio 64 :-). Raytracing jako takový je mocným nástrojem, což jistě potvrdí kupříkladu řada uživatelů kombinace Blender + Yafray.
Zamýšlí-li Intel ještě něco dalšího, co si zatím nechává pod pokličkou, to nevíme. Připomeňme si na tomto místě jejich vlastní snažení v GPGPU oblasti, projekt Larrabe, který svou povahou sedí kdesi na pomezí světa CPU a GPU. Třeba se někdy dočkáme od Intelu jakéhosi „hybridního frameworku“ využívajícího pro výpočty (ať již čehokoli) rozložení dílčích částí výpočtů mezi GPGPU/3D a klasická CPU.
Jakkoli je totiž současný svět zaujat nevídaným pokrokem ve výkonu a schopnostech GPU a doslova hltá vývoj v oblasti GPGPU nasazení (CUDA, Close to Metal, ...), na některé úlohy stále je a bude vhodnější CPU. A klasický rendering také není samospasitelný, raytracing je daleko vhodnější kupříkladu pro odrazy a lomy světla či dynamické stínování, byť se tvůrci 3D enginů snaží seč můžou, vše toto implementovat v realistické formě pomocí shaderů.