13. 10. 2010

Smrtka zubatá

"Hry na PS4 budú konečne v plnom 1080p rozlíšení na 60 fps a s 4xAA". Tož túto vetu na každom hernom fóre čítam aspoň raz za týždeň. To rozlíšenie je vcelku OK /PS4 však bude mať o rád vykonnejší HW pre zvýšenie rozlišenia z toho nižšieho/, ten framerate je KO /každého bude lákať obrovských a luxusných 33ms na výstavbu jedneho frejmu pri 30 fps hre, tie tu teda ostanú asi navždy/, a na koniec to .. o tom antialiasingu je úplne mimo. Verte mi, že niet komplikovanejšej témy, a keď si laický hráč odfúkne, šak to máme v "hárdverovej" podpore. Ani nevie, ako veľmi je mimo mísu. A mimochodom to 4xAA môže byť v "každej" PS3 hre už dnes.

Dve "základné" typu odstránenie zubatosti v obraze sú vcelku dobre známe. Supersampling a multisample antialiasing - MSAA. Prvý je výrazne kvalitnejši, a s enormne vyššou spotrebou systémových prostriedkov /pamäť, priepustnosť/. Vďaka prepočítaniu frejmu do X-násobne väčšieho rozlíšenia a následne jeho zmenšením na požadovanú veľkosť. Vzorky-sample-prebytočne pixle takto získané, boli použité diabolskym mixovaním matrice /grid, rotated grid, jitter .. atď/ práve ku vyhladeniu hrán v celom obraze - full-scene antialiasing . MSAA bez toho, aby som vás trápil detailami, to robí omnoho-omnoho menej náročnejšie a rovnako aj oveľa horšie, a často iba v niektorých častiach obrazu /kolízia na úrovni alfa máp-transparencie, kolízie na úrovni specular máp, "vnútro" polygónov pri istých okolnostiach/. V preklade na drobné - 4xMSAA antialiasované auto v GT5 vám zahalí dym po gumovačke, na rozhraní karosérie a dymu uvidíte zuby, to isté pri odleskoch na niektorých častiach-lesklých hranách auta, a to bez ohľadu na stupeň MSAA. Je možné si s tým úplne poradiť, ale za cenu ďalšej ztraty výkonu na strane dýchavičného GPU. Meter ďalších vylepšení ako Coverage Sample Anti-Aliasing, Transparency Anti-Aliasing preskočíme, vyžadujú buď o 2-3 roky novšie-výkonnejšie GPU /shader model, fillrate/, ako je RSX v PS3ke. Alebo dokonca ide len o istý druh hacku pre DX9 /DX10 si vie "poriešiť" AA efektívnejšie/. Aj keď je paradoxne PS3 svojimi možnosťami často za možnosťami DX10.x features, RSX bude vždy jasnou brzdou, preto tu máme to "druhé" GPU - výpočetné SPE pole /celkom šesť jadier k dispozícií pre vývojárov/.



alfa-buffer s nizkým rozlíšením + AA "kolízia", vpravo - specular aliasing /veľmi bežné/

Hárdverové MSAA navyše tvrdo narazilo pri používaní najmodernejších deferred /tzv. "odložený-oneskorený" rendering/ postupov, s ktorými je iba veľmi limitovane kompatibilné. MSAA je primárne a vlastne iba určené pre zastaralý-klasický forward "priamy-okamžitý" rendering. Práve preto sa na xcrape "AA je zadarmo" používa antialiasing čim ďalej tým menej /Castlevania, aj keď ide o zúfalú koridorovku ho nemá ani za malý prd/, to však súvisí hlavne s jeho malou eDRAM a dev tím chcel plné 720p rozlíšenie, čo pri efektovo-graficky extenzívnych-HDR hrách na xcrape končí takmer vždy absenciou antialiasingu /sub HD Halo Reach/. Pri návrhu PS3ke však Kutaragi nežral mokrú slamu a nehulil zhnitú ganju.

Aj zlé AA je lepšie ako žiadne. MSAA je, bolo a bude pozliepanou vykopávkou /daň za dávno prekonanú filozofiu renderingu ešte z čias dávno pred prvou verziou DirectX/. Má problém s multiple render-targetmi /alfa, particle, depth, stencil, shadows, HDR, skinning polys/, a s deferred postupmi. Plus veľká spotreba vram a RSX to tak či tak v drvivej väčšine slušne neutiahne /nehovoriac o tom, že na G70ke je simultánny beh AA a HDR a priori nemožný/.



Under Siege, Phyre engine /SPE-AA/

Heavenly Sword nám však ukázal ako spojiť AA+HDR /custom HDR-nAo32 formát/. Phyre engine ako spojiť AA + deferred rendering - 2 x MSAA. Nastal teda čas oprašiť staré algoritmi hľadanie hrán, vážených priemerov, centroidy, softvérový antialiasing. Niečo čo je možné použiť aj na xcrape /moderných GPU/. Niekedy dokonca nutné. Ale vždy si to ukradne čas pracovných cyklov od GPU /ziskom je úspora pamäte a aspoň nejaké AA/. Vieme, že na jeseň tohto roka sa stal SPE-AA algoritmus súčasťou CELL SDK a je k dispozícii všetkým vývojárom. Pretože ide o POSTEFEKT, nemal by kolidovať z ničím hore uvedeným, a ani z ich vlastnými render enginami. God of War 3, Saboteur, LBP2, Under Siege už SPE-AA používajú. Podotýkam, ani tento typ antialiasingu nie je technicky dokonalý /subpixel aliasing, problematická vzdialená geometria, problematické objekty hrúbky jedného pixlu a menej/, ale je možné ho ďalej výkonnostne a vizuálne optimalizovať /dnes vieme dosiahnuť porovnateľnú vizuálnu kvalitu s 8xMSAA, pri niektorých hranách aj 16-32xMSAA !!/. Dokonca sa testuje intenzívne aj pre použitie vo Frostbite 2 engine /Battlefield hry/.



SPE-AA

Je možné ho teda použiť na xcrape /ako na každom CPU-GPU/, a prvé pokusy sa už objavili. Má to iba jeden "malý" háčik. Ak si vyhradíte čas - 5ms na celú tú operáciu v 30 fps hre a teda celkový budget je 33ms /30 ak chcete mať rock solid hru/. Potom 1/6 času sa GPU hrajká iba s AA postefektom, to jest 5 frejmov z 30. O toľko ta hra vlastne nebeží pomalšie, ale ide to na úkor napríklad iného efektu. Menej presný, alebo žiaden motion blur, alebo depth of field, alebo SSAO. Pri PS3 sa presne tých istých 5ms hodí na SPE jednotky /CPU v xcrape je výrazne pomalšie, tento luxus si nemôže dovoliť/. Bodka. RSX dostalo AA skutočne zadarmo. Vychádzam z toho, že žiadna súčasná multiplatformová hra /a iba málo nativných/ využíva CELL na 100%, vždy sú tu nejaké voľné pracovné cykly. Kraviny ako Generic Warfare 2, Biokunda 2, Need for Crack, Dead Game, Flopout 3 a more ďalších sú niekde na 30-50%. Z tohto dôvodu počnúc rokom 2011 - neakceptujem to, aby sa v PS3 verzii nejakého multiplat zvratku /napríklad Castlevania/, neobjavilo SPE-AA /hybridy MSAA-MLAA-temporal AA/, ktorý citujem : "sme to mali rozbehané za jedno poobedie."