Antialiasing — teoretický i praktický test vyhlazování hran | Kapitola 2
Seznam kapitol
Zubaté hrany trápí většinu hráčů her všech žánrů, a tak na potlačení „zubů“ zapínáme antialiasingové filtry. Málokdo však ví, jak aliasing vzniká, jak funguje antialiasingový filtr a jaké jsou jeho hardwarové nároky. Na to vše v dnešním článku odpovíme – a k tomu si ještě otestujeme osm grafických karet až do režimu 8× MSAA.
V počítači se trojrozměrné objekty modelují ze sítě polygonů (trojúhelníků), které jsou následně potaženy plochou texturou. Čím je tato sít podrobnější, tím věrnější bude i výsledný obraz. Například u lidské hlavy to znamená lepší zaoblení lebky, věrnější záhyby ušních boltců a podobně.
Po vygenerování trojrozměrného obrazu a jeho uložení do paměti grafické karty je třeba přizpůsobit jeho formát pro zobrazení na monitoru (tedy vygenerovat z vektorové grafiky výsledný dvojrozměrný obraz). K tomu se v dnešní době používá tzv. rasterizace. Právě při tomto procesu dochází ke vzniku nepopulárních zubů a dalších vad.
zdroj: 3dcenter.org
Pro názornou ilustraci celé problematiky předpokládejme, že na monitoru vykreslit vyobrazený trojúhelník. Jeho rozměry jsou přibližně 4×15 pixelů, jeho strany se však přesně neshodují s hranicemi jednotlivých pixelů.
zdroj: 3dcenter.org
Výsledný obraz pro rasterizaci ani zdaleka neodpovídá původní předloze. Obraz se vygeneroval jednoduchým způsobem na základě kontroly středu jednotlivých pixelů (červené tečky). Pokud střed pokrývala modrá barva, vykreslil se modře i celý příslušný pixel výsledného obrazu a naopak. Protože tato metoda nereflektuje částečné barevné pokrytí jednotlivých pixelů, je výsledný obraz značně deformovaný. Hlavním problémem je fakt, že jiné než horizontální/vertikální přímky se znehodnotí do podoby typických „schodů“. Právě tak vznikají zubaté hrany (anglicky jagged edges) neboli aliasing.
zdroj: Need for Speed: Hot Pursuit 2
Pokud se přesuneme do světa počítačových her, je na vyobrazeném modelu auta velké množství hran, které mají jiný než horizontální/vertikální směr (takových hran je jen minimum). Kamera za vozidlem je navíc v drtivě většině počítačových her naprogramována tak, že se v zatáčkách otáčí za vozidlem a není ve fixní pozici. Otáčením kamery se plynule mění úhel, pod kterým vozidlo pozorujete a tedy i úhel otočení jednotlivých hran. Při tomto procesu tak dochází i k posunu v předchozím odstavci zmíněných „schodů“, které jsou dané nenulovými (viditelnými) rozměry jednotlivých pixelů. Jev „ježdění zubů“ po hranách se nazývá crawling a patří k jedněm z nejméně příjemných projevů aliasingu.
zdroj: 3DMark 2006
V případě, že budeme vykreslovat velmi tenké objekty jako jako jsou například lana nebo stožáry, může dojít k úplnému rozpadu těchto objektů na nespojité díly. Je to dané tím, že lana jsou tenčí než jeden pixel a nastane situace, kdy se lano nachází mezi dvěma středy sousedních pixelů a tudíž se vůbec nevykreslí. U vedlejšího pixelu však už do středu pixelu zasahuje a k vykreslení tedy dojde. Tato situace se opakuje a dochází k jevu, kdy se objekt pozorovateli jeví jako nesouvislý celek. Tento jev se nazývá Unconnected lines.
zdroj: Grand Theft Auto IV
V extrémních situacích mohou jednotlivé objekty začít úplně mizet a zase objevovat. Tento jev nazýváme flickering (poblikávání). Že nejde pouze o hypotetickou situaci ukazuje screenshot z počítačové hry Grand Theft Auto IV v poměrně vysokém rozlišení 1680 × 1050 px. Všimněte si požárního schodiště na protějším domě, ze kterého jsou vidět pouze schody, zatímco plošiny a zábradlí téměř úplně chybí.
Dalším typem vad je tzv. moaré. Moaré je jev, který vzniká při rasterizaci ploch s jemným vzorkem, na které se pozorovatel dívá pod úhlem nebo z dálky. Jde zejména o typické zkroucení tenkých rovných linií. Tento problém však neřeší jen vyhlazování hran, ale především anizotropní filtrování.