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.
No comments:
Post a Comment
**** pre vloženie hypertextového odkazu do komentára použi CSS kód: hyperlink ****