Anti-aliasointianalyysi, Osa I: Asetuksia ja yllätyksiä

Artikkelin kirjoittaja: Panu Roivas | 1 kommentti

Tekstuurien läpinäkyvyys: Nvidian TAAA ja AMD:n Adaptive Anti-Aliasing.



MSAA kuulostaa ideaaliselta tasapainolta suorituskyvyn ja kuvanlaadun välillä. Ja suurimmaksi osaksi se tekeekin loistavaa työtä. Se ei kuitenkaan korjaa kaikkia aliasointiongelmia, kuten läpinäkyviä tekstuureja.

PC-peleissä suurin osa objekteista joita näet on tehty kolmiulotteisten verkkojen avulla. Nämä verkot koostuvat kolmikärkisistä polygoneista, eli kolmioista. Mitä kurvikkaampi ja yksityiskohtaisempi objekti on, sitä enemmän polygoneja tarvitaan tekemään objektista realistisen näköinen. Valitettavasti, kun peli renderöidään, jokainen kolmio kuvassa tarkoittaa lisää laskentaa – jokainen pitää erikseen prosessoida teksturointia, valon heijastusta ja varjojen muodostusta varten. Jotta ruudunpäivitys pysyisi korkeana, pelinkehittäjät yrittävät pitää polygonien määrän tietyn budjetin rajoissa. Tarkoitus on pysyä rajan alapuolella, tarjoten tarpeeksi hyvältä näyttävää grafiikkaa pelin pysyessä samalla sulavana. AMD ja Nvidia yrittävät auttaa kehittäjiä nostamaan tätä rajaa tessellaation avulla, mutta siitä puhumme joskus toiste.

Ongelmia tulee vastaan kun kuvassa on paljon pieniä yksityiskohtaisia objekteja jotka vaativat monimutkaisia verkkoja. Kuvittele kuinka paljon polygoneja tarvitaan edustamaan kaikkia lehtiä metsässä? Entäpä teräsristikot ristikkoaidassa tai ruohonkorret avoimessa maastossa? Nykypäivän näytönohjaimetkin joutuvat nöyrtymään tällaisen laskentataakan alla. Ratkaisuna on läpinäkyvät tekstuurit.

Läpinäkyvä tekstuuri simuloi yksityiskohtaista kolmiulotteista objektia kaksiulotteisella kuvalla ja läpinäkyvällä alpha-maskilla. Käytetään ristikkoaitaa esimerkkinä, sillä se on edustettuna monessa FPS-pelissä. Alla on kuva joka näyttää aitatekstuurin (läpinäkyvät osat näkyvät shakkilautakuviona), kuva jossa näytetään polygoniverkko sekä kuva jossa aitatekstuuri on renderöity pelitilanteessa:



Kuten voit nähdä, läpinäkyvät tekstuurit tuovat selvästi lisää yksityiskohtaisuutta kuvaan ilman ylimääräistä polygonigeometriaa. MSAA:n ongelmana on se,ettei se vaikuta ollenkaan näihin tekstuureihin, sillä läpinäkyvässä tekstuurissa ei ole tarvittavia polygonireunoja:



Supersamplaus anti-aliasoi läpinäkyviä tekstuureja, mutta ei ilman suurta suorituskykypudotusta. Tarvitsemme siis tehokkaamman metodin näiden tekstuurien anti-alisointiin.

GeForce 7-sarjan myötä Nvidia toi Transparency Adaptive Anti-Aliasingin, TAAA:n. Nvidialla on kaksi TAAA-implementaatiota, multisamplausmetodi (TrMSAA) ja supersamplausmetodi (TrSSAA).
MSAA voidaan käyttää vain pikseleille, jotka ovat polygonin reunoilla. TAAA päällä pikselit, joissa on objekti jolla on läpinäkyvä tekstuuri tullaan liputtamaan. Nvidian ajuriasetukset mahdollistavat läpinäkyvän tekstuurin anti-alisoinnin samalla MSAA:n tasolla, tai supersamplaamalla tekstuuri kahdella, neljällä tai kahdeksalla arvolla.

Nvidian TAAA sisältää myös rajoituksia. Teoriassa TrSSAA pitäisi toimia kaikissa tilanteissa. Testituloksemme kuitenkin todistavat, että se toimii useimmiten vai DX 10 ja DX 11 –pelimoottorien kanssa. TrMSAA vuorostaan on rajoitettu vain DX 9:ään, eikä silloinkaan toimi kovin usein.

Radeonin vastine TAAA:lle on adaptiivinen anti-aliasointi, joka julkaistiin AMD:n X1000 –sarjan korttien myötä. Se toimii samankaltaisesti, paitsi että AMD:n implementaatio rajoittuu vain supersamplaukseen, ja samplausarvojen määrä on sidottu koko kuvassa käytettyyn anti-aliasointitasoon. Kuten Nvidian TrMSAA, AMD:n adaptiivinen anti-aliasointi toimii vain DX9-peleissä, jos toimii. AMD kertoi meille, että adaptiivista anti-aliasointia voidaan käyttää DX10- ja 11-peleissä jos pelimoottori erityisesti tukee sitä. Stalker: Clear Sky ja Call of Pripyat sekä Metro 2033 ovat esimerkkejä peleistä joissa tämä ominaisuus on tuettu. Testasimme tätä myös itse, mutta se ei tuntunut toimivan Metro 2033:n tapauksessa.

Transparency Anti-Aliasing: kuvanlaatuvertailu



Kuten voit nähdä, transparency AA voi parantaa kuvanlaatua selvästi. Nvidian ja AMD:n anti-aliasointitekniikat toimivat hyvin tässä tapauksessa, vaikka aidan paksuus eroaakin ratkaisujen välillä.

DirectX 10/11 –tekniikka nimeltä alpha-to-coverage pystyy myös laskemaan rautapohjaisen anti-aliasoinnin läpinäkyvälle tekstuurille. Yllä näytetyt kuvat ovat peräisin vanhemmasta pelimoottorista joka hyötyy transparency AA:sta, mutta monet uudemmat pelit renderöivät aidat ja kasvuston selvästi paremmin. Tästä huolimatta on helppo törmätä aliasoituneisiin tekstuureihin uusissakin peleissä, joten transparency AA on edelleen hyödyllinen työkalu.

kommentti 1

sam49

Kiitokset. On hyvä täydentävä teksti tietokonegrafiikan oppikirjoihinkin nähden. Ainoa muutos, jonka toivoisin näytekuviin olisi, että ne voisi ladata omalle koneelle hiukan isommassa koossa ja vertailla niitä rinnakkain.

Kommentoi artikkelia