17. 11. 2009

SPE ich všetkých do temnoty zviaže

Frostbite engine v1.5, Bad Company 2 : "náš kód beží na piatich xcrap HW threadoch a piatich SPE jednotkách, xcrap verzia je neustále pomalšia, o cca 50 až 60%, aj kvalita vizuálu xcrap verzia bude trochu nižšia oproti zvyšným dvom platformám." Teoreticky teda máme čierne na bielom, že PS3 verzia by mala vyzerať lepšie, a pri záťaži sa aj celkom jasne lepšie hýbať. PS3 má pri tom stále v rezerve jedno celé SPE a PPE jadro. Ohromná prevaha, alebo o 100% vyšší špičkový, výpočetný výkon. A teraz čo s ním.

Mám tri návrhy, jeden z nich sa už bežne používa, tie druhé dva sú zakomponované v hrách, ktoré sa dostanú na trh onedlho. Tým bežným použitím SPE je výrazne zjednodušenie scény a jej predžutie pre RSX. Back-face culling -odstránenie polygónov,ktoré sú k nám otočené chrbtom /odvrátené strany budov/, clipping - riešenie viditeľnosti, nachádza sa vôbec daný objekt vo vašom zornom poli, alebo odplával doľava, occlusion culling - exekúcia polygónu, ak je náhodou prekrytý iným objektom /v GTA su najvačšími oklúdermi práve tie budovy/, BC2 používa parádne soft riešenie via SPE, s ktorým sú mimoriadne spokojný, prostredie je veľmi dynamické, zničiteľné a oklúdery miznú pred očami, to komplikuje situáciu. CELL ho rieši. A deteselácia, alebo plynulé odoberanie polygónov z objektov, ktoré od vás odchádzajú, odlietajú, strácajú sa do diaľky. Aj na riešenie týchto problémov, významne akcelerujúcich RSX /menej draw calls, a overdrawingu, jednoduchší triangle setup atď./, slúžia PS3 EDGE knižnice. Participujú tam aj Uncharted dev tím.

Druhý pán na holenie. Teda nekonečný boj s alpha renderingom. Písal som o tom aj v prípade Flopzy 2.5, kde napriek priepustnosti eDRAM, zvolili systém ala - "lacný jožko", teda alpha to coverage. Prakticky ide najmä o zobrazenie množstva stromov, trávy a iných zelených nerastov. Borci z Black Rock Studio /Pure, Split-Second v príprave/ však ponúkajú prevratné riešenie zobrazenia tisícok, alebo miliónov týchto /semi/trasparentných plôch. OK, nie je prevratné - ide len o nový logický postup. A stačí im na to iba 2 x draw call, separátne buffery pre farebnú zložku a alfu, žiaden depth sorting /tak svinsky systemovo náročné, že flopza radšej použila oveľa jednoduchší alpha to coverage /, zvláda to dokonale antialiasované siluety, a celé sa to vlastne maskuje, ako shader postefekt /Screen-Space Alpha Masking/. Skvele kompatibilné s forward aj deferred renderingom /Kz2/. Absolútne ideálne pre lineárne, a po malých úpravach aj pre sandbox hry. Dokonalá voľba pre zalesnenie Killzone3 a to džungľou, o akej sa ani Crysis nesníva. Pochopiteľne aj táto technika má niekoľko drobných technických úskalí, na ktoré je treba si dať pozor.

Aby bola švédska trojka úplná, chýba už len ten najvypuklejší problémik. Antialiasing. Verte mi, ide o gordický uzol, ktorý nemá jednoznačne riešenie, a aj gigantická priepustnosť a dedikovaný AA hárdver vám čerta starého pomôže. Existuje obrovské množstvo postupov a riešení, a to aj veľmi individuálne viazaných na GPU hárdver pre Ati, a NVidiu. Antialiasing je vlastne odstránenie komponent s vysokou frekvenciou z daného objektu /dajme tomu - textúra/ skôr, než to preženiete cez "nízkofrekvenčené" zariadenie, videovýstup. Najnákladnejšie FSAA - supersampling napríklad renderuje frame v 4 vyššom rozlíšení /FSAA 4x/ než je reálny výstup čím získa pri downsamplingu až 16 supersamplovaných vzoriek pre každý pixel plochy. A ich farebným priemerom vypĺňa tie škaredé zuby vľavo aj vpravo. Sú aj čiastkové riešenia a ďaleko menej dožadovačné, ako je MSAA /multisample AA, štandardne na Xcrape/, ovplývajúci však dalšími chybami VNÚTRI renderovaných polygónov, alebo pri interakciach s hranami objektov.

Na PS3ke často využívaný Quincunx AA /samplovací pattern je päť bodov, štyri rohy a stred, ich blending/ zas bojuje s blur-vazelina efektom skrze celý obraz, subjektívne znižujúcim rozlíšenie textúr, objektívne ak použijete kvalitnejší anizotropný filtering textúr - uvidíte divy. Hravo na úrovni MSAA aj s ušetrením výkonu pre lepší framerate. QAA má aj pozitívne benefity pri scénach s kopou alfa textúrovania, redukuje trasľavý shimmering artefakt.


MSAA-QAA-QAA+AF

Takže tu máme tú tretiu sľubnú novinku MLAA /morphological AA/. Intel Labs, opäť postefekt, zvládne akúkoľvek komplexnú scénu, alebo render techniku, a efekty. Reflexie, refrakcia, všetko jedno. Veľmi výkonný a róbustný postup. Mala chybka, a veľká výhra pre CELL. Ide zatiaľ čisto o CPU riešenie. Pretože ide o postefekt, po predhodení frejmu v ňom na základe rafinovaných algoritmov hľadá definované tvary hrán a prípadne farebné diskonuity, potom dopočítava, alteruje, a rekonštruuje ich do finálneho nezubatého obrazu. Trochu riskantná metóda, avšak rychlá a výkonná. Rozumie si aj s deferred renderingom /Kz2/, kde je klasický MSAA hárdvér de fakto nepoužiteľný, a ako som už spomenul je extra optimalizovaná pre vysokoparalizovanú SIMD architektúru /CELL, Larrabee/. SPE AA sampling je už súčasťou SONY PHYRE enginu a premiérovo iba v PS3 verzii aj v sandbox hre The Saboteur, a na skutočne výsledky som veľmi zvedavý.



MLAA ON-MLAA OFF

Náhodne vybratá hra “Call of Duty: World at War”, priložená ku ich grafickej karte. Džungľa v najhoršom možnom rozlíšení 640x480, pre zvýraznenie zubatosti. GPU HW geometrický antialiasing je vypnutý /listy v popredí/. Všimnite si, že transparentná zeleň, alebo jej 2D billboardy v pozadí sú aj tak naďalej HW antialiasované. Nastavenie hry jej znefunkčnejsie neumožnuje. MLAA si však aj tak bezchybne poradila s oboma prípadmi. Denne nájdem aspoň dvoch, troch blbečkov, čo si otierajú hubu o CELL procesor a vysmievajú z hype, ktoré ho stále obklopuje. Pravdu malí tí, čo tvrdili, že aj o päť rokov sa nájde spôsob, ako toto CPU využiť ešte efektívnejšie, a dorovnať takto zastarávanie RSX GPU.