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.

No comments:

Post a Comment