Hirdetés

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

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.

Hirdetés

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.

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

Hirdetés

Azóta történt

Előzmények

Hirdetés