Minden, amit az élsimításról tudni kell

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

FXAA
FXAA [+]

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

MLAA
MLAA [+]

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 Az FXAA és az MLAA különbségei
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.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés