Kell az élsimítás, de mégis melyik?
A számítógépes grafika kezdete óta sok idő eltelt, és ma már igen komoly játékok születnek a grafika minőségét tekintve. Vannak azonban örök problémák, amelyeket legyőzni nem lehet, így maximum azért lehet küzdeni, hogy kevésbé legyen látható a gond. A számítógépes grafika egyik legnagyobb problémájának az aliasing jelenség tekinthető. Ez tulajdonképpen egy mintavételezési hiba. Közérthető definícióval fogalmazva a monitoron előállított kép legkisebb egysége a pixel, de a 3D-s világban létezhet a pixelnél is kisebb elem. A monitor ezt nem tudja kirajzolni (mivel a pixelnél kisebb egység nem jeleníthető meg), így létrejön az aliasing nevű probléma. Persze valójában a monitornak ehhez a gondhoz semmi köze, mivel az aliasing a grafikus processzoron belül jön létre, így a mintavételezési hiba a rendszeren belül keletkezik a raszterizálás során. A monitort csak azért vontuk be a definícióba, hogy könnyebb legyen megérteni, miről is van szó.
Természetesen az előbbi bekezdés nem minden elemében tartalmaz pontos részleteket a problémáról, így szakmailag közelebbi megfogalmazás, hogy az aliasing jelenséget a mintavételezés során az eredeti jel és a mintavételi frekvenciák megfelelő eltolás melletti átlapolódása hozza létre. Egy adott mintavételi frekvencia mellett az eredeti jelből olyan komponensek is láthatók lehetnek, amelyek frekvenciája magasabb, és ezzel létre is jön a probléma. Az élsimításnak (anti-aliasing) tulajdonképpen az a célja, hogy a magasabb frekvenciájú mintavételt igénylő komponenseket kiszűrje. A másik lehetőség a mintavételi frekvencia növelése, ami köznyelven fogalmazva a felbontás növelését jelenti, ameddig csak lehetséges, de így is nagy esély van az aliasing jelenség bekövetkezésére.
A megoldás szempontjából jelen cikkünk az élsimítással foglalkozik. Rögtön leszögezzük, hogy tökéletesen átfogó megoldás az alapproblémára nem létezik, így a különböző eljárások csak az aliasing jelenség minimalizálására törekszenek. Ezt egész hatékonyan végzik, bár mindegyik technológiának van negatív oldala is. Szintén fontos megérteni, hogy a különböző élsimítási eljárások összevethetők egymással, de igazából érdemes ezeket kategorizálni, mivel jellemzően más célból születnek. Vizsgálataink során megpróbáltunk objektív támpontokat kialakítani, és ezzel a különböző kategóriákba sorolt élsimítások jól jellemezhetők, de a képminőségre vonatkozó elemzéseknél a szubjektív benyomások nem zárhatók ki teljesen.
Az élsimítások közül elemezzük az MSAA-t, az SSAA-t, a speciális TXAA-t és a különböző utófeldolgozáson alapuló megoldásokat, mint az MLAA és az FXAA. Ezek pontos működéséről a cikk későbbi részében írunk, ahol azt is boncolgatjuk, hogy merre érdemes elindulni az élsimítást érintő kutatások szempontjából.
Hirdetés
A grafikus driverek beállításai
A PC piacon az AMD, az Intel és az NVIDIA szállít nagy mennyiségben grafikus processzorokat, így a driverek beállításait ennél a három cégnél vizsgáltuk meg. Az Intel esetében relatíve egyszerűen lehet a helyzetet elemezni. Gyakorlatilag a meghajtó semmilyen élsimításra vonatkozó beállítást nem kínál. Az MSAA kényszerítésének hiányán nagyon meglepődtünk, hiszen igen alapvető szolgáltatásról van szó, amit a felhasználók a régi játékokra előszeretettel alkalmaznak, de az Intel úgy gondolja, hogy erre nincs szükség. Nos, az új programokat figyelembe véve alapvetően igazuk van, de számos, évekkel ezelőtt megjelent program nem tartalmaz alapértelmezett beállítást az élsimításra, és ilyenkor jól jöhet a driver tudása.
Az Intel driver beállításai [+]
Az AMD és az NVIDIA már jóval korszerűbb képességeket kínál a grafikus driver oldaláról. Az Intel igazán tanulhatna konkurenseitől, hogyan kell egy hardverhez hasznos funkciókat biztosítani. A vörös és a zöld oldal szolgáltatásai az MSAA-t tekintve nagyrészt lefedik egymást. Mindkét vállalat kínál alapvető mintavételi profilokat, illetve az átlátszó felületekhez is van aktiválható eljárás. Az NVIDIA esetében rögtön kettő, mivel a szabványos megoldás mellett egy úgynevezett transparency (átlátszóság) opció is elérhető. Utóbbi előnye, hogy akkor is működik, ha előbbi nem, de hátránya, hogy nagymértékben csökkenti a sebességet. Szintén aktiválhatók különböző, úgynevezett fedettségmintákkal dolgozó MSAA módok. Az AMD ezt EQAA-nak, míg az NVIDIA CSAA-nak hívja. Mindezek mellett az AMD egy opcionális élkereső (edge detect) szűrőt is kínál, így az MSAA még jobban paraméterezhető, aminek hála a hardver az élekre kétszer több színmintát vételez.
Az NVIDIA GeForce driver beállításai [+]
Az utófeldolgozáson alapuló megoldások szempontjából az NVIDIA az FXAA-t kínálja, míg az AMD az MLAA-t, amit a driverben morfológiai szűrőként lehet aktiválni. Nagyjából ezek ugyanarra valók, csak másképp dolgoznak, alapvetően azokban a programokban érdemes aktiválni őket, ahol nincs semmilyen más mód az élsimításra, de a felhasználó mégis szeretne szebb éleket látni.
Az AMD Catalyst driver beállításai [+]
Végül az AMD kínál egy úgynevezett SSAA módot, ami régóta ismert alternatíva az aliasing jelenség kezelésére, ám használata igen nagy teljesítményvesztést okoz, ugyanakkor gyakorlatilag minden alkalmazással kompatibilis.
A kedvelt MSAA
A különböző élsimítási eljárások között vitathatatlanul az MSAA (multisample anti-aliasing) a legkedveltebb. Bár nem ez nyújtja a legjobb képminőséget, de az erőforrásigényhez viszonyítva rendkívül jó munkát végez. A technika azt vizsgálja, hogy a renderelt háromszög mennyire fedi le az adott pixelt. Ehhez a pixelen belül több mintavételezési pontot használ, majd azokon Z-tesztet hajt végre. Az eljárás előnye, hogy alapvetően a memória-sávszélességtől függ, hiszen az extra adatok a memóriát terhelik, de tulajdonképpen nem számít ki több pixelt, mint amennyire a szükség van.
Sajnos vannak hátrányok is, de igazából nem jelentősek, főleg annak fényében, hogy a legkritikusabb részeken, vagyis a geometriai váz élein az MSAA ragyogó eredményt képes felmutatni. Azért persze meg kell jegyezni, hogy ez az eljárás nem kompatibilis az átlátszó textúrákkal. Erre azonban van egy alternatív technika is, melyet adaptív MSAA-nak szokás hívni, bár ez nem hivatalos név. Tulajdonképpen itt arról van szó, hogy az átlátszó textúrát használó objektumokat többször kell leképezni, így ezeknél is kiszűrhető az aliasing jelenség. Sajnos ennek egy alapvető hátránya, hogy ha az adott jelenetben nagyon sok átlátszó textúrát használó objektum van, akkor a többszöri leképzés igen komoly teljesítményvesztéssel jár.
Az MSAA alapvető gondja, hogy a háromszögeken belül nem szünteti meg az aliasing jelenséget, így az élsimítás a textúrákra nem fog működni. Ezt azonban a legtöbb felhasználó vállalható áldozatnak tartja az MSAA teljesítményét figyelembe véve.
Állandó az a teljesítmény?
Ha már ennyiszer került említésre az MSAA sebessége, akkor érdemes megemlíteni egy nagyon fontos tényezőt is, amitől manapság ez az eljárás komolyan szenved. Alapvetően a teljesítményt befolyásolja, hogy a pixeleken belül hány mintával dolgozik a technika, illetve az adott hardver képességeitől is komolyan függ a tempó. Van azonban egy szempont, ami a fejlesztők szemében az MSAA-t mára értelmetlen technikává minősítette.
Az első MSAA-t támogató hardver a GeForce 3 volt még az ezredforduló idején. Akkor minden grafikus motor valamilyen forward render leképzési módot alkalmazott, ami nagyon illik ahhoz a feldolgozási formához, amit az MSAA használ. Az elmúlt tíz évben azonban a helyzet gyökeresen megváltozott. A grafikus kártyák memória-sávszélessége gyorsabban nőtt, mint számítási kapacitásuk, így a fejlesztők mára átálltak az úgynevezett deferred render leképzési módokra. Ez tulajdonképpen hatékonyabb feldolgozást kínál a rengeteg pontfényforrással dolgozó grafikus motorok esetében. Lényege, hogy a leképzés több fázisban történik. Először csak a geometria lesz kiszámítva, amiből egy mélységpuffert nyer a rendszer. A második fázis újra leképzi a geometriát, de már a shaderekkel és a textúrákkal együtt, viszont csak azok a pixelek lesznek kiírva, amelyeknél a Z érték megegyezik azzal a paraméterrel, amit az előzőleg létrehozott mélységpuffer tárol. A több fázisra osztott feldolgozással az MSAA az ismert formájában nem kompatibilis, így a legtöbb deferred rendert használó játékra nem is erőltethető rá ez az élsimítási eljárás a driverből, illetve jó eséllyel a játékba sincs beépítve.
Szerencsére a grafikus kártyák teljesítményének növelésével az MSAA számos deferred rendert alkalmazó játékban újra elérhetővé vált, de mondhatni igen speciális formában, biztosítva a kompatibilitást a speciális feldolgozáshoz. Ilyenkor az MSAA sebessége már közel sem olyan hízelgő, mint egy forward render leképzési mód mellett, továbbá memóriaigénye is a sokszorosára nő.
Az MSAA sebességéről tehát nem lehet manapság túl általános képet kialakítani. A mai modern motort használó játékok között a DiRT Showdown kifejezetten kedvező eredményeket mutat fel, így relatíve nem kell túl nagy teljesítményvesztésre számítani. A Battlefield 3 képezheti a másik végletet, ahol a fejlesztők nem is építették be a nyolcmintás MSAA-t, mert pokolian nagy sebességvesztést okozna. Az alapvető különbség a két játék között, hogy az előbbi forward (forward+ lighting), míg az utóbb deferred (tile-based deferred acceleration) rendert használ. A sebességvesztés természetesen függ a hardvertől, de arányaiban igen nagy a kontraszt, hiszen amíg a DiRT Showdownban a négyszeres MSAA bekapcsolása csak 10-15%-kal csökkenti a sebességet, addig a Battlefield 3-ban az élsimítás nélküli teljesítmény 40-60%-a elvész.
A deferred render leképzési módokhoz az AMD már kidolgozott egy olyan MSAA eljárást, ami compute shaderrel van gyorsítva, de ez alapvetően egy félmegoldás, mivel a rendszer csak annyit tesz, hogy egy előzetes, DirectCompute lépcsőn futó teszt alapján kijelöli azokat a részeket a képkockán, amelyek minőségét nagyban befolyásolhatja az MSAA, és a technika lényegében csak a kijelölt területekre lesz lefuttatva. Tulajdonképpen itt a fejlesztők egy apróbb kompromisszumot köthetnek a minőség rovására, hogy sebességet nyerjenek, de túlzottan nagy tempóelőnyre nem lehet számítani, mivel a compute shaderben írt effektnek is van erőforrásigénye, így az alapvető problémát ez a megoldás nem fogja megoldani. Mindenesetre a Hitman: Absolution és a Far Cry 3 ezt az MSAA technikát használja.
Az MSAA a gyakorlatban
Az elméleti alapok után a Catalyst és GeForce driverekben elérhető opciókat próbáltuk ki a gyakorlatban. A képminőség tökéletes összehasonlítása érdekében a 3DMark 03-as tesztprogramot vettük elő. Elsősorban azért, mert ebben a tesztben még nincs túl sok elnagyolt, utófeldolgozásra kihegyezett effekt, így sokkal jobban lehet látni a különbségeket. Az elején megjegyezzük, hogy a Radeon és a GeForce képminősége helyenként enyhén különbözik, amit az alábbi két kép kijelölt részei mutatnak.
A GeForce és a Radeon képminőségbeli különbségei [+]
A fán a GeForce a mélységtesztnél rosszul állapította meg a levél és a faág helyzetét, így igen furcsa lett az összhatás. A kis patak mellett a sziklák formájában van egy kis eltérés, ami szintén a mélységtesztre vezethető vissza, továbbá érdekes, hogy a kijelölt apróbb árnyék a Radeonon és a GeForce-on különbözik. Igazából nehezen tudjuk eldönteni, hogy melyik a helyes. Valószínűnek tartjuk, hogy a GeForce driverben az FX-es időkből még mindig maradtak apróbb specifikus optimalizációk erre a tesztprogramra, mivel a Futuremark csak a 3DMark 05-től vezette be a grafikus driverek képminőségének ellenőrzését.
Az alapvető MSAA mintavételi szintek szempontjából nincs lényegi különbség a GeForce és a Radeon között. Persze erre számítani lehetett, hiszen tulajdonképpen szabványos technikáról van szó, így alapvetően mindkét cég megoldása közel megegyező minőséget produkál.
Az EQAA és a CSAA-ra rátérve már bonyolultabb az összehasonlítás. Az NVIDIA és az AMD máshogy definiálja az előre paraméterezett beállításokat. Éppen ezért direkten ezek nem összehasonlíthatók, de nagyjából ugyanazokat a funkciókat látják el. Hogy megfelelő képet kapjunk a minőségi szintről, egy táblázat formájában összesítettük, hogy az egyes opciók mennyi szín- és fedettségmintával dolgoznak. A táblázat az elméleti adatok alapján állítja fel a minőséget, így lefelé haladva egyre jobb az MSAA által biztosított kép.
GeForce CSAA (szín/fedettség) | Radeon EQAA (szín/fedettség) |
- | 2x EQAA (2/2) |
- | 4x EQAA (4/4) |
8x CSAA (4/8) | - |
16x CSAA (4/16) | - |
- | 8x EQAA (8/8) |
16xQ CSAA (8/16) | - |
- | 12xEdge EQAA (6 és 12/12) |
32x CSAA (16/16) | - |
- | 24xEdge EQAA (12 és 24/24) |
Az AMD edge detect szűrőjéről is készítettünk képeket, így ennek a működése is látható a gyakorlatban.
Radeon 12x és 24x edge detect MSAA [+]
Az átlátszó textúrákkal rendelkező objektumok szempontjából a mai játékok gyakorlatilag nem kompatibilisek a driverekkel, így ezek az opciók kényszerített módban lassan okafogyottá válnak. Az alapvető működés itt is egyezik GeForce- és Radeon-oldalon, így a minőség is egyezni fog. Hogy konkrétan miről is van szó, azt az alábbi két kép mutatja, de ez az opció már a programból van aktiválva.
Az átlátszó textúrák élsimítása [+]
Mentőöv lehet, hogy a GeForce drivere tartalmaz egy TrSSAA módot, ami a képminőséget tekintve közel azonos eredményt kínál, mint az alapvető adaptív MSAA, de olyan programokkal is kompatibilis, amelyek az utóbbi technikát nem támogatják. Ezért cserébe persze jelentős a teljesítményvesztés, hiszen tulajdonképpen az eljárás nem az objektumok többszöri leképzésével, hanem az objektumot lefedő pixelek többszörös kiszámolásával oldja meg a problémát. Természetesen minden pixel el lesz tolva eredeti pozíciójához képest, hogy megfelelő mintához jusson a grafikus processzor a számítások szempontjából.
Az FXAA és az MLAA lenne a nyerő?
Az MSAA világától eltávolodva igen érdekes élsimítási eljárásnak számítanak a post-process, avagy utófeldolgozáson alapuló szűrők. Az alapkoncepció minden esetben nagyon egyszerű. Olyan élsimítást alkotni, amely csak a végső képkocka alapján próbálja kevésbé láthatóvá tenni az aliasing jelenséget. Az NVIDIA és az AMD a driverben eltérő megoldást kínál erre, így előbbi cég az FXAA-ra, míg utóbbi az MLAA-ra szavaz.
Az FXAA működése
Az FXAA (fast approximate anti-aliasing) a működést figyelembe véve lényegében egy morfológiai szűrőnek tekinthető. Az NVIDIA elsősorban az élek kisimítását tartja a legfontosabbnak, így az algoritmus alapvetően ezen a ponton mutat fel jó eredményeket. A kiindulópontot a kész képkocka jelenti, biztosítva a programokkal való maximális kompatibilitást. A következő fázisban a képen egy speciális shader fut le, mely a helyi kontrasztkülönbségek alapján megjelöli az éleket. Ezen a ponton számos pixelről kiderül, hogy nem tartozik egy élhez sem, vagyis nem kell további számítást végezni rajtuk.
A következő lépcső az élek pozícióját megjelölni. Itt két formát különböztetnek meg, azaz az él lehet vízszintes vagy függőleges állapotban. Ezek orientációját figyelembe véve ki kell választani rajtuk a legmagasabb kontraszttal rendelkező képpontpárokat, melyek merőlegesek az adott élre. Ezzel az élekhez pár végpont lesz rendelve, melyen az élsimítás megtörténik. Az algoritmus az egyes végpontok között keresi a legnagyobb különbséget az átlagos fényerősséget figyelembe véve.
A kiválasztott pixelek szubpixel adatai alapján keletkezik egy, a képkockára levetíthető információs térkép, ahol az egyes képpontok között meg vannak különböztetve a vízszintes és a függőleges élről származóak. Ezután új mintákat kell venni az eredeti képkocka azon részeiről, amelyek az algoritmus szerint változni fognak, beleértve a kiemelt képpontok környezetének szubpixel adatait. A végső fázisban az egyes területeket össze kell mosni, és ez az élek elsimítását eredményezi.
Az MLAA működése
Az MLAA (morphological anti-aliasing) szintén egy morfológiai szűrő, ami lényegében olyan szomszédos pixeleket keres, ahol nagy az eltérés a színinformációkban. A kiválasztott képpontokat csoportosítja, majd egy előre definiált alakzatot rendel hozzájuk. A lényegi munka itt kezdődik meg. A környező pixelek adatai alapján az algoritmus korrigálja a vizsgált alakzathoz tartozó pixelek színét, annak megfelelően, hogy a szomszédos képpontok mennyire eltérőek. Az algoritmus nagymértékben skálázható, hiszen a számításba vett pixelek száma tetszőlegesen állítható be. Emellett az AMD által alkalmazott úgymond 2.0-s algoritmus eltolja a mintavétel eredeti pozícióját, hogy az jobban illeszkedjen a szubpixel-pozícióra.
Az FXAA és az MLAA különbségei
Bár a két eljárás a koncepció tekintetében megegyezik, azért elmondható, hogy eltérő előnyökkel és hátrányokkal rendelkeznek. Mindkét technika esetében probléma, hogy nem kezelik kedvezően a képkockán megjelenő feliratokat. Ez az elvi működésből ered, hiszen egyik algoritmus sem tudja megállapítani, hogy azok valójában betűk és számok, így jobb lenne békén hagyni őket. Emellett problémát jelent, hogy egyik algoritmus sem mondható temporálisan stabilnak. Sajnos ez csak mozgóképeken látható jelenség, de alapvetően arról van szó, hogy az egymás után következő képkockákon apróbb pixelszintű zavarok fordulnak elő. Ez a legújabb implementációkkal már nagyon jól szűrve van, de azért ha nagyon odafigyel a felhasználó, akkor időnként észre lehet venni a problémákat. Persze ha egy jelentséget keresni kell a mozgóképen, és alapvetően nem tűnik fel, akkor az már egy elfogadható működést feltételez, de mivel a cikkünk igyekszik minden részletre kitérni, így erre mindenképp fel akartuk hívni a figyelmet.
A különbségek szempontjából az MLAA a közel vízszintes és függőleges éleken nem végez valami jó munkát, mivel nem tud rájuk mintát megfeleltetni. Az FXAA ebből a szempontból jól dolgozik, de a 45 fokhoz közeli éleket már nem szereti, mivel ezek orientációját ugyan el lehet dönteni, de a mintavételnél túl nagy lesz a kiválasztott pixelek vízszintes vagy függőleges eltolása. Érvek és ellenérvek tehát vannak bőven, ami viszont az FXAA és az MLAA számlájára írható, az a rendkívül alacsony erőforrásigény, így az eljárások bekapcsolása rendkívül minimális sebességvesztést okoz csupán.
A gyakorlatban az alábbi két kép mutatja, hogy az FXAA és az MLAA milyen munkát végez.
Az FXAA és az MLAA különbségei [+]
Érdemes megjegyezni, hogy az FXAA esetében a GeForce driverbe a legújabb, 3.11-es implementáció került, míg az AMD az MLAA 2.0-s verzióját használja. Előbbi egyelőre nem fog fejlődni, mivel az NVIDIA több hónapja jegeli a projektet. Az AMD jelenleg elégedett az MLAA aktuális verziójával, de nem zárták ki, hogy később javítanak rajta. Szintén fontos információ, hogy a fenti képek csak a driverbe épített megoldásokra igazak, de a játékokba már máshogy is lehet implementálni a technikákat. Például jellemző, hogy a fejlesztők a feliratok helyét szándékosan kihagyják, így azok nem jelennek meg elmosódva, emellett számos optimalizálást alkalmaznak a jobb képminőség érdekében. Éppen ezért a játékokban akár teljesen más minőséget is mutathatnak ezek a post-process szűrők.
SSAA és TXAA, csúcstechnika vagy filmszerű élmény
A legjobb élsimítási eljárásnak még ma is az SSAA (supersample anti-aliasing) tekinthető. Ez a technika minden egyes pixelt többször számol ki, de az eredeti pixelpozícióhoz képest mindig egy kicsit eltolva, majd összemossa a képet. A megoldás amolyan "mindent erőből" elvet alkalmaz, így teljesítményigénye óriási, de képminősége is félelmetesen jó. Az AMD a driverben kétszeres, négyszeres és nyolcszoros mintavételt kínál, ráadásul a szintekhez automatikusan hozzárendelt negatív LOD eltolással, mely rendre -0,5-ös, -1-es és -1,5-ös paramétert használ. Ilyenkor tulajdonképpen az történik, hogy a távolabbi textúrák és objektumok később váltanak LOD szintet, vagyis távolodva tőlük később lesznek minőségileg lebutítva.
A képeken látható, hogy a minőség valóban elképesztő, de gyakorlatilag brutálisan erős Radeon szükséges hozzájuk, illetve tényleg értelmet nyernek a CrossFireX konfigurációk is. Mindenestre a régebbi játékokban, amelyek kevésbé igénylik a kraftot, jó szolgálatot tehet az SSAA.
Sajnos a LOD negatív eltolása a driverben fixált paraméter, így ezt a felhasználó nem állíthatja át, de az AMD-től szert tettünk egy speciális állományra, amiből hiányzik az SSAA úgynevezett AutoLOD funkciója, így nyolcszoros mintavétel mellett megnéztük 0-s és -1,5-es LOD-dal a különbségeket. Természetesen nem kérdés, hogy utóbbi számottevően jobb eredményt kínál, de mégis jobb erről a gyakorlatban meggyőződni.
8x SSAA AutoLOD nélkül és AutoLOD-dal [+]
Érdemes megjegyezni, hogy pár játék, mint a Sniper Elite V2, a Sleeping Dogs és a Tomb Raider már beépített SSAA-val érkezik, ami természetesen örömteli hír, hiszen a driveres implementációk jellemzően lassabbak, mint a programba építettek.
A GeForce exkluzív TXAA eljárása
A gyári támogatás szempontjából az NVIDIA új üdvöskéjére, azaz a TXAA-ra helyezi manapság a hangsúlyt, amit a Kepler architektúrára épülő termékek támogatnak. Ez egy temporális mintavételezéssel dolgozó, alapvetően MSAA-ra épülő algoritmus, ami az egyes képkockáknál máshonnan mintavételez. A GeForce driverben ez az opció külön nem jelenik meg, mivel direkten kell beépíteni a támogatást az adott játékba. Egyelőre a The Secret World, az Assassin’s Creed 3, a MechWarrior Online, az Eve Online, a Borderlands 2, a Call of Duty: Black Ops 2 és a Crysis 3 támogatja.
Mi az NVIDIA javaslatára az Assassin’s Creed 3-ban néztük meg, és több képet is készítettünk a működésről, amelyeket alább lehet megtekinteni.
Az Assassin’s Creed 3 TXAA nélkül [+]
Az Assassin’s Creed 3 TXAA-val [+]
Látható, hogy az állóképeken a TXAA gyengéje kijön, vagyis kifejezetten durván elmossa a textúrákat, ami a különböző extra szűréseknek tudható be. A TXAA előnyét azonban pont ezek a szűrők adják, csak ez az állóképeken nem látszik. A kép elmosása tehát ebből a szempontból koncepció, és nem hiba. Ez ugyanis a shimmering jelentős redukálásához szükséges, mely a magas minőségű textúrák esetében egyfajta rezgést okoz a texeleken, ami mozgás közben illúzióromboló. Az alábbi videó ezt kifejezetten jól szemlélteti, és tényleg ennek tudatában érdemes megítélni a TXAA-t.
Az NVIDIA erre azért hivatkozik filmszerű élményként, mert a számítógéppel renderelt filmrészletek is egy TXAA-hoz hasonló élsimítást kapnak, így biztosítva a shimmering jelenség eltüntetését.
A sebesség szempontjából az Assassin’s Creed 3 nem kedvezett nekünk, mivel a Core 2 Quad Q9550-es processzorral és GeForce GTX 670-es VGA-val dolgozó tesztgépen finoman szólva is gyenge sebességet kaptunk. Jobban mondva állandó processzorlimitbe ütköztünk, így hiába állítottuk a TXAA-t maximumra, a program futtatásának sebessége nem változott meg. Ez betudható annak, hogy az Assassin’s Creed 3 egy kifejezetten rosszul optimalizált PC-s játék, főleg a processzormagok kihasználásának szempontjából, így a sebességméréshez inkább elővettük a Call of Duty: Black Ops 2-t, mely játékban szintén elérhető a TXAA. Az élsimítás nélküli teljesítményhez képest a kétmintás TXAA 13%-os, míg a négymintás 19%-os teljesítményvesztést okozott az előbb említett tesztgépen. Ennek megfelelően a TXAA sebessége kifejezetten vállalható.
Hova tovább? Melyik élsimítás lehet a legjobb?
Hosszúra nyúlt cikkünkben viszonylag sok élsimítási eljárást végigvettünk. Igazából általánosan egyértelműen azt tudjuk mondani, hogy a legjobb minőséget az SSAA kínálja, na de tudjuk, milyen áron... Az összkép azonban sokkal árnyaltabb, mivel meg kell érteni az adott eljárások mögötti koncepciót. Ebből a szempontból mindegyik opciónak megvan a maga területe, és azt kell, hogy mondjuk: tökéletesen kiegészítik egymást.
Ami viszont érdekes kérdés lehet, hogy a jövő mit hoz. Több fejlesztő egyetért abban, hogy a 16x-os MSAA már nagyon jó minőséget produkál, és a DirectX 11.1 már meg is követeli ennek a módnak a támogatását az adott hardvertől, de egyelőre csak a Direct2D felületen. Természetesen ez később Direct3D-re is kiterjeszthető, de nem biztos, hogy ez a jó út. Főleg annak tudatában, hogy viszonylag kevés figyelmet szentelnek a fejlesztők az analitikai élsimításnak, ami viszont nem egy elvetendő technika. Ilyet a Metro 2033 használ, és ahhoz képest, hogy kevés kutatás zajlik ezen a területen, kifejezetten jó az eredmény.
Az analitikai élsimításokat nehéz meghatározni, de tulajdonképpen olyan, programozott megoldásokról beszélünk, amelyek speciálisan bizonyos problémákra keresnek megoldást. Alapvetően ide sorolható Emil Persson SDAA (second-depth anti-aliasing), GBAA (geometry buffer anti-aliasing) és GPAA (geometric post process anti-aliasing) eljárása, illetve a Phone-wire AA. Mindenképp érdemes esélyt adni ennek a területnek, így örömmel látnánk több kutatást a témában, mivel a teljesítményigény és a minőség szempontjából az eddigi implementációk nagyon biztatók.
Valószínűnek tartjuk, hogy az élsimítás jövője az egyénileg paraméterezett megoldásoké. A különböző opciókat érdemes keverni a post-process technikákkal, aminek az eredménye egy igen komplex, de az aliasing jelenséget nagymértékben lefedő technika lehet. A friss hardverek ereje lassan elég lesz ahhoz, hogy három vagy négy különböző élsimítási eljárást alkalmazzanak a játékok egyszerre, amelyek tökéletesen kiegészíthetik egymást. Ebből a szempontból a Sleeping Dogs úttörőnek számít, mivel legjobb minőség mellett egyszerre használ FXAA, MLAA és SSAA eljárást.
A cikkben szereplő képek jó minőségű, tömörítetlen formátumban letölthetők az alábbi linkről.
Abu85