[ProHardver] Régóta ismert probléma, hogy az eddig kiválóan működő multisampling élsimítás már nem felel meg a kor követelményeinek. Bár kétségtelen, hogy kifejezetten jó a képminőséghez mért erőforrásigénye, 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 majd élsimító algoritmust. Ilyenkor az AMD és az NVIDIA a driverben keres valamilyen utat az MSAA aktiválására, ez azonban messze nem egyszerű feladat, mivel a renderkódot nem tudják befolyásolni, így a kényszerítés sokszor csak részlegesen, vagy rosszabb esetében egyáltalán nem ad értékelhető eredményt.
Az AMD a fenti problémák miatt dolgozta ki az MLAA-t, vagyis a morfologikus élsimítást. A közhiedelemmel ellentétben az algoritmus alapjait nem az AMD fektette le, ők csak továbbgondolták azokat, és előálltak egy DirectCompute felületre alapozó megvalósítással. Az MLAA előnye régóta ismert. A technika minden felülettel kompatibilis, vagyis nem csak a poligonok éleit szűri, hanem képes a textúrák, az átlátszó felületek, illetve a shaderek recés torzulásait is javítani. Mivel a teljes megvalósítás post-process effekt formájában működik, a végleges képkockán fut le, ami azt eredményezi, hogy minden renderelőn ugyanúgy fog működni. Kétségtelen, hogy az MLAA nem az élsimító technológiák Szent Grálja, de az MSAA egyre több hibát generál, a mai deferred render motorokkal, és ennek kivédésére csak a supersampling megvalósítás jelentett megoldást, de az olyan túlzott erőforrásigényt követel, hogy lényegi haszna csak a csúcskategóriás termékeken van.
A morfologikus szűrés gyakorlatilag csak a számítási teljesítményre érzékeny, de az algoritmus elképesztően jól párhuzamosítható, vagyis az 1-2 TFLOPS-os kapacitással rendelkező GPU-k már megbirkóznak vele. A technológia 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, ugyanakkor problémák is előfordulnak. A vízszintes és függőleges állapothoz közeli vonalakra egyetlen minta sem alkalmazható tökéletesen, ami azt eredményezi, hogy ezek az élek nem lesznek kifogástalanul szűrve. Itt jön az a pont, ahol mindenképpen szükséges az MSAA vagy az SSAA alkalmazása. Szerencsére az MLAA post-process szűrő, így tökéletesen kompatibilis minden más képminőség-javító technológiával.
Dead Space AA nélkül és MLAA-val
A morfologikus szűrés gyakorlatilag csak a számítási teljesítményre érzékeny, de az algoritmus elképesztően jól párhuzamosítható, vagyis az 1-2 TFLOPS-os kapacitással rendelkező GPU-k már megbirkóznak vele. A technológia 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, ugyanakkor problémák is előfordulnak. A vízszintes és függőleges állapothoz közeli vonalakra egyetlen minta sem alkalmazható tökéletesen, ami azt eredményezi, hogy ezek az élek nem lesznek kifogástalanul szűrve. Itt jön az a pont, ahol mindenképpen szükséges az MSAA vagy az SSAA alkalmazása. Szerencsére az MLAA post-process szűrő, így tökéletesen kompatibilis minden más képminőség-javító technológiával.
Az NVIDIA egyelőre az MSAA és az SSAA alkalmazhatóságáért küzd, de nem kérdéses, hogy szükséges egy újszerű megvalósítás bevezetése. Az MLAA, ahogy fentebb kiderült egy értékelhető opció, de nem biztos, hogy a GeForce-ra történő implementálás hatékony lenne. Mivel az algoritmus csak a nyers számítási teljesítményre érzékeny a Radeonok komoly előnyben vannak itt, hiszen a legerősebb fermis GPU 1,58 TFLOPS-os teljesítményre képes, szemben a Cayman 2,7 TFLOPS-os tempójával. Ebből rögtön lehet látni, hogy ugyanaz a kód – a jól párhuzamosítható jellegből adódóan – a hasonló árú GeForce termékeken nem lenne túl gyors, vagyis az MLAA alkalmazása nem célszerű, és lényegében ezért nem lett eddig bevezetve. Van azonban más megoldás is, mint például a Subpixel Reconstruction Anti-Aliasing.
A subpixel alapú élsimítás alapjai szintén nem mondhatók újnak, mivel az Apple is ezt alkalmazza a termékein. Természetesen az NVIDIA csak az alapokat használta fel, így az eredmény eltérő is lehet, sőt annak kell lennie, hiszen a cél a 3D-s játékokon való alkalmazás. A monitoron megjelenő pixelre úgy gondolunk, hogy az a legkisebb megjeleníthető elem. Alapvetően ez igaz is, meg nem is. A szemünk valóban a pixelt látja a legkisebbnek, de valójában egy képpont három úgynevezett subpixelből áll (RGB). Ezek a vörös (Red), a zöld (Green) és a kék (Blue) árnyalatok, és lényegében a végső pixel színe is innen származik. Amennyiben az árnyalatok közül csak egyet is megváltoztatunk, úgy a képpont végső színe is módosul. Az SRAA gyakorlatilag itt próbál eredményt elérni.
Az NVIDIA algoritmusa az előzetes adatok szerint kifejezetten a deferred render motorokhoz alkalmazkodik, és alapvetően mélységpufferre építkezik. Pontos leírás még nem látott napvilágot, de a mintavételezést itt lehet végrehajtani, majd a kinyert adatokat felhasználva egy nagyfelbontású mélységpuffert kell létrehozni. A minőség itt skálázható lesz, mivel pixelenként több mintát is ki lehet nyerni. Természetesen a több adat nagyobb teljesítményveszteséggel jár, de az eredmény is jobb lesz. A deferred rendering fázisainál az összemosás a szokott módon megy végbe, de a képminőség összességében jobb lesz, mivel a mélységpuffer a szükségesnél több információt tartalmaz, vagyis ezeket fel lehet használni a subpixelek színinformációinak korrigálására, azaz az élsimításra. Ezt szintén el lehet játszani a normal buffer esetében, ami még tovább javítja az eredményt. Utóbbi esetben valószínűleg az alkalmazásprofilokkal testre is lehet szabni a megvalósítást. Az eljárás a teljesítményigény tekintetében teljesen kötött, mivel pixelenként ugyanaz a számítás fut le. Az előzetes adatok szerint 720p-s felbontásban a készülő algoritmus 1,8 ms-os időigénnyel rendelkezett, ami jónak mondható, bár a minőségről nem nyilatkoztak a fejlesztők. Lényegében az eredmény a minták számával befolyásolható, vagyis az SRAA az igények szerint skálázható.
A Subpixel Reconstruction Anti-Aliasing algoritmusról február végén beszél bővebben az NVIDIA. Természetesen az elméleti alapok lefektetése mellett gyakorlati implementációra is szükség van, vagyis meg kell várni, míg elkészül a driveres implementálás, mely bármely GPGPU platformon alkalmazható. Hogy ez mikorra lehetséges, arról nincs információ.
Érdemes megjegyezni, hogy a subpixel alapú megvalósítások általános hátrányokkal is küzdenek. Elsősorban fontos tényező a monitor képpontjainak geometriája. Ebből a szempontból nagyon sok eltérő megvalósítás létezik. Valószínűleg az LCD panelek élveznek prioritást, ám ezen belül is léteznek RGB és BGR kialakítású panelek, ahol az egyes pixelekhez tartozó subpixelek ugyan megegyeznek, de a lineáris sorrendjük más. Gyakorlatilag számítani kell arra, hogy az eredmény monitoronként változó lesz, mivel a subpixelek geometriai elhelyezkedését és sorrendjét a driver képtelen ellenőrizni, vagyis az adott algoritmus, csak egy bizonyos előre kiválasztott paneltípuson lesz tökéletes. Érdemes lesz tehát több paneltípusra is elkészíteni az SRAA-t, majd egy adatbázis alapján alkalmazni a legjobb eredményt nyújtó megoldást.
Practical Morphological Anti-Aliasing (UZ MLAA)
A subpixel alapú élsimítás alapjai szintén nem mondhatók újnak, mivel az Apple is ezt alkalmazza a termékein. Természetesen az NVIDIA csak az alapokat használta fel, így az eredmény eltérő is lehet, sőt annak kell lennie, hiszen a cél a 3D-s játékokon való alkalmazás. A monitoron megjelenő pixelre úgy gondolunk, hogy az a legkisebb megjeleníthető elem. Alapvetően ez igaz is, meg nem is. A szemünk valóban a pixelt látja a legkisebbnek, de valójában egy képpont három úgynevezett subpixelből áll (RGB). Ezek a vörös (Red), a zöld (Green) és a kék (Blue) árnyalatok, és lényegében a végső pixel színe is innen származik. Amennyiben az árnyalatok közül csak egyet is megváltoztatunk, úgy a képpont végső színe is módosul. Az SRAA gyakorlatilag itt próbál eredményt elérni.
Az NVIDIA algoritmusa az előzetes adatok szerint kifejezetten a deferred render motorokhoz alkalmazkodik, és alapvetően mélységpufferre építkezik. Pontos leírás még nem látott napvilágot, de a mintavételezést itt lehet végrehajtani, majd a kinyert adatokat felhasználva egy nagyfelbontású mélységpuffert kell létrehozni. A minőség itt skálázható lesz, mivel pixelenként több mintát is ki lehet nyerni. Természetesen a több adat nagyobb teljesítményveszteséggel jár, de az eredmény is jobb lesz. A deferred rendering fázisainál az összemosás a szokott módon megy végbe, de a képminőség összességében jobb lesz, mivel a mélységpuffer a szükségesnél több információt tartalmaz, vagyis ezeket fel lehet használni a subpixelek színinformációinak korrigálására, azaz az élsimításra. Ezt szintén el lehet játszani a normal buffer esetében, ami még tovább javítja az eredményt. Utóbbi esetben valószínűleg az alkalmazásprofilokkal testre is lehet szabni a megvalósítást. Az eljárás a teljesítményigény tekintetében teljesen kötött, mivel pixelenként ugyanaz a számítás fut le. Az előzetes adatok szerint 720p-s felbontásban a készülő algoritmus 1,8 ms-os időigénnyel rendelkezett, ami jónak mondható, bár a minőségről nem nyilatkoztak a fejlesztők. Lényegében az eredmény a minták számával befolyásolható, vagyis az SRAA az igények szerint skálázható.
A Subpixel Reconstruction Anti-Aliasing algoritmusról február végén beszél bővebben az NVIDIA. Természetesen az elméleti alapok lefektetése mellett gyakorlati implementációra is szükség van, vagyis meg kell várni, míg elkészül a driveres implementálás, mely bármely GPGPU platformon alkalmazható. Hogy ez mikorra lehetséges, arról nincs információ.
A pixelek geometriája eltérő paneleken
Érdemes megjegyezni, hogy a subpixel alapú megvalósítások általános hátrányokkal is küzdenek. Elsősorban fontos tényező a monitor képpontjainak geometriája. Ebből a szempontból nagyon sok eltérő megvalósítás létezik. Valószínűleg az LCD panelek élveznek prioritást, ám ezen belül is léteznek RGB és BGR kialakítású panelek, ahol az egyes pixelekhez tartozó subpixelek ugyan megegyeznek, de a lineáris sorrendjük más. Gyakorlatilag számítani kell arra, hogy az eredmény monitoronként változó lesz, mivel a subpixelek geometriai elhelyezkedését és sorrendjét a driver képtelen ellenőrizni, vagyis az adott algoritmus, csak egy bizonyos előre kiválasztott paneltípuson lesz tökéletes. Érdemes lesz tehát több paneltípusra is elkészíteni az SRAA-t, majd egy adatbázis alapján alkalmazni a legjobb eredményt nyújtó megoldást.
Abu85 | 2011-01-31 10:55
0 megjegyzés :
Megjegyzés küldése