23. 11. 2010

GT5/RSX - trochu teórie

V predstihu pred "katastrofovou" píšem tento článok napísaný relatívne zrozumiteľne, pre blbcov. Videl som už more príspevkov, ktoré laicky s počudovaním rozoberali rôzne grafické "neduhy" hry GT5. Otázky typu - ako je možné, že po šiestich rokoch vývoja a pri CELL výkone je tam tento alebo henten hnus, hrana, blikanie, zub, blok, error pixel. Odpoveď je vskutku triviálna a dĺžka vývoja s tým nemá nič. Ako povedal ujo Majský, najväčší tunelár slovenska: "sa nestaraj, tvoje už není NIČ." Táto generácie je naozaj nielen z hľadiska technického spracovania - generáciou prechodovou, next gen bude až ta - ďalšia. Hovorim vám to ako politický sľub pred voľbami. Písmenok nás čaká veľa, ideme na to.

Rozlíšenie. Iba senilní starci nad hrobom si dnes pamätajú PC hry bežiaci v pixelóznom 320x200 rozlíšeni, 320x240, alebo 320x400, 360x480 v obľúbenom X-móde. Univesa-Univbe lineárny akcelátor, soft driver od Scitechu. Vy deti neviete nič o tom, čo to bolo ho napchať do vyššej pamäte, a obísť 640KB limit základnej pamäte. PSone operovala v podobnom priestore: 320x240 /RR1/, 368x480 /Tekken 3/, 512x480 /Tobal 2/, 640x480i v móde 7 bolo najvyšším podporovaným rozlíšením. Stalo sa štandardným pre PS2, niečo tam bežalo aj v progresívnom 480p móde, výnimky ako GT4 aj v 1080i. Pri PSone aj PS2 sa vyššie rozlíšenia začali použivať až ku konci cyklu, v ruke v ruke s tým, ako rástla schopnosť progišov napísať efektívnejší herný kód.

Nárast rozlíšenia /rastie so štvorcom zmeny, rátame os X a Y/ medzi Psone a PS2 je pri porovnaní počtu pixlov 128K versus 307K. Trojnásobný nárast, v absolútných číslach je rozdiel do 200K pixloch. Teraz príde problém tejto generácie. Štandardné rozlíšenie PS3 hry je 1280x720p - tj. 921K pixelov, čo je opäť trojnásobný nárast oproti PS2, ale v absolútných číslach je rozdiel nie 200K ale 600K+ pixelov. Prepočet pre 1980x1080p je ďaleko dramatickejší - 7 násobný nárast a absolútny rozdiel - 1.800.000 pixelov !! Číslovka milión, bratia. Záver je jasný - nárast hrubého výkonu tejto generácie proporčne nestačí ani štandardnému rozlíšeniu 720p, ak už niekto použije plné 1080p rozlíženie, alebo rôzne sub1080p finty - 1280x1080, 960x1080 /stále viac pixelov ako 720p/ ide o vskutku výnimočné kóderske zázraky.

Táto generácie je navyše "zmrvená" pokročilými renderovacími postupmi, mnou stále opakované MRT /Multiple Render Targets/ schopnosť v jednom draw call prdúskať pixely do rôzných častí pamäti pre rôzne časti grafického soft subsystému. Depth, stencil, view-space normály, specularity, motion vector, albedo, postefekty DOF, MB, bloom, IBL .. ďalšie a ďalšie. Tie virtuálne násobia použité rozlíšenie faktorom 4-10 /plus spotreba pamäte/. Vrcholom je použitie deferred renderingu, ktorý vyžaduje vytvorenie G-Bufferu na pomery konzoly kolosálnych rozmerov : 30-36+ mega.

