Showing posts with label raytracing. Show all posts
Showing posts with label raytracing. Show all posts

09/06/22

Komentované herné správy - 9.6.2022

"The Tomorrow Children: Phoenix edition". Rozšírený "remaster" pôvodnej hry z roku 2016 pre PS4. Kooperatívny Minecraft v prostredí post-apokalyptického dystopického Sovietského zväzu. Po programátorskej, technickej stránke unikátna vec. Išlo o 100% softvérový renderer, ktorý na PS4ke intenzívne využíval aj novinku - beh compute GPU kódu v asynchrónnom režime. HW PS4 GPU bol k tomu zvlášť upravený. Grafický engine voxelizoval priestor a používal postupy typické pre raytracing. Malo to teda dobré reflexie a globálnu ilumináciu. Hra bola na trh hodená na konci roka 2016 a o rok neskôr ju SONY stiahlo z obehu a vyplo servery, eh. Hra proste nebola herne dosť dobrá.

Potom sa začali diať veci. Hra si aj tak našla svoju vernú cieľovku a Q-games sa s prehrou nezmierilo. Nasledoval dovtedy bezprecedentný krok a pokus od odkúpenie IP od SONY. Čo sa zázračne aj podarilo a teraz novým trailerom Q-games ohlasuje re-launch gamesy pre PS4 a PS5 už v tomto roku. Na PS5 verziu sa dosť tlačilo už davnejšie, predsa len čisté aritmeticky je jej GPU výpočetný výkon asi o 550% výšší oproti PS4 a plus tu máme RT hardvér, takže sa dala čakať aspoň grafická bašta. Aby to však opäť nedopadlo ako s originálom, tak dev tím okrem nových máp sľubuje aj prekopanú hrateľnosť /konzultácie aj s PRO hráčmi originálu/. Proste jasné zlepšenie hernej mechaniky. Tempo, chytľavosť, bratstvo a útočiacie Godzily /a pavúky a iná háveď/. Som veľmi zvedavý na druhý pokus, lebo ide o snahu o odčinenie strašnej hanby po zlýhaní jadrovej hrateľnosti v 2016. Neschopný herný dizajnér a to je na seppuku. Ak to vybuchne opäť, tak sa budú kotúľať hlavy.

"Globálna iluminácia s RT efektami na AMD 6800 XT v 1080p na 120fps." Ide o pokračovanie toho, čo som začal sledovať v článku Švédske stoly. Len krátke zhrnutie. Ide o experimentálny kód jedného chlapíka vo voľnom čase, čo maká pre Embark Studios /odišli od DICE a DICE stoja napríklad za Battlefield hrami/. V Embark pracujú na vlastnom grafickom programovacom jazyku RUST a pod Vulkan API s pomocou ReSTIR algoritmu od Nvidia je výsledkom toto demátko, čo na tej 6800 XT bežalo vtedy na 10ms na frame, čo robí tých 100 fps. Veci sa odvtedy posunuli opäť trochu dopredu, takže tá istá scéna už potrebuje iba 8.5ms na frame, čo robí takmer 120 fps !

dynamická GI - sledujte bleeding tej červenej farby, po odraze svetla, do okolia napríklad.

Nejde o herný engine. Je to štúdia, ako keď sa zoznamujete s novou hračkou. Ten Nvidia postup má skratku ReSTIR alias Reservoir Spatio Temporal Importance Resampling a aj keď to zneje a naozaj aj je príšerne komplikované, tak princíp je ľahko pochopiteľný. Pri raytracingu, path tracingu alebo photon tracingu scéna na každý pixel vyžaduje vystreliť obrovské množstvo "lúčov", aby ste z tej masy informácií následne poskladali výsledný obraz s dostatočnou presnosťou, bez zreteľných vizuálnych artefaktov. Použiteľný v praxi, v našom prípade - v hre. Vyššie máte video, kde testuje radiance kešku s interpolovanými bodmi v priestore, teda to neráta otrocky pre každý prd na ploche, ale sieť bodov výpočtov sa vie prispôsobiť kontextu. Restir je teda o veľkom zjednodušení, zníženie presnosti, znovupoužitie už raz výpočítaného. Záver je však jasný. Na AMD grafike dnes zvládnete úplne interaktívne svetlo v 1080p prakticky na VR framerejte /čo znamená 90fps+/ a je absolútne jasné, že ďalšia generácia konzol toto a oveľa viac bude zvládať rutinne v 1440-1620p + rekonštrukcia na 4K na 90-120fps. To by sme mali z krku "svetlo". Teraz ešte ta nová morfológia meshu, teda čo nahradí "polygón", aby sme získali nad hmotou úplnú kontrolu a nasledne aplikácia omni fyziky a AI. Vidím to tak na 15 rokov práce v minime, takže hotové až na mojej smrteľnej posteli.

