1. 4. 2012

Ati versus Nvidia - kolo druhé

Minule som tejto témy iba jemne dotkol, dnes si to podložím aj nejakým tým dôkazom. Nepochybujem, že medzi ATi a NVidiu sú obrovské rozdiely /efektivita/ v tom ako rôznymi spôsobmi dosiahnú tú istú vec. Nie som tak naivný, aby som nevedel, že multiplat progiši v drvivej väčšine na tieto výkonnostné nuansy kašlú. Aj z toho dôvodu bol zručný amatérsky móder schopný zrychliť beh PC hry Skyrim niekoľkými banálny zásahmi o 25%. A ak sa naplní to, že všetky tri budúce konzoly dostanú AMD GPU, potom absolútne verím tomu, že sa to odrazí aj na oveľa lepšom behu PC hier na zostavách s AMD grafikami. Dnes sa totiž v PC sektore preferuje viac Nvidia - napríklad aj s jej PhysX API.

Niekoľko krát som tu spomínal AMD tech demo Leo pre jej najnovšiu 7xxx generáciu. Pre laika je to iba zopár pekne vyfarbených polygónov ale nič extra tam oproti hrám, ktoré pozná proste nevidí. V skutočnosti to demo použivá veľmi sofistikovaný renderovací postup - Light Indexed Deferred Rendering /LIDR/. Tento proces sa dá prirovnať k tomu, ako keby ste chceli ľubovoľnú, modernú hru renderovať iba pomocou 2D sprajtov tak, aby si nikto nič nevšimol. A to je presne aj náš prípad.

Klasický forward rendering /FR - výborná podpora pre MSAA, transparencie, a materiálovú variabilitu/ dnes de fakto nikto v špičkových hrách nepoužíva ako hlavný renderer, lebo táto technológia je nepoužiteľná pri rastúcom počte svetiel na scéne. Napríklad v Killzone 3 ich máte bežne aj 200-300 na frame a pri použití FR by sa hra plazila na 0-5fps. "Vynašiel" sa teda spôsob - deferred rendering /DR/ ako oddeliť nasvietenie od geometrie /FR pri každom ďalšom svetle spracováva scénu "od znova"/. DR má teda na háku či použijete 100 alebo 1000 svetiel, ste viacmenej limitovaný iba veľkosťou ram a priepustnosťou. Nutnosťou je vytvorenie veľkého G-buffera, ktorého veľkosť môže byť aj niekoľko desiatok megabajtov /stovky v katastrofickom prípade/. DR má navyše slabinu práve tam kde FR vyniká /teda - výborná podpora pre MSAA, transparencie, a materiálovú variabilitu/. Rieši sa to použitím sekundárných a terciarných FR rendererov pre transparencie a podobne /opäť KZ3/. Aby sme získali to najlepšie z oboch svetov, vytiahol sa zo zásuvky dobre známy forward+ /indexovaný/ rendering a spojil sa s DR. Komplikovanou teóriou vás nebudem zaťažovať. Každopádne aj tento spôsob renderovania scény si musel počkať na adekvátne výkonný hárdvér /ALU, priepustnosť/.

Našiel som tento praktický test uverejnený iba pred pár dňami. Použitý HW je presne v intenciách toho, čo by sa mohlo dostať do next gen konzol a to sa nám perfektne hodí. NV570 a Ati 6970. V hre bude veľa svetiel a dve algoritmy. Už spomínaný Light Indexed Deferred Rendering /LIDR/ a úplna špička použitá aj v Frostbite 2 engine /Battlefield 3/ - Tile Based Deferred Rendering /TBDR/. Popisy v tabuľke nižšie sú dúfam dostatočne zrozumiteľne /čím menej milisekúnd tým lepší výsledok/. Použil som kalkulácie iba pre 4xMSAA, ktoré by mali byť na next gene úplným štandardom.

Nvidia GTX 570
/4xMSAA/

128 Lights ---------- LIDR 8.47ms ------ TBDR 9.17ms
256 Lights ---------- LIDR 13.88ms ----- TBDR 12.34ms
512 Lights ---------- LIDR 21.27ms ----- TBDR 17.24ms
1024 Lights ------- LIDR 36.48ms ---- TBDR 31.25ms


AMD 6970 /4xMSAA/

128 Lights ---------- LIDR 6.49ms ------ TBDR 10.75ms
256 Lights ---------- LIDR 9.43ms ------ TBDR 13.15ms
512 Lights ---------- LIDR 13.89ms ----- TBDR 16.94ms
1024 Lights ------- LIDR 25.64ms ---- TBDR 33.33ms

Výsledky prekvapili nielen mňa. Na Nvidii si TBDR počína úplne suverénne a LDIR sa drží akceptovateľne pozadu. Nezabúdajte, že ide o syntetický test. V skutočnej hre ak zoberieme do úvahy aj nutnosť riešenia transparencií, časticových efektov a podobne sa môže ukázať LDIR výhodnejší aj pre Nvidia grafické karty. ATi na strane druhej skutočne boduje a potvrdzuje výsledky z Leo dema na výkonnejšej 7xxx triede. LDIR je výrazne výkonnejší - spracovanie 256/512 svetiel zvládne tak rýchlo ako Nvidia 128/256 pri použití TBDR !!! To je impozantný rozdiel. Nemusím vás teraz presviedčať o tom, že super optimalizovaný ATi engine pre PS4 a xcrap 720 môže mať na PC Nvidia grafikách isté malé problémy, však. Ak sa dostanem ku výsledkom porovnávajúcich špičkové Ati 7970 a GTX 680 hneď ich tu prilepím. Jeden majiteľ 680ky sa už ozval.

Update: Nové grafické karty sú pekelne rýchle, ale Nvidia stále na ATi nestačí /navyše bola 680ka porazená pri oboch render algoritmoch/, čim sa opäť potvrdzuje čo som povedal vyššie. Rozdiely pri 128 svetlách sú malé, pri 1024ke by to bolo v neprospech Nvidie určite o dosť horšie /stará verzia testu mala iba toto jedno nastavenie, už sa na úprave pracuje/.

Nvidia GTX 680 ---- 128 Lights ---- 2.85ms ----- 4.95ms
AMD 7970 ----------- 128 Lights ---- 2.30ms ----- 3.60ms