Nasledujúcim výpočtom vám ukážem čo sa asi vojde do 10 megovej pamäte xcrapu - získate dobrú predstavu o tom, že kompromisy sú neustále - témou dňa: rozlíšenie 1120x585, 2xMSAA, FP10 HDR, 32-bit Z-buffer = 1120x585x2x (32/8 + 32/8) = 10483200/1048576 bajtov = 9.99 mega. Akákoľvek zmena smerom nahor /lepšie AA, lepšie HDR, lepšie rozlíšenie/ sa rovná prekročenie kapacity eDRAM /potrebujete deliť - tiling frejmbufera/ a následne schytáte penalizácie pri spracovaní geometrie. Aj preto tak veľké množstvo aj natívných xcrap hier /HALO, Alan Late/ uteká smerom ku subHD rozlíšenie, alebo úplne vypúšťa antiliasing/HDR. Veľkosť eDRAM je fatálna aj z pohľadu vytvorenia G-bufferu /deferred rendering - de fakto všetky moderné hry/. Je verejným tajomstvom, že tu má PS3 jasne navrch. Naposledy potvrdené v hre BLUR od Bizarre. Ak by podľa dev tímu išli na doraz možnosti ich enginu, xcrap verzia by skončila s papuľou plnou piesku. Spotreba pamäte je kritická aj pre ďalšie kapitoly /AA, zobrazenie tieňov - počet a kvalita/, a to na úkor ich kvality.



nielen od 50 sekundy je to žrádlo bohov

Fillrate. Máme teda oproti PS2 svinsky vyššie rozlíšenie /absolútny rozdiel je 600-1800K pixlov/ a množstvo bufferov, ktoré treba naplniť. A fillrate - ten je v tejto generácii smiešne maličký. RSX v PS3ke zodpovedá výkonovo niečomu medzi NV 7600 a 7800. Pričom objektívne minimum bolo už vtedy v 2006 niečo na úrvni NV 8800. CELL v PS3ke by však utiahol hravo aj GTX 480 SLI.

V okamihu, ako som sa dozvedel, že RSX kľakne z 256 bit busu do GDR3 vram na 128 bit /dôvod - možnosť rýchleho znižovania nákladov na výrobu čipu pri prechode na 40nm technológiu/ - tak v tej chvíli som vedel, že dôsledky to bude mať strašné. Došlo totiž aj ku zníženiu ROPs /rasterizačné jednotky/ na 8 z 16 /NV 7800/. Opäť matematika - 8 ROPs krát 500 MHz /RSX/ = fillrate 4000 Mpixels/s, 128-bit bus pri 650 MHz GDDR3 = 22.4 GB/sec bandwidth. Vynechám FLEXIO a 64 bit RSX bus do XDR pamäte /RSX adresu celých 512 mega celej RAM/, nechcem to tu príliš komplikovať. Mimochodom GS GPU v PS2 má konfiguráciu 16 pixel jednotiek krát 150Mhz /GS beží na polovičnej rýchlosti EE/ = 2400 Mpx/sec, všetko na 48gig/sec eDRAM. Ide však o naozaj dve neoporovnateľné architektúry. GPU časť PS2ky však bola proporčne na svoje hry viac róbustnejšia /GT4 nemá ani len náznak framedrops, tearingu bez ohľadu na to, čo sa na scéne deje/.

Tiene a antiliasing. Mimoriadne komplikované téma. V GT5 si o to bude otierať hubu kde kto. Faktom je, že tu výkon PS3 naráža na objektívne príčiny. Tiene ako také sú 30 rokov starou záležitosťou a dodnes sa pracuje na ich rozumnou zvládnutí. To "nerozumné" natvrdo vyžaduje 2 giga vram a fillrate v desiatkach giga-pixloch. Viem, že sa nadáva nízke rozlíšenie shadow máp v GT5ke, ich rozpad vo väčšej vzdialenosti od pozorovateľa, nekvalitné filtrovanie okrajov, nerešpektovanie tvaru geometrie, ktorý ich vrhá. Shimmering artefakty, colour bleeding, spatial aliasing. Tých pojmom s ktorými sa zápasí je veľa.