"Prvá hra na BUILD engine nie je Duke Nukem." Je ňou nevydaná kórejská FPS vecička Legend of the Seven Paladins (Euijeok: Im Kkeokjeong / Rock 'n Shaolin) z 1994. Herný kód je zlepený akurát tak, aby to nejako bežalo, nie je to vizuálne, herne, bugfest odladené ako komerčný produkt. Raritka. Druhá Build hra je TekWar od kapitána Shatnera zo Star Treku. Hra veľmi priemerná, ale na obrázkoch vyzerala fakticky honosne, až next gen oproti DOOM 1. Až potom nasleduje slávny Duke Nukem. A po ňom napríklad aj stredoveké, gotické akčné FPS a ľahko RPG Witchaven. BUILD engine je služobne mladší ako DOOM ID tech 1 engine a teda sa očakáva, že niečo viac navyše aj bude vedieť. Je tomu naozaj tak, ale keď si prebehnete kóderske fóra, tak tie hovoria, že DOOM Id tech 1 je neporovnateľne čistejší, róbustnejší, jeho BSP /binary space partitioning/ manažment koordinátov a priestoru ďaleko stabilnejší. Ak sa spýtate na eventuálny Build 2 engine, tak ten nikdy nevznikol. Existuje iba veľmi voľné programátorské cvičenie autora na túto tému a samozrejme už v teritóriu plne 3D "Quake" enginov. Počujem sugestívne otázky ako by vyzeral DOOM alebo Quake /!!/ na Build engine ?  Lakonická odpoveď je, že dobre, ak si na tom dáte záležať.

"The Apple II GS." V predaji od jesene 1986 /štart cena 999 USD bez monitora/ a teda asi pol roka pred Amiga 500 jar 1987 /štart cena za 700 USD bez telky/. To GS znamené Graphics and Sound a poukazuje na to, že mašina má byť veľmi potentná v týchto dvoch oblastiach. Predbehnem udalosti a poviem, že až taká sláva to nebola a aj vtedajšie noviny písali, že dobre vybavené ATARI ST alebo AMIGA si z Apple II GS poradí. Zaujímavé trivia - John Carmack začínal so softom komerčne práve ne GSku a ich slávny Wolfenstein idevo vychádza a hry Castle Wolfenstein z 1981 pre Apple II. OK. Teraz sa ešte raz vráťte k tomu videu na začiatku kapitoly a pozerajte sa, či si Apple IIGS zaslúži ten prívlastok audio-vizuálneho ninja stroja trochu drahšieho ako Amiga 500. Zjavne to tie farby a rozlíšenie má, ale kockatý skroling a softérové sprajtovanie je slabučké a aj pod úrovnňoyu Atari ST, a hlboko pod Amiga 500. Grafická časť systému nie je dosť dobrá a CPU je pomalé. Beží iba na 2.8MHz a je to taká 8/16 bit verzia MC 6502, ktorú poznáte z 8 bit Atari. CPU to vlastne nie je zlé, len je proste podtaktované. Pôvodne malo bežať na 8MHz /maximálna rýchlosť až 14Mhz/, ale prílišné biznis taktizovanie a obavy, aby si neohrozili vlajkovú loď MAC Plus za 2600 USD s 8MHz MC 68000 zariadili tragické zníženie rýchlosti Apple IIGS CPU . Na čo teda vôbec o tomto kompe píšem ?
 
 Apple IIGS demoscene
 
Zvukovka ! Gigant Ensoniq /1982-2002/ sa dohodol s Apple a vrazil tam svoj špičkový, profesionálny audio procesor s wave table syntézou a 32 hlasmi Ensoniq ES5503 DOC. Niečo neskutočné a o svetelné roky pred primitívnym prasačím kvičaním 3 kanálového PSG v Atari ST alebo 4 kanálovým PCM Amiga 500. Malé upozornenie kým sa vrhnete na YT hľadať vzorky tohto audio zázraku. Podobne ako pri SEGA Megadrive, tak aj pri Aple IIGs existuje niekoľko rôznych audio ovládačov, ktoré ten audio HW využívajú po svojom. Audio RAM má "iba" 64KB, teda rovnako ako SNES, ktoré tie zvuky generuje zhruba podobne. Veľmi široké možnosti práce s tým Ensoniqom - voľba počtu, flexibility /wave krivka + ADSR obálka = čokoľvek, aj chiptune hudba ako Atari ST alebo C64/ jeho stereokanálov. Bohužiaľ rátajte aj s tým, že na rozdiel od Amigy bol Apple IIGS na periférií záujmu, takže sa veľa času do praktického rozvoja tej zvukovky proste neinvestovalo. Priamy súboj na tej istej skladbe Amiga versus Apple IIGs. A niečo IIGS natívne. Predstavte si, že vám toto lezie z reprákov v 1986 z tej vašej biednej i286, keď hrajete tie 4 farebné CGA hnusíky s PC speakerom. 

"Ron Gilbert a jeho blog o návrate Monkey Island franšízy". Citujem. Ja ako Ron som opäť zahral Monkey Island 1. Urobil som si veľa poznámok, čo vlastne Monkey Island robilo tak dobrou hrou. Je vcelku utrpenie hrať túto 35 rokov starú adventúru, lebo tu chýba množstvo QOL /quality of life/ vylepšení, vrátane možnosti rýchlej chôdze. Porovnávam to s mojou novšou pixel art adventúrkou Thimbleweed Park a MI 1 je oproti nej v tomto smere zastaralý. Čo mi asi najviac prekvapilo je, koľko objektov vtedy nemalo špecifickú reakciu na to, že v danom momente je tá či oná akcia nemožná. Proste hra zabliakala: "to sa nedá" a finito. Ron out. Opäť ja ako joe na príjme. MI 1 je vzácna hra, kde je v dokonalej harmónií grafika, zvuk, scenár, postavy, atmosféra, humor. A je dosť možné, že išlo o one-hit-wonder a druhýkrát sa to už Ronovi nepodari /alebo tretíkrát, keď rátame aj MI2/. Už dnes vieme, že grafický štýl pripravovaného pokračovania je masívne kritizovaný a Ron bol z toho na smrť smutný. Ak kiksne aj scenár, dej, humor, veľké finále /čo je vlastne tým tajomstvom Opičieho Ostrova/, tak to bude historická pohroma. Audio by malo byť v poriadku, tam nemám žiadne pochybnosti. 

"Resident Evil Village - streaming demo." Priamo z Capcom web stránky. Nič nesťahujete a neinštalujete. Žiadna registrácia alebo prihlasovanie. Nepotrebujete výkonný HW. Stačí vám internetové spojenie a aspoň 10-15Mbit linka. Hranie najnovších hier jediným kliknutím. Koniec reklamnej vsuvky. A keďže mám v práci iba 12mbit od Telekom na železnom drôte, žiadna optika, tak ani na druhý pokus sa to nespustilo /fóra píšu, že mám skúsiť MS Edge browser alebo Google Chrome, či Safari, že vraj Firefox blbne, respektíve je zámerne nepodporovaný/. Ale toto je budúcnosť, ktorú som agresívne žiadal od Google Stadia. Youtube video s hrou. Vedľa videa ikonka pre streaming hry. Instantné hranie. Decimácia konzol. Biliónový biznis. Bilión je tuším tisíc miliárd. A malé miliardy nechávam pre šupákov z druhej ligy !!

16/06/21

Konzoly - optimalizácia HW jeho úplným ignorovaním

Grafická karta Voodoo 1 od 3Dfx bola jedna z prvých, výborných a cenovo dostupných 3D akcelerátorov na trhu. Čo ma zmiatlo bolo to označenie 3D akcelerátor. Už som vtedy čo to o grafike vedel a čakal som HW podporu pre spracovanie geometrie a nasvietenia, aby sa odľahčilo CPU. Voodoo 1 však nič také neobsahuje. Akceleruje proces rasterizácie, čo je niečo úplne iné a nejde primárne o nejakú 3D grafiku. Proste marketingové hry, lepšie to na krabici vyzerá. Rasterizáciu dovtedy robilo tiež CPU a ide vlastne o projekciu herného 3D sveta na 2D maticu obrazovky. Príšerne komplikovaný proces náročný na pracovné CPU cykly. V HW podobe na GPU nespočetne krát priebežne masívne vylepšovaný. Ide o čiernu skrinku každého GPU. Posvätný blok silikónu, ku ktorému má prístup iba výrobca toho HW a poskytuje ho ako obetu bohom skrze ovládače ku grafickej karte. Manuálne prevzatie kontroly nad rasterizáciou je už roky tabu.

Ešte pred zopár rokmi napríklad Nvidia povedalo toto: "Rýchlosť spracovania vertexov na GPU teraz rastie rýchlejšie ako spracovanie pixelov a v blízkej budúcnosti očakávame nástup tzv. veľmi pokročilých geometrických algoritmov. Vylepšenia procesu rasterizácie ako je nový režim konzervatívnej rasterizácie umožní okrem iného aj rýchlejší nástup raytracingu a globálnej iluminácie." Dnes je však realita dramaticky odlišná. Epic hovorí, že HW rasterizácia je mŕtva a je na otázka dňa, či ju nevypustiť z návrhu dizajnu budúcich GPU úplne a neinvestovať takto uvoľnený silikón na užitočnejšie veci. Softvérový rasterizér Epicu bežiaci na GPU v UE5 je totiž v priemeru o 300% výkonnejší ako jeho HW konkurencia na tom istom GPU v ich konkrétnom engine. Ak teda v týchto podmienkach beží po PS5 GPU "novom" a NV 3090 po "starom", tak Nvidia skonči v poli porazených.

Raytracing. Často čítam herných laikov ako nadávajú na RT HW v next gen konzolách. Neberú ho vážne a podceňujú ho. Je možné ho "oklamať", zrýchliť podobne ako tú HW rasterizáciu ? Samozrejme, že áno. A nielen tak, že RT reflexie dáme vypočítať v 4 krát menšom rozlíšení a rozdiel do vyššej kvality získame napríklad CB /checkerboard/ upscale algoritmom ala Ratchet pre PS5 alebo nám pomôže rasterizácia pre časti obrazu, kde sa dá použiť "screen space" pracovný priestor alebo traceovanim lúčov proti silne zjednodušenej proxy /zástupnej/ geometrii skutočných objektov ako to robí aj UE5 a mnoho ďalších. Ukážem vám jeden luxusne didaktický príklad ako postupovať pri RT HW konzol efektívne, so zdravým sedliackým rozumom.

Tiene. Tie veci, ktoré vznikajú, keď do cesty fotónom vstúpi nejaký objekt a nastane ich oklúzia. Priame tiene, ak medzi zdrojom a tieniacim objektom sa už nič okrem vzduchu nenachádza a nepriame, keď tieň vznikne cestovaním lúča, ktorý sa už minimálne raz niekde odrazil. Je teda výrazne oslabený, farebná hodnota/energia môže byť zmenená a roztyl na hranách tieňa už značný. Výpočetne náročnejšie /tzv. AO, ambientná oklúzia/. Rasterizované >priame< jasne viditeľné tiene boli v hrách vždy jedným z klasických problémov. Tragické rozlíšenie /shadow mapa je textúra a kvalita sa rovná obrovské objemové nároky/, stabilita, vykresľovacia vzdialenosť, uhlové artefakty. RT tiene to všetko elegantne riešia ale sú zároveň minimálne o rád pomalšie. Čo s tým ?

Použijeme Toy Engine /na ilustráciu, bezvýznamný, multiplatformový engine/, Intel HD 4000 laptop, ďalej klasickú scénu na testovanie grafiky - Sponza Atrium. Všetko v rozlíšení 1280×720 pixelov. Najprv tam hodíme tieň získaný bežnou rasterizáciou s tieňovou mapou o bežnom rozlíšení 1024x1024. Sledujte nižšie na obrázku obrysový tieňový aliasing. Zubatosť je značná, aj keby ste dvihli rozlíšenie tieňu na 4K. Objem dát ide strmo nahor. Náš intel laptop tie 1K tiene dáva za 3.7ms. Obratená hodnota lomeno 1000 sa rovná 270 fps. OK. Teraz raytrace podoba v podobnom rozlíšení. Tieň je peknučký a čo nie je na statickom zábere vidieť, tak je aj extrémne stabilný, bez ohľadu na uhol pohľadu, sklon normál povrchu alebo vzdialenosť. Doba renderingu je 92.2ms a teda 10.8 fps. Koniec rozprávky, ten HW na to naozaj nestačí, alebo ?

vľavo "škaredka" 1K tiene ako bežné shadow mapy /rasterizácia/, vpravo krajšia raytrace verzia

Alebo zapojíme mozog a znížime renderovací čas RT tieňov na nejakých 13 ms /77 fps !!/ s prakticky úplným zachovaním kvality RT tieňov, aj keď pôjde o rasterizačne-RT hybrid techniku. Ako sme to urobili ? Ak si ešte raz pozriete vyššie ten raster a RT tieň, tak spoločný prienik majú v tej čiernej mase v strede tieňov a líšia sa kvalitou na ich okrajoch. Myšlienková konštrukcia. Čo tak nechať rasterizáciu vypočítať ten "stred" a RT HW aplikovať iba na "okraje" ? A to je aj správna odpoveď. Zníženia počtu pixelov /trojuholníkov/, ktoré musí RT HW otestovať klesne dramaticky a simultánne s tým stúpne výkon. Asi vás neprekvapí, že keď na to príde jeden šikovný kóder, tak to objavia časom aj ostatní.

 maskovanie okrajov tieňov, to "biele" má na starosti HW RT a finálna hybridná raster-RT kompozícia

A presne to sa aj stalo a AMD to dokonca oficiálne ponúka ako vhodné riešenie pre rýchle a kvalitné tiene. Morálne ponaučenia, ktoré z toho vyplýva je - vždy sa to dá urobiť lepšie. Epic v UE5 je prvý pokus veľkej firmy o zásadné, "softvérové" prepracovanie klasickej HW renderpipeline cesty GPU, ako ju poznáme desaťročia. Ich softvérový rasterizér a raytracer sú mimoriadne výkonné. GPU v PS5 a XSX sú prvé také komerčne dostupné a masovo rozšírené mašiny, ktoré takúto bezprecedentnú flexibilitu umožňujú aj prakticky v hrách. Vo veľkých AAA hrách, nie ako malé cvičenie doma na PC pre projekt na vysokej škole. Práve next gen konzoly odpália renesanciu nového programovania s presahom do ďalšej generácie, kde sa už budú žať úžasné plody tohto základného výzkumu. Naivný "brute force" postup nevedia nikam ako ukázalo HW riešenie úplného RT v Cyberpunk 2077, ktoré zloží Nv 3090 pri 60 fps do rozlíšenia pod 900p. Chce to použiť filipa. Neupgrejdovateľné 200 wattové konzoly to opäť zachránia.

05/01/21

Raytracing a nezištná pomoc rasterizácie

PlayStation 5 síce má HW podporu pre "raytracing" ale zastaralá rasterizácia jej paradoxne ku väčšej kráse a sláve tých RT efektov ešte bude musieť chvíľku mocne pomáhať. Jeden taký trik si neskôr ukážeme. Nižšie máte rozdelenie úrovne spracovanie raytracingu v HW /rasterizácia nech je jeho primitívna proto forma/ podľa Imagination Technologies s jej dobre známou GPU rady PowerVR /svojho času aj v konzole Sega Dreamcast, Apple mobiloch alebo v PlayStation Vita/. Imagination bolo inováciami GPU architektúry často o krok vpredu pred mainstreamovými desktop alebo mobilnými GPU a neskôr veľa energie investovali do HW akcelerácie raytracingu. Ich kompletné HW riešenie RT na budúci rok sa má volať Prism. Dnes sa však skôr sústredia na čo najvyššiu efektivitu pri čo najmenšom odbere elektrického prúdu. Bohužiaľ sú odvšadiaľ masívne vytlačovaný vlastnými riešeniami konkurenčných firiem ako Exynos čipset Samsungu, Qualcomm a jeho Snapdragon, M1 pri Apple, Huawei a Kirin. Raytracing v HW podľa Imagination Technologies:

Level 0 – klasická rasterizácia
Level 1 – softvérový raytracing na CPU/GPU
Level 2 – testovanie intersekcií ray/box a ray/triangle v RT HW
Level 3 – Bounding Volume Hierarchy (BVH) akcelerácia v RT HW
Level 4 – akcelerácia BVH  a spracovanie koherencie v RT HW
Level 5 – akcelerovaná BVH a koherencia plus generátor hierarchie objektov na scéne v RT HW

Najnovšie PC grafické karty a next gen konzoly PS5/XSX sú na úrovni tri. Imagination aj na štvorke a päťke a pripojili aj vtipný komentár, v ktorom som ihneď spoznal PS5 a jej hry. Hovoria - na konzolách si môžte všimnúť striedme použitie RT, pretože HW nie je dosť efektívny pri použití celého spektra komplexných RT javov. Napríklad v demo sekvencií jednej hry na konzole si vidíme na lesklej podlahe odrazy objektov, ktoré sa ale okamžite strácajú pri zmene stavu toho objektu /deštrukcia na menšie časti/. Je tomu tak preto, lebo RT HW nestihne zachytiť dostatočne rýchlo zmeny geometrie na scéne lebo chýba HW podpora pre generátor hierarchie objektov /čo je úroveň 5 pri HW RT, pozn. je možné si tu trochu pomocť aspoň viacúrovňovým BVH ako BLAS-TLAS/. Zároveň v inej hre si môžte všimnúť iba single-bounce reflexie a nižšie rozlíšenie odrazov, lebo chýba spracovanie koherencie lúčov v RT /čo je level 4, pozn. opäť si trošku pomôžeme v softvére kódom pre spájania, či znovupoužitie dostatočne koherentných lúčov podľa určeného tresholdu/. Je celkom jasné, že hovoria o hrách Ratchet and Clank a Spiderman pre PS5. Level 5 HW RT podľa Imagination už v PS5 samozrejme mať nebudeme, možno v PS5 Pro, takže si musíme pomocť nejakými trikmi a fintami.

RT odrazy sú najčastejšie používaným grafickým efektom v prvých hrách na PS5. RT odrazy sú pochopiteľne nadradené kvalitou SSR /Screen Space Reflection/ alebo archaickému použitiu duplikovanej geometrie /vhodné pre PS1 pri 2500 polys na frame/. SSR je vlastne plno-obrazový postefekt, ktorý sa pozrie do normál depth buffera a sleduje vektor ku intersekcii /depth buffer ako súčasť bežného G- buffera pri ešte bežnejšom deferred non RT renderingu/ a počíta odraz podobne ako to robíme pri raymarchingu. SSR odraz zobrazí iba to čo vidíte na obrazovke /funguje v "screen space" adresnom priestore/. Je to relatívne výpočetne náročný postup, relatívne preto, lebo RT je ďaleko náročnejší, duplikovaná geometria nepoužiteľná, cube maps nezvládajú self-reflexie, reflection probes zas majú nízku presnosť a veľa falošných artefaktov. Skúsime teda nejako SSR a RT skombinovať dokopy ?

 SSR versus RT

Na obrázku vľavo vidíte bežné SSR /postefekt, takže je mu geometrická komplexnosť ukradnutá/ s jeho dobre známymi nedostatkami. SSR nevidí nič čo je mimo hraníc alebo priamo ľudským okom viditeľných častí obrazovky. Nevidíte teda v odraze spodok tej konvice na čaj. Nevidíte hlavu tej sošky. Nevidíte polovicu múra a samozrejme ani tmu za vašim chrbtom alebo mraky nad hlavou. SSR je rýchlejšia ako RT ale zároveň takmer poloslepá. Obrázok vpravo je bežné RT /mimochodom ten je zas mimoriadne citlivý na komplexnosť geometrie/, ktoré chýbajúce časti /dno konvice, hlava, múr, to za chrbtom, mraky nad hlavou/  všetko korektne zobrazí. Ako som už naznačil - múdre hlavy napadlo kombinovať oboje metódy dokopy na jednom frejme. Rýchlejšou SSR zobraziť všetko čo sa dá a náročnejšiu RT použiť iba na časti odrazov, koré SSR nevidí. A výsledok máte nižšie.

hybrid SSR + RT

Aj vlk sa nažral, aj ovca ostala celá a je to rýchlejšie ako pri sólo použití iba toho RT HW. Takmer dokonalé a pre potreby hry úplne dostačujúce. V tom červenom rámčeku vľavo je jav, na ktorý sa určite niekoho napadne sa spýtať. A teda či vo finálnom zlepenom odraze SSR + RT nevidieť "švíky", kde sa to lícovalo dokopy. Áno podobné miesta sa dajú najsť ako vidieť v rozdieloch v kvalite samplovania textúr na cihlách tej steny. Je možné to ignorovať, je možné to aj ďalej poladiť. V hre sa však na 100%-nú presnosť a vizuálnu kvalitu pri tak základnej akcelerácií RT v HW ako má PS5 zatiaľ veľmi nehrajme. V natívnej PS5 hre teda časť grafiky beží cez HW rasterizáciu, časť cez RT HW, časť cez alternatívnu sofvérovú render-pipelajnu cestu a časť v asynchrónnom režime mimo hlavné compute shader pole. Celkom mišung a chce to expertnú znalosť kódovania. Ak bude nejaká PS6, tak dôjde určite ku dramatickému zjednodušeniu tohto procesu - postrasterizačná éra.

29/12/20

Hybridný rendering - rasterizácia/raytracing

Bude to pravdivý príbeh so šťastným koncom a určite príde aj spiderman. Rasterizácia je viac "umeleckou licenciou" vedená tvorba hernej grafiky. Všetko to svetlo, odlesky, tiene, polotiene, odrazy sú tam, kde si vy ako autor myslíte, že by mali byť, alebo kde ich úmyselne chcete mať, aj keď fyzikálne nekorektne. Desať hier, desať rôznych autorov a enginov, desať odlišných vizualizácií tej istej scény napriek tomu, že ste použili identické objekty a materiály. Raytracing funguje už z princípu úplne opačne. Algoritmus výpočtu všetkého je vo všeobecnosti exaktne presný a všetci dosiahnu na pixel ten istý výsledok. Líšiť sa musíte objektami, kompozíciou scény, materiálmi. Neberte ma ale doslovne, aj výstup pri raytracingu môžte individualizovať do nepríčetna. V jadre je však raytracing matematika a rozum. 

Dreams - softvérový /GPU ALU compute/ rasterizér bez polygónov

Rendering v reálnom čase bez klasickej rasterizácie sa už dnes používa na platforme Dreams /PS4, PS5/. Hra nepoužíva ani štandardné mesh-poly objekty. Všetko je SDF /signed distance fields/ geometria a raymarching, ktorý používa SDF na akceleráciu výpočtu putovania lúčov "svetla". SDF je kompletne nová paradigma riešenia hmoty objektov /plne deformovateľných/ a nasvietenia scény. Aj základná PS4 zvláda slušne túto metodiku čiste na "softvérovej" báze, teda CPU plus ručne stručne nakodovaná alternatívna compute render pipelajna na GPU. SDF je iba jeden z postupov, jedna cesta ako sa zbaviť limitujúcej rasterizácie na trojuholníkoch. Zatiaľ nevieme, ku ktorej alternatíve sa v ďalších 10 rokoch postupne grafický hardvér hlavných hráčov prikloní. Predbežne sa opatrne začína budovať isté HW zázemie pre zrýchlenie niektorých krokov overeného raytracingu a výrazne sa zefektívnila tvorba vlastnej renderovacej cesty na GPU, obidením defaultnej s plnou HW podporou ala spomínaný Dreams /alebo Claybook/.

V prechodnom období ku plnému raytracing /globálne nasvietenie, "všetky tiene", reflexie, kaustika/, kde sa dostaneme tak do 10 rokov, si užijeme hybridných postupov rasterizácia-raytracing šitých presne na mieru HW /nemáte ani predstavu ako veľmi dôležité je to spojenie - presne na mieru/. Ak hovoríme o konzolách, tak zabudnite na PC DirectX rozhranie /DXR/. Aj na tom bežnom hernom PC s lepším intelom a starším GPU Nv 970 je však možné vydolovať výkon, ktorý by ste tam nečakali. O tom trochu neskôr. Volíme teda hybridný rasterizácia/softvérový raytracing postup čiste na CPU a non-RT GPU. Sledovanie lúča pôjde v prvej fáze cez rýchlu rasterizáciu /určenie prvého ray zásahu/ a sekundárne lúče už čiste cez softvérový raytracing na CPU /bez použitia RT HW v GPU/. Sekundárne lúče nám umožňujú použiť efekty ako reflexie alebo priame aj nepriame tiene, teda veci, kde je rasterizácia dosť bezzubá a na programovanie veľmi náročná. Rozumej oveľa menej efektívna.

V raytracingu teda strieľate /presnejšie rekurzívne sledujete/ lúče  a pozorujete, kde narazia na nejakú geometriu. Už pri jednom lúči na pixel obrazovky a pri miliónoch polygónoch-trojuholníkoch na scéne je počet možných permutácií doslova nekonečný a brute force postup možný iba pri veľmi jednoduchej grafike triedy PS1-PS2. Tu masu štruktúr na obrazovke teda musíme nejako optimalizovať, indexovať. A na to slúži aj Bounding Volume Hierarchies (BVH) štruktúra v tvare stromčeku. Objekty si pekne hierarchizujete a keď "matka" v indexovom poli výpočet intersekcie lúč-poly nepotrebuje, tak "dcéra" pod ňou ho nepotrebuje tiež a "nepočítame ju". A máte akceleráciu výpočtov. Po novom práve toto traverzovanie /behanie po stromčeku, má myriady položiek/ robí v GPU špecializovaný HW a to buď na celú množinu-rodinu objektov alebo na jednotlivý polygón-trojuholník jednotlivca. BVH problematika má asi stotisíc nuáns /veľmi mi to inak v niečom pripomína prastarý copper list pri amige/, tým sa však zaťažovať nebudeme a existuje more ďalších podobných postupov ako je SAH /Surface Area Heuristic/. Chcem tým iba povedať, že je možné hlavne na konzolách ako PS5/XSX najsť riešenia, ktoré bude bez preháňania hyperoptimalizované a vysoko nad výkonnostný rámec toho, čo od podobného GPU vidíte v štandardných multiplat hrách vrátane PC pod DXR dnes !!

sotfvérové RT tiene a reflexie v jednoduchej scéne

Vyššie teda máte praktickú video ukážku namiesto nudnej teórie. Intel CPU v tomto prípade behá po BVH stromčeku a robí špinavú prácu /tento krok dnes moderné PC GPU a next gen konzoly akcelerujú na grafickom čipe extra špeciálnou jednotkou/. GPU Nv 970 robi tú rasterizačnú a ALU compute časť. Výsledný framerate na scéne s RT odrazmi a RT tieňami je 150fps. Moja Nv 1070 je cca o 50% v hrubom výkone lepšia a PS5 GPU má výkon minimálne dvoch mojich 1070 s k tomu ešte podporu pre RT. Jedno s druhým mi z toho vychádza, že neskoršie PS5 hry by celkom komfortne mali zvládať aj situácie, keď budú použité RT reflexie a tiene naraz. Dnes je to zatiaľ buď - alebo.

Chlapík pri svojom čiste softvérom raytracingu použil množstvo optimalizácií a kód bol prispôsobený exaktne presne na daný HW /to čo mu funguje dobre na Nv 970 išlo mizerne na inej grafike iného výrobcu/. K tomu PC totiž pristupoval ako ku konzole. V reálnych podmienkach by musel vytvoriť špeciálny profil pre každé PC GPU na trhu. Zabudnite. Skúšal umiestnovať dáta na rôzne miesta RAM, kešiek, registrov aby dosiahol čo najlepší výkon. Bola to piplačka, lebo testoval desiatky verzií a subverzií ALU compute shaderov. Raytracing je veľmi náročný na kvalitu RAM /rýchlosť, latencia/. GPU je nutné saturovať skutočne optimálne. Brute force prístup je rýchly, lacný ale dobrý iba laxného multiplat vývojára a Nv 3090. Výsledný kód /neopodarilo sa mi to rozbehať na Nv 1050 ani Nv 1070, heh/ tej jednoduchej scény vo videu by na PS5ke určite bežal nad 300 fps. 

V ďalšom kroku tento "syntetický" test s guličkami a kockami presunieme do hernej reality a komplexných štruktúr. Pokazím pointu ale nakoniec to celé, toto obyčajné cvičenie a hranie sa s kódom, skončilo vo Forge platforme /Wolfgang je grafický guru, ex R* inžinier s obrovskými skúsenosťami/. Forge je modulárne, multiplatformové middleware, ktoré vám umožňuje si v ňom nacvakať aj vlastný engine. Spiderman PS4 renderuje svoje nebesá práve po Forge expertíze s použitím Ephemeris 2 modulu. Som absolútne presvedčený o tom, že Resident Evil remake pre PS4 zvládne PS5 s raytrace odrazmi a tieňami aj čiste softvérovou cestou. Tmavé prostredia, tmavá paleta farieb, ktorá hravo zamaskuje aj eventuálne nižšie rozlíšenie RT efektov.

softvérové RT tiene - na cirka 200 fps

Po masívnych úpravach /znovu prekopané BVH, parciálne SAH, iný typ float výpočtov, kešovania bufferov, culling všetkeho/ softvérového raytracera je stále na tej Nv 970 už schopný utiahnuť aj bežnú hernú geometriu /vyššie vo videu je použitý referenčný objektový model Sponza/. Po radách od borcov z Epicu a ex Santa Monica klesol napríklad čas potrebný na spracovanie RT tieňov z 13 ms na cca 3.5-5.5 ms pri tieňoch o 1/4 rozlíšení alebo na 10.5ms v plnom rozlíšení tieňov v 1080p. Po zmenách sú tiene viac ALU ako TEX závislé, takže výkon rastie lineárnejšie s počtom CU jednotiek /a kvalitou kódu/, než od počtu HW textúrovacích jednotiek. Stále ostáva dosť pracovných cyklov na softvérové RT reflexie a logiku hry, aby to skončilo na solídných 1080p/30 s RT a bez HW podpory pre raytracing. Pripomínam crytek RT demo pre non-RT GPU kde s reflexiami o polovičnej kvalite dám na Nv 1070ka hladko 1080p/60fps. Mám teda rezervu "30 fps" na RT tiene alebo hernú logiku pre komornejšiu hru triedy Resident Evil. PS5 je pritom v globále v hrubom minimálne o 250% výkonnejšia /CPU+GPU/, než to čo mám doma. Možnosti sú tak obrovské, že 6-7 rokov ďalšej generácie nebude stačiť ani na ich letmý dotyk. Výkonnejšie dvoj-úrovňové BVH s BLAS /Bottom Level Acceleration Structure/ a TLAS /Top Level Acceleration Structure/, ktoré použil COD: Moder Warfare je iba skromná špička ľadovca.

17/12/20

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.

09/09/20

Raytracing - So What the Fuss ?


Niekto sa na neogafe spýtal, čo vlastne s tým raytracingom toľko blbneme. Herný laik, bežný uživateľ. Či už nevedia ako z hráča dostať ďalšie peniaze. Otázka ma poslala do 20 rokov vzdialenej minulosti. V zozname priorít, ktoré trebalo rýchlo rozbehať na novom PC s Pentium 100@133Mhz bol na druhom mieste aj 3Ds Max. Modelovacie, animačné, render štúdio. Amiga sa tu už dosť rozťahovala s dvojtýždňovým renderingom jednej sklenenej gule na šachovnici. Nainštaloval som, neprečítal manuál, otvoril editor, milión položiek s nejasným významom, nahádzal objekty na scénu, stlačím render tlačítko a nič. Pridám materiály, stále iba čierna tma. Definujem svetlá. Render. Konečne niečo vidím. Kde sú tiene dopekla ? Opäť maturujem. Je to komplikované. Pod svetlom, tieňom, lomom, odrazom a ďalšími svetelnými fenoménami si 3D štúdio proste predstavuje kvalifikovane presné zadanie.

Oveľa krvopotnejšie sa pracuje so svetlom v hrách a to už od nepamäti, pretože hra /herný HW/ nedokáže spočítať propagáciu svetla a jeho interakciou so scénou v reálnom čase iba tak sama od seba. Všetko to teda robíte ručne, pracne a odhadom. Umelecký zámer. Robil som to takto občas aj v 3Ds Max. Fenomény super výpočetne časovo náročnej radiosity /sekundárne, terciárne odrazy/ som ľahko a rýchlo vyriešil šikovne umiestnenými lokalnými "farebnými" bodovkami. Manuálne umiestnenými. Aj toto fejkovanie je rutinnou súčasťou dnešných herných enginov. Všetci čakajú na raytracing v reálnom čase ako na spasenie.

Quake 1 - "lightmaps" ON/OFF

Staručký Quake, všetky textúry sú na svojom mieste. Na prvom obrázku rovnomerne osvetlené difúznym svetlom, ktoré nemá určenú polohu, smer a nevrhá tiene. Vyzerá to teda hnusne a bez tieňov /na ktoré však nemáte výkon/ by ste mali veľké problémy s hĺbkovým vnímaním obrazu. Lightmapa je vlastne statická "tieňová" textúra s "albedom" /určíte si ktoré časti základnej textúry sú viac či menej viditeľné/. A kedže na to váš herný engine nemá, tak si to musíte predpočítať. Ľubovoľným spôsobom vrátane raytracingu ! Lightmapa je iba ďalšia textúra, takže vám to zničí množstvo voľnej VRAM, zdecimuje jej priepustnosť a dorazí fillrate /pixely za sekundy/ vášho GPU. A teraz už viete prečo s Voodoo 1 s iba jednou textúrovacou jednotkou v Quake 1 dával práve 25fps /teoreticky 50fps s jednou aplikovanou textúrou, Quake však potreboval akurát tie dve/.

balík lightmáp vpravo - more textúr

Máme teda 3D model, tučné lightmapy, statické, v nízkom rozlíšení /zubaté a low res, objem dát musí pod kontrolou/. Panduľák teraz vystrelí, záblesk má osvetliť najbližšie okolie utopené vo fake tme predpočítanej lightmapy. Problém. Použiť ďalšiu lightmapu a blendovať /matematika s farbou pixelov/ alebo ak došla VRAM tak použiť nasvietenie polygónov v reálnom čase na úkor CPU ? Dostupný vertex lighting však ide po hranách vertexov polygónov a keď je polycount scény nízky, tak aj svetelný "výrez" do tmy sa bude neesticky lámať po riedko použitých polygónoch. Použijete metódu podľa toho, kde má HW ešte nejakú zvyšnú rezervu. Need for Speed 3 vám inak na PC pri nočných jazdách dáva na výber v nastavení grafiky predných reflektorov medzi voľbou peknej, oblej lightmapy /zbohom GPU, VRAM/ alebo realite vernejšiemu vertex nasvieteníu /ahoj CPU/. Playstation 1 verzia bežala iba na vertexoch.

Riešenie lomu svetla, fresnelu, zrkadlových odrazov, kaustiky je celá séria nešťastia a na každé jedno potrebujete pri rasterizácii špeciálne, samostatné riešenie. Vždy podvádzate, ladenie scény trvá nekonečne dlho. Je to ako hodinová rekompilácia po malej zmene kódu v programe. Predlžuje, zdražuje to vývoj, limituje hernú mechaniku /asi nemáme veľa hier kde si zrkadielkom čeknete chodbu spoza rohu, však/. Vraciam sa teda na začiatok ku 3Ds Max. Scéna, objekty, PBR materiály, svetla /globálne, lokálne/. Stlačím štart, fotóny si to obehajú a všetko je tak ako má byť - ostré priame tiene na slnku, rozplizlé nepriame pod stolom v izbe /ambientná oklúzia/, lomy, odrazy. Ak na scéne urobím nejakú zmenu, všetko sa uprace ako má v reálnom čase. Konečne máme dosť času okrem muklovania aj na umelecké vedenie obrazu.

Prichod raytracingu je zákonitá, evolučná vec. Svetlo v hrách je už priliš komplexná záležitosť, aby sme to riešili prostou rasterizáciou a išli hrubou silou cez fillrate GPU a veľkosť VRAM. Na druhej strane sa nám hromadí more CU /compute units/ v GPU. Môže teda dojsť ku veľkej paradigme, ku dejinnému zlomu a rasterizáciu nahradí raytracing na softvérovej /úprava herného SDK, grafickej art pipelajny hier/ a samozrejme hardvérovej masívnou prestavbou architektúry GPU. Nvidia je už v pokročilej fáze prechodu, keď sa jej v GPU tlačia 4 rôzne základné bloky pre výpočet rasterizácie, raytracingu, tensor a CU jadrá. Nielen pre nich je to ekonomicky na hrane, takže pretlačia tie nové render RT štandardy čo najskôr -  aj aby dosiahli zjednodušenie vlastných GPU. Ekonomika a podobne. Od prvého letu lietadla Wrightovcov ku pristátiu na mesiaci s Apollo 11 ubehlo iba 66 rokov. Predpokladám, že šprint z rasterizácie /naše quake lightmapy/ na plný raytracing prebehne za 1/10 toho času, ak sa časomiera spustí dnes.

22/03/20

PlayStation 5 - raytracing


Aj v najnovších hrách nie je možné si nevšimnúť s akými problémami stále bojujú pri spracovaní tieňov. Letíte nad krajinou a vidíte zreteľne hranicu, perimeter, od ktorej to engine proste zareže. Beháte po zemí a sledujete tie koktavé kaskády tieňov meniace kvalitu nedôstojným spôsobom. Tiene sú veľmi náročné na systémové prostriedky mašiny. Ľahko zložia na kolená aj 1000 eurové PC GPU alebo ninja CPU. Dvojica najčastejších techník na ich zvládnutie sú shadow mapping a shadow volumes. Tá prvá je menej technicky náročná ale devastuje úložný priestor, RAM, zbernice a fillrate. Ide v podstate o balík textúr. Ten druhý postup zas zabije vaše CPU, lebo sa pri ňom exaktne presne ráta priestor, do ktorého svetlo nemá vstúpiť. Tieto tiene sú teda presnejšie, krajšie ale výpočetne nenažrané. Môžte ich kombinovať. Môžte použiť aj SDF tiene. Môžte rasterizáciu znasilňovať na iks spôsobov. Vždy to bude iba o hrubej aproximácii s prudko narastajúcou komplexnosťou pri čiastkovom riešení každej banality. V istom bode, ak na to HW má, je vhodnejšie použiť raytracing.

naraz to na PS5 mať nebudete, pekne selektívne

Raytracing /RT/ pritom s tieňami, priame alebo nepriame, vlastne nemá ani nič spoločne. Vznikajú pri jeho použití zadarmo, všade, blízko aj ďaleko a vždy vo výbornej kvalite. Čo je to za zázrak ? Predstavte si hernú scénu. Neosvetlenú. Hádžete tam lúče /raytracing/. Veľa, milióny, miliardy. Letia, odrážajú sa, vždy patrične oslabené podľa vlastnosti materiálu. Tam kde na pixel nedopadne nič alebo málo - ostane pôvodná, úplne alebo čiastočne neosvetlená plocha. A to je všetko. Raytraceované tiene sú vlastne absenciou svetla a vznikajú zadarmo. Geniálne. Pri rasterizáci spracujete scénu vždy minimálne dvakrát. Raz ju nasvietite a potom sa trápite s tieňami. Raytracing to zvláda v jednom priechode a tiene vôbec nerieši.

Grafické karty od Nvidia už prvú generáciu raytracingu úspešne zavádzajú a tlačia sa aj do DirectX špecifikácií. AMD sa na to chystá skočiť v podobe konzol 9. generácie. Je AMD riešenie diametrálne odlišné od NVidia ? Podľa dostupnej dokumentácie sú doslova rovnaké, mínus pár detailov okolo časovej koherencie s keškami. Obe majú raytrace jednotky úzko zviazané s CU /shader engine, registre/ a s textúrovacími jednotkami TMU. Obe akcelerujú BVH / bounding volume hierarchy/, teda uľahčujú traverzovanie lúča scénou vynechaním objektov, ktoré lúč arbitrárne nemusí testovať.

Nvidia pri NV 2080 Ti udáva textúrovací výkon na úrovni 420Gtex/sec a RT výkon zas s cifrou 10 Grays/sec. Index ratio 1:10. Pri XSX si texture fillrate vypočítame takto: 52 x CU x 4 TMU na jednu CU krát 1.825Ghz = 379.6GTex/sec. Veľmi blízko tej 2080TI. Ideme ďalej. Microsoft udáva, že XSX zvládne 380 miliárd BHV operácií za sekundu. Kauzalita s výkonom TMU je "čiste náhodná" a ide o tvrdý limit ako vidíte. Odhad pri XSX s použitím NV prepočtu je, že zvládne 9 Grays/s. Ani PS5 nenechám bokom: 36 CU x 4 TMU na CU krát 2.23Ghz = 321GTex/sec a teoretických 7.6Grays. Pre porovnanie - pri non super NV 2070 udáva Nvidia 5.6Gray/s. Ak vás to teda poteší, tak má PS5 RT výkon niekde okolo hladkej NV2080. Dostatočné na trochu blbnutia s reflexiami alebo s lokálnymi tieňami.

PS5 a XSX sú prvou generáciou konzol s prvogeneračným AMD RT. Musíte byť zhovievaví aj Mark Cerny dobre vie, že RT je v tejto fáze viac gimmick ako plnohodnotná fičúra. Na raytracing použiteľný pre nasvietenie, reflexie, proste všetko naraz čo to len dá - potrebujete aspoň 50 TFLOP GPU so zodpovedajúcím zázemím /shader engines, fillrate, extrémne rýchla RAM, kešky/. Je možné sa k tomu dostať o cca 7 rokov pri zdvojnásobení RT výkonu každé tri roky, bez navýšenia ceny a s prechodom do rutinérskeho mainstreamu.  Možno to však o 7 rokov nebude raytracing ale photon mapping, iný typ globálneho nasvietenia so všetkými finesami sko v skutočnom svete. Najbližšie roky budú o fyzickom vytláčaní rasterizácie z hardvéru a hľadaní konsenzu čo ju nahradí.

06/03/20

PlayStation 5 - "raytracing je nové lens flare"


Vieme, že 9. generácia konzol vzdialená asi pol roka bude používať skvelé Ryzen osemjadro a hádať môžte akurát na akej pracovnej frekvencii to pobeží, koľko kešky tam nechajú, bude/nebude AVX-512 podpora. Prkotiny. Pri GPU sa čakala modifikácia poslednej AMD GPU generácie s architektúrou RDNA. Dnes sme opäť o niečo múdrejší lebo po niekoľko hodín trvajúcom maratóne AMD Financial Day 2020 je oficiálne potvrdených niekoľko predpokladaných skutočností. Obe konzoly PS5 aj XSex budú pri GPU používať pre svoje herné účely upravenú, najnovšiu RDNA2 variantu s hardvérovou akceleráciou raytracingu /obrázok nižšie si rozkliknite, tie odrazy tam sú doslova všade, nielen na tej vode/. RDNA2 prinesie ďalších +50% navýšenia efektivitu GPU oproti RDNA1 v zmysle pomeru výkonu na watt, čo vysvetľuje možnosť dostať do PS5 aj tých 12TFLOPs výkonu, teda level NV 2080. A celé to má používať posledný výrobný proces TMSC, takže to beriem ako potvrdenie 7nm+ EUV - veľmi dôležité a konzolu s TDP napríklad do prijateľných 220 watt. Chladenie, hluk.

Microsoft DXR 1.1 bežiace na AMD RDNA2 GPU

Do rúk teda asi dostaneme konečne dokonalú playstation konzolu s ideálnym CPU  a GPU a dostatok RAM /tých 16 giga čiste pre "games", ktoré tam určite budú, beriem ako OK/. Predchádzajúce PS mašiny mali vždy nejakú slabinu. PS1 slabšie CPU a dosť blbé GPU, PS2 super extra komplikované GPU /presnejšie celá graficka pipelajna, kde patria aj obe VUs, GPU samotné bolo blbé ako zlomené tágo/, PS3 slabé GPU a zmätené CPU, PS4 zas veľmi veľmi slabé CPU, GPU je výborné

SONY podľa analytikov pravdepodobne čaká na kroky MS, kým urobí tie svoje a predvedenie dizajnu, nedajbob ceny PS5 sa odkladá z mesiaca na mesiac, najnovšie to vraj príde na konci apríla 2020 /duben/. Osobne pri otázky ceny konzoly tu z mojho pohľadu niet veľmi čo riešiť. Zohľadniac BOM mašiny nemôžu ísť nižšie ako na 450 euro, a aby to zbytočne nedoplácali, tak sa čaká skôr tých 500. MS však môže zamieriť cenovou politikou do dumpingu, tak SONY vyčkáva.

02/06/19

Raytracing - úvod


PS2ka mala vo svojej dobe medzi konzolami dlho jeden z najvýkonnejších GPU rasterizérov. Rasterizácia je vlastne proces, keď napríklad herný 3D objekt transformujeme do 2D raster matrice obrazovky. Na plochu nahadzujete farebné pixely. Jednotlivé objekty však o sebe "nevedia", nezdieľajú info o vzájomnej polohe, transfere svetla. Všetko, každý efekt, vizuálny jav na obrazovke rasterizér odmaká ručne a vždy ide o hrubú aproximáciu. Výsledok rovnice odhadom. PS2 dostala aspoň programoveteľnú manipuláciu s vertexami /časť polygónu/, konkurenčný Gamecube aj TEV jednotku, pixel mixér. Xbox už mal klasické pixel/vertex shaders.

Farba pixela sa teda dala vypočítať vnútri GPU bez znásilňovania zberníc a pamäte /PS2 mala dovtedy bezprecedentne veĺkú pamäťovú priepustnosť pre VRAM, živila takto svoj rasterizér/. Rasterizácia dnes je extrémne rýchla, vyladená, zároveň však nesmierne blbá, lokálna a neglobálna. Každú prkotinu ako priame svetlo, nepriame svetlo /sekundárne, terciárne odrazy vnútri budovy/, primárne tiene, sekundárne-ambientné tiene, odrazy, reflexie, refrakcie, kaustika a sto ďalšieho musíte ošetriť samostatným kusom kódu, ďalšou vrstvou textúrou, mapou, pomocným bufferom. Namiesto jednej tatrovky 8x8 to vozíte tisícovkou fúrikov.

Je to strašne časovo náročné, prácne a v dnešných hrách s vysokou objektovou/materiálovou denzitou, pri stúpajúcioch nákladoch na vývoj hry je už rasterizácia na prekážku veci. Prekotúľali sme sa z neakcelerovanej rasterizácie /všetko na CPU, bežné i386-486/ ku akcelerovanej /3Dfx, PS2/ ďalej ku pixel shader-vertex shaderom až nakoniec ku dnešným unifikovaným SIMD jednotkám, ktoré nerozlišujú aký typ operácie od nich chceme. Ďalším krokom je úprava systému na zrýchlenie raytracingu /raytrace = sledovanie lúča = v skutočnosti ideme proti prírode, rekurzívne - opačne od vášho oka ku svetlu, 99% vyžiarených fotónov, ktoré až ku vám nedorazia, tie nepotrebujeme, ich prepočty by zahltili aj počítače NASA, vtedy hovoríme o Photon mappingu, tak o 20 rokov dovidenia/.

Raytracing je globálny systém nasvietenia. Štukneme vypínačom, svetlo sa rozbehne a auto-generuje priame svetlp, nepriame svetlo, tiene, ambientnú oklúziu, odrazy, fresnel. Akúkoľvek pitominu tam parametricky nastavíte a vaše GPU zvládne vypočítať. V modernom GPU zaberajú raster jednotky malú /maličkú/ časť, majoritu plochu obsadzujú vypočetné SIMD FPU pole. Tie sa upravia, tiež celý manažment pohybu dát. Raytracing v hernej dynamickej scéne je svojou filozofiou veľmi náročný na náhodný prístup k dátam, je rekurzívny a horšie paralelizovateĺný. Vlastne som popísal základné črty bežného CPU a v tom je ten ftip. GPU musíme trochu CPUfikovať. To necháme na inžinierov aby našli vhodný pomer koľko komu čoho ešte ponechať /raster klasika, shader SIMD klasika, raytracing moduly sa trochu pobijú o životný priestor/. Mark Cerny a AMD však pri PS5 GPU na niečo prídu, akcelerovať v raytracingu nemusíte hneď všetko, sme na samom začiatku, vyzrievať ta párada bude pomaly.

1984 - robot kráča už celých 35 rokov smerom ku raytracingu - 2019

Raytracing teda vie zrýchliť a zlacniť výrobu, pochopiteľne zlepší vizuál a umožní Kojimovi rýchlejšie prototypovanie /dôležité !/ a transformáciu Decima enginu n a Fox engine, ktorý ostal s Konami. Vážne to inak robí. Myslím, že nas čaká asi 10 ročné prechodové obdobie, v ktorom sa stane globálna iluminácia rutinnou záležitosťou. V tom istom období sa bude rozhodovať aj o tom, čo nahradí "polygón" ako základné primitívum. To je ale iný článok. Sledujem však nádejne sa vyvijajúci hybrid s rozkladom polygónov na tzv. Signed Distance Fields (SDFs) Tieto 2D/3D primitíva majú aj volumetrický, objemový, dokonca raytracing charakter. Systémovo dosť náročná vecička. Najdete ju v istej podobe v hernom engine Dreams /PS4/. Smiech. V pozadí sa nám deje toľko vecí, že nejaká RTX Nvidia je iba kvapka v mori.

Update: priložím aj niečo pre Amiga fanboys. Klasická animácia The Juggler by Eric Graham z roku 1986. Je to slučka zložená z 24 frejmov v HAM móde 4096 farieb /delta kompresia/. Snímky renderoval na bežnej Amige s 512KB RAM pomocou raytracera s názvom "SSG", čo frame to 60 minút, celé mu to teda trvalo presne 24 hodín. SGG je predchodca jeho dalšieho veľkého RT editora Sculpt 3D.

dnes to každá PC šunka zvládne v reálnom čase na 60fps+, 
bežná i7ka je minimálne 5 000 000 krát rýchlejšia ako tá amiga.