5. 3. 2011

Hladké ako zamat

Blbčekovia na pctuning.cz a ich 300w+ GPU, ktoré hanblivo benchmarkujú v konzoláckom rozlíšení, aby im framerate po zapnutí hárdverového 8xMSAA v 1080p s chrapom kľakol na hubu, do oblasti jednociferných čísel. Antialiasing je objektívne mimoriadne dôležitým "efektom" scény. Ľudské oko ako vieme, je analogovým zariadením s istou mierou hysterézie /neurčitosti, nepresnosti/ a pracuje v obrovskom rozlišeni /keď to rátam pre 180 stupňové zorné pole vychádza mi 1300 megapixelov, PS3 hra má v 720p - cca 1 megapixel !!/. Počítač, presnejšie program, generuje čistý digitalný obraz bez "šumu", kde ďalším procesom - antialiasingom vytvára prijemné mäkké, hladké hrany. Hárdverovo implentovaný MSAA /rozhodne neporovnateľne menej náročná forma referenčného ďaleko kvalitnejšieho supersamplingu/ bol dlhé roky jediným spôsobom, ako vyriešiť náš zubatý problém.

Prechodom na výrazne efektívnejší deferred rendering, však MSAA zo dňa na deň skončila na smetisku dejín. Deferred renderer už so svojej podstaty má geometriu a proces jej nasvietenie - oddelené, MSAA tam teda za bežných podmienok proste nefunguje. Ak ju napriek tomu znásilnite a do svojho enginu ju pretlačite v istej časti vašej render pipelajny /ako KZ2 s 2xQAA/, stále tu ostávaju nemiestne systémové požiadavky /hlavne voľnú pamäť a priepustnosť do pamäte/ a zlá výkonnostná škalovateľnosť s rastúcim rozlíšením. Ak vás okamžite napadlo skúsiť softvérové riešenie pomocou CPU, alebo ALUs v GPU, ste na dobrej adrese /nebojte sa, žiadna únavná teória vás v ďalších odsekoch nečeká/.



Crysis 2 - subHD, bez AA versus Killzone 3 - 720p + MLAA

Prvýkrát sa to v plnej paráde použilo v PS3 verzii hry The Saboteur. Dnes dobre známý MLAA algoritmus pomocou SPE jednotiek /viď aj LBP1 s MSAA vs LBP2 s MLAA/. Budem stručný. Ide o postefekt. Búrlivo sa vyvíja, rastie kvalita, klesá spotrebovaný SPE čas /God of War 3 - MLAA SPE v alfa verzii 120ms+, vo finále 3.5ms, o 80% rýchlejšie ako RSX 2xMSAA, pritom 5 krát kvalitnejšie/. SONY Phyre 3.0 engine opäť predstavený na GDC 2011 predstavil aj najnovší MLAA kód. Ale pohnime sa ďalej.

Zásadným problémom MLAA od začiatku bolo nedostatočne zvládnutý subpixel aliasing /SPE kód proste iba behá po ploche a hľadá hrany, čo nájde zapatlá, nehľadí ako MSAA na depth/stencil buffer geometriu, MSAA tento problém až v takejto miere nepozná/ a antialiasuje aj hrány, ktoré mal nechať na pokoji. Subpixel aliasing v MLAA hre si často netrénované oko ani nevšimne, ale je tam /typicky zábradlie - alebo iná "tenká" geometria, drôty/. V Killzone 3 je prítomný tiež /vpravo hore, tie jedno pixelové osvetlené hrany/. Ak neviete ako je možné mať v nedeliteľnom bode obrazky nejalé subpiksle - choďte ku svojej starej CRT telke a pritlačte oko na tienidlo, áno toto sú tie subpixely, ktoré farebnou RGB kombináciou vytvárajú klasický jeden pixel obrazovku/. Naspäť na trať. Na odstránení tohto problémiku sa pracuje a jedno z riešení prináša NVIDIA s názvom SRAA - Subpixel Reconstruction Antialiasing.



Ako vidíte má nami žiadanú vlastnost - rekonštrukcia informácie o subpixeloch priamo vo svojom názve. SRAA je plne kompatibilné s deferred aj forward renderingom /KZ2 napríklad používal obe render cesty/. Podobne ako MSAA pre identifikáciu polohy hrán/geometrie, ktoré má antialiasovať používa depth a normalový buffer /čerpá ich z globálneho G-bufferu vytvoreným deferred rendererom, G-buffer je zdrojom informácii pre more ďalších grafických operácii, SRAA je iba jedna z nich/ - robí to však úspornejším spôsobom, a s menším počtom krokov.

Na dnešnom výkonnom PC GPU triedy NV GTX 480 trvá prebehnutie jedného frejmu v 720p rozlíšení cca 1-2ms, v 1080p asi 2-3ms, s výslednou kvalitou, ktorá zodpovedá 4-16x MSAA. Je to teda skutočne kvalitné AA a vlastne zadarmo. Pochopiteľne ani SRAA nie je poslednou zastávkou na trati a už teraz sa pracuje na SRAA-MLAA hybridoch využivajúcich to najlepšie z oboch svetov /MLAA je lepšie v lokalizácii okrajov tieňov, ploch so zrkadlových odrazom svetla/, väčší počet SRAA samplov, ešte lepšie algoritmy pre hľadanie hrán, lepšie NEantialiasovanie podľa zvoleného prahu citlivosti. Cieľom je veľmi flexibilný a čistý 16xSRAA sampling aj v 1080p rozlíšení. V praktickom hernom živote nás takmer určite čaká už v hre Battlefield 3.