Podľa mojich rešerší používa GT5 techniku - variance shadow maps s hárdverovým PCF 2x2 filteringom okrajom shadow máp, ktoré určite nie sú väčšie ako 1024x1024 pixlov, skôr 512x512 a menej. Je to dané veľkosťou voľnej pamäte, fillrejtom, priepustnosťou, a hárdverovými limitmi NV GPU architektúry. Pre antiliasing platí to isté v ružovom. MSAA - má opäť v skratke skryté multi-sample .. veľa vzoriek. A opäť sa opakuje lamentovanie, kto to "veľa" vypočíta, vyrenderuje. Viď aj môj starý článok.

MSAA naozaj nerieši všetky problémy, unikátne SPE-MLAA síce šetrí GPU, ale pre zmenu nerieši subpixel aliasing /el. kábel, od ktorého sa vzdiaľujete, alebo tenké tyčky v plote, pletivo/, ktorý rieši práve MSAA. MLAA má pred sebou ešte dlhú cestu. Hybridy typu nízke MSAA 4xAA plus MLAA /aj 16x/ sa už na PC veľmi úspešné skúšajú /nadejný postup pre Playstation 4/. GT5 ešte prejde analýzou, ale zdá sa že v istej fáze používali/používajú hybridné riešenie : MSAA + temporal antiliasing, blending pixlov dvoch/viacerých frejmoch /niekedy však potrebujete ďalší bufer, pamäť ahoj .. bla bla/. Viď aj stará Voodoo 5 a jeho "akumulačné" finty, je to to isté. Áno - GT pre PSP používa temporal antiliasing.

Textúry a alfa mapy. Venovať sa im nebudeme, už ste asi zistili, že ich niet kde vopchať. Teda vo vami vysnívanej úžasnej kvalite. Alfa na PS3ke beži úplne štandardne v 1/4-1/16 rozlišení /preto tie artefakty v GT5, keď sa dym prekrýva s karosériou auta, niet dosť priepustnosti a fillrejtu/. Známa achilovka RSX GPU. Streaming budget pre textúry je pri 60 fps veľmi malý, nezabúdajte, že máte iba 18ms na jeden frejme. To chce aj kvalitný buffer pre textúry, a opäť sme pri "nenafukovacej" pamäti. Tých 512 mega ktoré PS3 má, 8 ROPs, stará RSX - jedno vám poviem. Nekonečne ma serie, že pre xcrap 1 - Nvidia dodala custom verziu Geforce 3 - výkonovo a inštrukčným setom na úrovni Geforce 4 /o 100% zdvihli výkon vertex časti/, pri RSX však nepohli prstom.

RSX je veľmi pomalý rasterizér, ma pomalé aj spracovanie vertexov /geometria/ a malú priepustnosť vertex stage renderingu. Jedna SPE dokáže vychrliť desiatky miliónov polys, ale viac ako 250M ich za sekundu cez RSX neprejde /HW limit/. Preto dnes SPE pracujú skôr na odstraňovaní polýgonov zo scény /slávne EDGE knižnie/ - poznáte to ako culling, HSR /hidden surface removal/ a podobne. Natívna a dobre naprogramovaná PS3 hra paradoxne môže mať na scéne /a aj má/ ďaleko viac polygónov ako to čo zvládne Xenos v xcrape. Je to však práca navyše, a čas sú peniaze a drahší vývoj. Aby som nemárnil vašim časom.



máme okruh s dynamickom zmenou dennej doby a počasia, novú fyziku - tešme sa

GT5 je objektívne - technologický zázrak pri zohľadnení výkonu-možností GPU/mem časti PS3 a pri dosiahnutí cieľa - 60fps v 720p, dokonca s antaliasingom. Osobne som presvedčený, že ak ešte pre PS3 vznikne jedno pokračovanie GT série, mnohé jeho grafické neduhy budú pokročilejšími algoritmami ešte celkom pekne riešiteľné. Pracuje sa na nich, vznikajú doslova denne, a nielen vo veľkých soft gigantoch. A už dnes vidím otázniky v očiach niektorých kóderov, prečo vlastne pri GT5 použili iba - VSM tiene, pri známych problémoch, ktoré táto technika má pri vykresľovaní vo väčšej vzdialenosti od .. auta.