Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

3D technologie: Anti-aliasing

12.11.2003, Zdeněk Kabát, článek
3D technologie: Anti-aliasing
Každý z Vás jistě slyšel o technologii k vyhlazování hran, která je obecně známá pod názvem Anti-aliasing. V tomto článku si popíšeme detailně, jak tato technika funguje a rozebereme různé její aplikace jako je Quincunx či SmoothVision.
Negativní stránky anti-aliasingu
Tak jsme si ukázaly, co anti-aliasing dokáže, ale všechny tyto techniky mají svá úzká hrdla. Podívejme se tedy na chyby, kterých se těžko zbavíme.

Kritické úhly
Na tento pojem jsem již nepřímo narazil u popisu OG a RG anti-aliasingu. Na následujících obrázcích je jasně vidět, kde je problém. Pokud je úhel okraje textury přijatelný, můžeme se u výsledného pixelu, v případě 4x AA, dočkat až pěti barevných odstínů, které zajišťují relativně plynulý přechod. Následující obrázek platí 100% pro OGSS, ale u OGMS není první a poslední situace možná (pak nejsou subpixely počítány zvlášť):


Obr. 14 – Přívětivý úhel pro 4x OGSS


Obr. 15 – Výsledný okraj vyhlazeného polygonu

Ovšem pak může nastat avizovaná situace, kdy je okraj polygonu horizontální či vertikální a získáváme jen tři odstíny. Kdybychom anti-aliasing nepoužili, byl by výsledek téměř stejný, protože okrajové barvy jsou přímo ony textury:


Obr. 16 – Kritický úhel pro 4x OGSS




Obr. 17, 18 – Výsledný okraj a ideální situace

Obrázek 18 je vytvořen uměle, protože jak vidíte, takové množství odstínů by potřeboval mnoho vzorků a výkon dnešních GPU je přeci jen omezený. Jednou cestou k překonání tohoto problému bylo právě použití Rotated Grid anti-aliasingu, který mohl dosáhnout při stejné situaci 4 nebo 5 odstínů. Výsledná hrana by pak vypadala takto:


Obr. 19 – Aplikace RGSS na hranu

Co z toho vyplývá? Pokud se scéna skládá z množství polygonů, jejichž okraje mají úhly 0° či 90° (analogicky 180° a 270°), příp. o něco lépe 45° a 135°, je jedinou možností jak potlačit zubaté okraje použití hrubší síly a více vzorků. Nedosahuje-li grafická karta takového výkonu, který by to dovoloval, je to neřešitelný problém.

Když se z anti-aliasingu stane aliasing
Bohužel může nastat i situace, kdy má anti-aliasing spíše negativní účinky. Opět to souvisí s kritickými úhly, příklad si ukážeme na aplikaci 2x supersamplingu grafických čipů nVidia. Vyhlazování horizontálních a vertikálních okrajů je vcelku přijatelné, ale největší problém dělá 135°, posléze 45°. Stejný problém má i SmoothVision, a to jak 2x Quality, tak 2x Performance.

Zde je scéna renderovaná s aplikací 2x Performance SmoothVision a která místo toho, aby okraje s úhlem 135° a 45° vyhladila, vytvořila na nich vyloženě zuby. Zde je screenshot:


Obr. 20 – Zubatý efekt při 2x Performance SmoothVision

Důvod je ten, že umístění náhodný subpixelů z rozptylového vzorku není příliš přesné. Můžeme najít pixel, který je v renderované scéně ze 70% hnědý, ale přesto budou oba subpixely zvoleny v bílé oblasti. Proto dochází až k tomu, že se na obrázku objevují dvoupixelové zuby, což jistě není pastva pro oči. V tomto případě, kdy nemáte dostatek výkonu na ideální FSAA, je lepší vyhlazování úplně vypnout.

Vyhlazování nebo rozmazávání?
U technik, kde dochází k vyhlazování i za pomoci sousedních subpixelů (jde tedy o Quincunx a Performance SmoothVision), se velice často obraz rozmázne. Důvod je prostý, do pixelu se dostanou údaje z jinak barevného sousedního pixelu a dojde k jejich smíchání. Podobnou metodu totiž používají pro „blur“ efekt i grafické editory.

Pro příklad si můžeme vzít 4x 9-tap Quincunx a 4x Performance SmoothVision. Místo toho, aby se vyhladily hrany, dojde k rozmazání obrazu, což je jasně vidět na výbuchu u následujícího screenshotu:


Obr. 21 – Neblahý efekt, kdy se místo vyhlazení obraz rozmázne

Nalevo můžete vidět použití 2x HRAA, zatímco napravo je 2x 5-tap Quincunx. Se stejnými nároky na paměť dochází u Quincunx spíše k horšímu výsledku. Přestože anti-aliasing jako takový je o rozmazávání hran, neměl by postihnout kvalitu textur a detaily. Zde k tomu bohužel dochází.