17 Dec 2020

Rasterizácia OUT, Raytracing IN

ZX Spectrum má 8 bitové CPU na 3.5Mhz, ktoré musí obslúžiť všetky kritické časti herného kódu: hernú logiku, AI, grafiku, audio. Záťaž toho procáku je enormná a sám o sebe by na to len tak nestačil, čo zákonite viedlo ku pozoruhodnej optimalizácií na strane programovania tých hier. A tieto zručnosti a pretrvávajúca ochota hľadať a makať sa časom určite vyplatí a oplatí. SNES ako oveľa výkonnejšia 16 bitová nintendo konzola má CPU stále na tých 3.5Mhz a pri 256 farebnej grafike by ledva utiahla aj Tetris, ak by jej nepomáhalo sofistikované GPU. Kopa blokov, ktoré akcelerujú kadečo /speccy takúto výhodu nemalo/. Nintendo videlo viac do budúcnosti a pretože tie hry šírilo na kartridžoch, nie na MG páskach alebo CD, tak sa tam dal občas prilepiť aj nejaký akceleračný čip alebo trochu tej ďalšej RAM. SNES bol dizajnový zámerne tak, aby vedel rýchlo komunikovať s prídavným, výkonným HW. Môžte tam potom na 10-20 fps preháňať plne polygónové hry alebo raycasting DOOM engine aj vďaka Super FX čipom. Hráč sám pritom o tom, čo sa deje pod kapotou po HW stránke, nemá často ani tušáka.

SNES a raytracing alias SuperRT

V novom tisícročí sa posunieme ďalej a nebudeme akcelerovať iba nejakú rasterizáciu ale vrhneme sa rovno na raytracing. Chlapík tvrdí, že to čo vidíte vo videu vyššie by bolo realizovateľné aj pred 25 rokmi, ale bolo by to nemiestne drahé. V súčasnosti teda zobral ten starý Super FX čip /cca 11 až 21 Mhz/ a celé to nakódoval do FPGA ako trojicu raytracing jadier na 50Mhz s patrične upravenou HW infraštruktúrou a registrami, ktoré raytrancing vyžaduje. Obraz je renderovaný v rozlíšení 200x160 pixel, 256 farieb do rýchlosti 30fps. Nižšie rozlíšenie je v tejto podobe zámerne - ten z pohľadu SNES obrovský objem data musíte preniesť do malej SNES VRAM cez dnes relatívne pomalé zbernice. Teoreticky nič nebráni /málo RAM !!/ skúsiť v ďalšom kole napasovať do starého Star Foxa aj nejakým ten RT efekt /odrazy, tiene/.

Moderná konzola ako PS5, XSX v sebe nemá re-programovateľné FPGA a hry sa nepredávajú na kartridžoch, takže prídavný RT HW tam niet kde schovať. Čo máme je nesmierne flexibilné GPU na RDNA2 architektúre so schopnosťou efektívne vytvárať vlastné renderovacie pipelajny mimo fixný raster/RT HW. To nás vracia naspäť ku tomu spektru. Crytek už ukázal svoje softvérové riešenie RT reflexií, ktoré by v tejto podobe určite bežalo na PS5 komfortne a s rezervou v rozlíšení 1440/60fps. Aproximujem to z mojej PC zostavy, ktorá je minimálne raz tak pomalá a nemám problém ľahko  dosiahnúť 60 fps v 1080p s odrazmi o polovičnej presnosti. Na next gen konzolách sa teda nemusíte tvrdo viazať na drakonické limity defaultného RT HW a čokoľvek čo sa naučíte pri tvorbe vlastnej softvérovej verzie RT sa vám stokrát zúročí už o pár rokov, lebo zmena renderovacej paradigmy z rasterizácie na raytracing bude podľa mňa smrteľne rýchla.