Hirdetés

Akcióban az NVIDIA SRAA algoritmusa

Január végén írtunk arról, hogy az NVIDIA egy újszerű élsimító eljáráson dolgozik. Az alapproblémát a hírben részleteztük: a multisampling élsimítás már nem felel meg a kor követelményeinek, hiszen a deferred rendering technikára épülő motorok esetében nem hoz tökéletes eredményt. Az AMD ezért vezette be az MLAA-t, ami a végső képkockán dolgozik, ám pár helyen nem végez tökéletes munkát, hiszen a subpixel értékeket nem vizsgálja. Az SRAA itt próbál segíteni, mivel a mintavétel szempontjából az MSAA-ra épít, ami nagyon jól kezeli a geometriával kapcsolatos helyzeteket.

A bemutatott algoritmus két részre bontható. A geometriával kapcsolatos információkat a multisampling alkalmazásával nagyon egyszerű megszerezni. Gyakorlatilag egy nagyfelbontású mélységpufferre van szükség, függően attól, hogy pixelenként hány adat szükséges. Ezen a ponton a minőség skálázható, így bár a teljesítmény az adott megvalósításhoz mérhető, arányaiban a számítások gyorsan végrehajthatók. Az árnyalás már sokkal keményebb dió. Itt a normal bufferbe kerülnek az extra tartalmak, ám fontos, hogy ezt a fázist nem kötelező végrehajtani. Sajnos az árnyalással kapcsolatos információk kinyerése borzalmasan drága, és ezt a részt a fejlesztőknek kell az adott renderelőhöz igazítani, mivel csak így biztosítható a tökéletes eredmény. Ezen a ponton egyébként nagymértékben megnő az SRAA optimalizálásának lehetősége.

Az NVIDIA kimérte a négymintás SRAA-val kapcsolatos adatokat a mélységpufferre vonatkozóan. Élsimítás nélkül 5,5 MB-ot foglal a mélységinformációkat tároló képkocka, továbbá ennek a renderelése 1,1 ms-ig tart, míg az árnyalás 10 ms-ot vesz igénybe. SRAA-val már 22,1 MB-ra nő a mélységpuffer mérete, a rendereléssel kapcsolatos időigény pedig 2,5 ms-ra változik. Mivel a normal buffer esetében nincs korrekció, így az árnyalással kapcsolatos teendők mennyisége nem változik, vagyis marad a 10 ms-os időveszteség. Ezenkívül még ki kell számolni az alkalmazott szűrést is, ami 1,9 ms-ba telik. Összegezve az SRAA-val számolt képkocka 14,4 ms-ba kerül, vagyis 3,3 ms-mal tovább tart a számítás, mintha élsimítás nélkül történne a renderelés. Mindez egy 1280x720 pixeles képkockával történik. Referenciaként előkerült a 16-szoros SSAA vagy felskálázás, ami nyilvánvalóan kiváló képminőséget eredményez, de a mélységpuffer mérete 88,4 MB, a teljes számítás ideje pedig 167 ms lesz. A legnagyobb terhelés a 160 ms alatt végbemenő árnyalásnál következik be, ami érthető, hiszen ezeket az információk a legdrágább megszerezni. Itt az SRAA esetében nincs konkrét informcáió, mivel az NVIDIA algoritmusa a fenti mérések alatt csak a mélységpufferre vonatkozott.


Élsimítás nélkül, SRAA-val és 16x SSAA-val (forrás: Anteru's blog) [+]

A technológia szemléltetésére pár kép szolgál, emellett az elgondolásról mozgásban is készült egy rövid videó, amely innen szerezhető be.

A bemutatón az érintettek beszéltek a jövőről is. Az SRAA és az MLAA nyilvánvalóan nem oldja meg az élsimítással kapcsolatos összes problémát, tehát egyik elgondolás sem tekinthető egyfajta Szent Grálnak, ugyanakkor mindkét elgondolásra lehet építeni a jövőben. Itt a fejlesztőkön múlik minden, mivel általánosan lehetetlen tökéletes megoldást kínálni az élsimítás szempontjából. Az egyetlen lehetséges mód a kép felskálázása, de ez nem Anti-Aliasing. A kutatások tovább folynak ezeken a területeken, és némi információt már elhintettek az előadáson, hogy milyen újításokra lehet számítani. Az elsődleges prioritás az MLAA és az SRAA előnyeinek vegyítése. Az előbbi technológia kiváló hatásfokkal működik árnyalás mellett, de a subpixel értékeket nem vizsgálja, vagyis bizonyos helyzetek mellett rosszul dönt. Itt jöhet képbe az SRAA, ami például felhasználható az MLAA úgymond irányítására, vagyis érdemes kijelölni azokat a részeket a képkockán, ahol feltételezhetően az MLAA nem adna jó eredményt. Gyakorlatilag itt a két technika vegyítéséről lenne szó, hiszen pont ott előnyös az egyik, amiben a másik nem igazán jeleskedik. Ebből rögtön látszik, hogy ezek az algoritmusok nem ellenségek, hiszen tökéletesen kiegészíthetik egymást.

Arról nincs információ, hogy az NVIDIA alkalmazza-e az SRAA-t a driverben. A probléma elsősorban az árnyalással kapcsolatos, hiszen itt az adott program igényeihez kell igazodni. Természetesen a mélységpufferre vonatkozó elgondolás általánosan implementálható, de kérdéses, hogy ez megtörténik-e. A fejlesztők oldaláról már pozitívabb a helyzet. A hibrid élsimító eljárásokhoz jól jön az SRAA, így a jövőben építhetnek rá az érdeklődők.

Azóta történt

Előzmények

Hirdetés