Hlavní stránka Hardware Grafické karty Antialiasing — teoretický i praktický test vyhlazování hran
Antialiasing — teoretický i praktický test vyhlazování hran
autor: Tomáš Šulc , publikováno 10.2.2012
Antialiasing — teoretický i praktický test vyhlazování hran

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.


Oversampling

Antialiasing — teoretický i praktický test vyhlazování hran

Z předchozí kapitoly víme, jaké jsou příčiny aliasiangu (nízké rozlišení monitorů a fyzicky velké rozměry pixelů) a jak se v praxi projevuje ve hrách („zubaté“ hrany, deformované objekty, rozpojené linie, blikající objekty, moaré). K zamezení vzniku aliasingu se používá tzv. antialiasing (přesněji antialiasingový filtr). Pro lepší vysvětlení jeho funkce si vzpomeňme na vykreslený „trojúhelník“ z minulé kapitoly. Logicky platí, že čím větší rozlišení, tím přesnější bude výsledný obraz. Při nekonečně vysokém (jemném) rozlišení bychom i po rasterizaci dostali přesnou kopii původního trojúhelníku. Antialiasing je tedy v principu metodou, která se snaží „uměle zvýšit rozlišení“.

Antialiasing — teoretický i praktický test vyhlazování hran
zdroj: 3dcenter.org

Základní metodou antialiasingu je Oversampling (OSAA). Každý pixel je rozdělen na čtvrtiny a celá scéna se vykresluje ve dvojnásobném rozlišení. Výsledný trojúhelník je opět složený ze čtverců a i tentokrát se v něm projevují charakteristické „zuby“, přesto však díky jemnějšímu rozlišení vypadá daleko věrněji. Náš návrh v tomto provedení odpovídá 4× OSAA (každý pixel jsme nahradili čtyřmi menšími). Analogicky bychom mohli každý pixel rozdělit na šestnáctiny a realizovat ještě vyšší filtr 16× OSAA. 

Antialiasing — teoretický i praktický test vyhlazování hran
zdroj: 3dcenter.org

V dalším kroku se zprůměrují barvy u každých čtyř sousedních pixelů a scéna se převede zpět do původního nízkého rozlišení. Výsledek je díky zprůměrování čtyř pixelů daleko věrnější než při původním vykreslení. Velkým problémem oversamplingu jsou však hardwarové nároky. Abychom realizovali základní filtr 4× OSAA, je nutné obraz renderovat v dvojnásobném rozlišení (čtyřnásobném pro 16× OSAA). Místo rozlišení 1920 × 1080 px tak obraz renderujeme v rozlišení 3840 × 2160 px, což velkým způsobem zatěžuje sběrnice, paměti a celkově datovou propustnost. Aby se tyto nároky snížily, používá se celá řada optimalizací.

Supersampling

Antialiasing — teoretický i praktický test vyhlazování hran

Základním krokem snížení hardwarové náročnosti vyhlazovacího filtru je zmenšení počtu počítaných subpixelů. Obecně platí pravidlo, že není nutné počítat barvu každého subpixelu, stačí pouze spočítat barvu alespoň jednoho bodu v každém řádku a sloupci. Hardwarové nároky čtyřnásobného oversamplingu tak můžeme snížít na polovinu tím, že budeme počítat pouze barvu dvou pixelů po úhlopříčce. Takovýto filtr pak nazýváme Supersampling (v tomto konkrétním případě 2× SSAA). Vyškrtnutím některých subpixelů samozřejmě i umožníme vznik situací, kdy nový filtr 2× SSAA nebude fungovat, zatímco původní 4× OSAA by fungoval, je jich však jen minimum, zatímco úspory výkonu jsou obrovské.

Antialiasing — teoretický i praktický test vyhlazování hran
nahoře 4× Oversampling, dole 4× Supersampling (zdroj: 3dcenter.org)

Podobným způsobem jako 4× OSAA můžeme optimalizovat i 16× Oversampling. V tomto případě už každý pixel dělíme na 16 menších a obraz renderujeme ve čtyřnásobném rozlišení (místo 1920 × 1080 px tedy 7680 × 4320). Po optimalizaci nám v každé řadě i sloupci zbyde jeden subpixel, přičemž kvalita výsledného vyhlazení bude velmi podobná jako u původního režimu 16× OSAA. Nový režim se jmenuje 4× Supersampling (SSAA) a při stejných nárocích na výkon jako 4× Oversampling dává daleko kvalitnější výsledek vyhlazování.

Multisampling

Antialiasing — teoretický i praktický test vyhlazování hran
zdroj: hothardware.com

Další úrovní optimalizace je multisampling (MSAA). Supersampling je sice poměrně kvalitní antialiasingový filtr, stále však ve vyšším rozlišení renderuje celou scénu. Právě tento problém řeší multisampling. Ten ve vyšším rozlišení generuje pouze blízké rozhraní dvou hran, čímž dochází k další velké úspoře výkonu. Na druhou stranu však současně přicházíme o vyhlazení zbytku obrazu, i textury (pakliže nejde o jednobarevné plochy) totiž často trpí aliasingem, byť u nich nejsou projevy aliasingu tak zřejmé jako u hran.

Multisampling (zejména 4× MSAA) je v dnešní době základní a nejpoužívanější antialiasingový filtr, existuje vak bezpočet dalších (většinou proprietárních) typů tohoto filtru, které dále zlepšují kvalitu vyhlazování. Například je to adaptivní antialiasing, který vyhlazuje hrany u průhledných textur či Custom Sampling Aliasing (CSAA) podporovaný grafickými kartami nVidia nebo obdobný Custom Filter Antialiasing (CFAA) pro grafické karty AMD. Platí však pravidlo, že se tyto filtry zaměřují jen na vylepšení konkrétních typů defektů (problematické je zejména vykreslování tenkých a průhledných materiálů jako například pletivo plotu) a hry samotné tyto režimy podporují málokdy (je tedy nutné vynucení přes ovladače, které ne vždy správně funguje).

Post processing vyhlazování

Antialiasing — teoretický i praktický test vyhlazování hran

Často se bohužel můžeme setkat s hrami se špatně napsanými enginy, které vyhlazování hran vůbec nepodporují, ačkoliv pro to objektivně není žádný důvod. Pro ty pak existují speciální post processing antialiasingové filty jako například morfologické vyhlazování (MLAA) od AMD. Nutno však dodat, že tyto filtry pomáhají jen částečně a mají množství negativních vlastností. Nejde totiž o klasický antialiasingový filtr, nýbrž o matematickou analýzu vygenerovaného obrázku a jeho následnou úpravu. Podrobněji jsem tuto problematiku rozebíral před rokem v testu morfologického vyhlazování.



 
Komentáře naleznete na konci poslední kapitoly.
150 čtenářů navrhlo autorovi prémii: 72.6Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.