Hirdetés

Hamarosan debütál az NVIDIA FXAA

Érdekes és sokak számára örömteli információhoz jutottunk az NVIDIA jóvoltából. A vállalat gőzerővel dolgozik az élsimítást érintő általános problémák megoldásán. Hiszen egyre több olyan játék jelenik meg, melyben nem aktiválható a driverbe épített MSAA eljárás, így a felhasználó kénytelen a fűrészfogas vagy recés éleket bámulni, ami bizony nem kellemes. Korábban már beszámoltunk a zöldek SRAA megvalósításáról, mely elsősorban a fejlesztőknek készült, de szükség van egy általánosan alkalmazható megoldásra, hiszen nem sok PC-s játék esetében dolgoznak az élsimítás megfelelő támogatásán.

Az alapprobléma, hogy az eddig kiválóan működő multisampling élsimítás már messze nem hatékony. A manapság alkalmazott renderelő motorok olyan eljárásokkal dolgoznak, ahova már a fejlesztői kontroll szükséges a technika megfelelő alkalmazásához, ezt azonban sokan inkább kihagyják, aminek többnyire az az eredménye, hogy a játék nem tartalmaz élsimító algoritmust. Az AMD az év elején tette globálisan elérhetővé az MLAA-t a Catalyst meghajtókban, mely minden DirectX 11-es Radeonon működik Windows 7 vagy Vista operációs rendszer mellett. A vörös oldal morfológiai szűrőjének működéséről egy korábbi hírben számoltunk be, így most eltekintenénk az eljárás részletezéséről, és elsősorban az NVIDIA hasonló elveket alkalmazó megoldására koncentrálnánk.

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 forma van megkülönböztetve, 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éppont párokat, melyek merőlegesek az adott élre. Ezzel az élekhez pár végpont lett 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ég között.


[+]

A kiválasztott pixelek subpixel 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 subpixel adatait. A végső fázisban az egyes területeket össze kell mosni, és ez az élek elsimítását eredményezi.

Az NVIDIA FXAA előnye az AMD MLAA-jával szemben, hogy kiemelten koncentrál az élekre, azaz jobb eredményre képes a képkocka e területein, emellett kiemelten jól bánik a közel vízszintes és függőleges élekkel, ahol a konkurens megoldás nem igazán végez jó munkát. Hátrányos azonban az FXAA működése a 45 fokhoz közeli éleknél, 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. Az FXAA másik problémája, hogy a képkockák között keletkező, úgynevezett temporális zavar a kevés mintavétel miatt zavaróbb lehet, mint az MLAA esetében, bár igaz, hogy ennek a mértéke kisebb területre hathat ki. Ezen a ponton sok függ az adott képkockától, ám általánosan elmondható, hogy jelenleg egyik morfológiai szűrő sem kezeli jól a pixelek zavarosságát, így mindkét vállalatnak törekednie kell az algoritmus finomításán. Persze fontos megjegyezni, hogy az AMD és az NVIDIA keze egy driverben alkalmazott élsimítás esetében meg van kötve, hiszen a nagyfokú kompatibilitás miatt ügyelni kell arra, hogy az élsimításhoz szükséges adatok a végső képkockáról származzanak, vagyis semmilyen extra információ nem áll rendelkezésre a temporális zavarok megszüntetéséhez.

Érdemes azt is figyelembe venni, hogy a driverbe épített FXAA (és lényegében a Catalyst MLAA-ja is) egy nagymértékben lebutított algoritmus. Az NVIDIA és az AMD sokkal több lehetőséget ad a konfigurálásra, amennyiben az adott megvalósítást a motorba implementálják az érdeklődő fejlesztők, így könnyen kivédhetők a gyenge pontok. A meghajtóprogramban alkalmazott technikákról általánosan elmondható, hogy nem adnak tökéletes eredményt, ennek hatására mindkét vállalat azt javasolja a programozóknak, hogy építsenek saját élsimítást az adott motorba, mivel azt az alkalmazott renderhez lehet igazítani.

Az NVIDIA jelenleg még teszteli az FXAA működését. A nemrég kiadott 275.27-es béta driverben már elérhető az OpenGL-es programokhoz igazított megvalósítás, de még nincs engedélyezve a kalibrálása. A funkció mindenesetre aktiválható az NVIDIA Inspector legújabb verziójával, ahol a driver alapprofilját kiválasztva, pár sorral lentebb felfedezhető a Toogle FXAA on or off paraméter. Értelemszerűen a 0x00000001-es beállítás kapcsolja be az effektet. A vállalatnál érdeklődtünk a végleges implementációról, de a szóvivő nem tudott pontos dátumot adni a bevezetéssel kapcsolatban. Elmondása szerint az FXAA jelenleg tesztelési fázisban van, továbbá a rendszerprogramozók dolgoznak a DirectX-es programokhoz írt megoldáson, ami természetesen később implementálásra is kerül. Az FXAA egyébként shader modell 3.0-ban van írva, de tesztelve csak a DirectX 10-es és 11-es GeForce-okra lesz. Mindenesetre van esély arra, hogy működik majd a GeForce 6 és 7 kártyák mellett is, de érdemes felkészülni a komolyabb teljesítményvesztésre, mivel a régebbi chipek képességeit egyáltalán nem a teljesen post-process számítások erőforrásigényéhez igazították.

Azóta történt

Előzmények

Hirdetés