Hlavní stránka Hardware Grafické karty Antialiasing - vyhlazování teoreticky i prakticky
Antialiasing - vyhlazování teoreticky i prakticky
autor: Tomáš Šulc , publikováno 7.6.2009
Antialiasing - vyhlazování teoreticky i prakticky

Zapnutí antialiasingu neboli česky vyhlazování hran je jeden z nejčastějších a nejjednodušších způsobů, jak razantně zvýšit (nejen) u 3D počítačových her kvalitu obrazu. Ale antialiasing, to nejsou jen zubaté hrany, ale i mnoho dalšího. A právě o tom a o dopadech AA na výkon u dnešních grafických karet bude tento článek.


Pletiva

Antialiasing - vyhlazování teoreticky i prakticky('
zdroj: nvnews.net

Dalším typem objektů, který je obvykle ve velké míře poškozen aliasingem, jsou pletiva. Pro ně platí to stejné, co pro ostatní tenké dráty a objekty popsané v minulé kapitole. Přidává se k tomu také často to, že se vykreslují jako transparentní textury, ve kterých jsou oka plotu jednoduše průhledná. Ovladač grafické karty pak ani takové tvary nebere jako hrany a ani se nesnaží aplikovat AA. Ale to už odbíháme k jiným technickým problémům.

Moaré

Antialiasing - vyhlazování teoreticky i prakticky

Moaré (anglicky moire) je jev, který vzniká při rasterizaci ploch s jemným vzorkem, na které se díváme pod úhlem nebo z dálky. Jde o ono typické zkroucení tenkých rovných linií a podobně. Řešením však není vždy přímo antialiasing, ale také filtrace textur, tedy anizotropní filtrování místo klasického a méně účinného bilineárního/trilineárního.

Tím jsme prošli nejčastější projevy chyb při rasterizaci. Existují však i některé další jako například aliasing stínů či aliasing na texturách samotných. Věnujme se však už spíše tématu, jak nepříjemně zubaté hrany a další problémy vyřešit.

Antialiasing

Oversampling

Antialiasing - vyhlazování teoreticky i prakticky
zdroj: 3dcenter.org

Nyní se vraťme k původnímu trojúhelníku a zkusme celou situaci vyřešit. Logicky platí, že čím větší rozlišení, tím přesnější bude výsledný obraz. Při nekonečně vysokém rozlišení bychom i po rasterizaci dostali stejný trojúhelník jako předním.

Antialiasing - vyhlazování teoreticky i prakticky
zdroj: 3dcenter.org

Základní metodou Antialiasingu je proto Oversampling. V našem případě se každý pixel rozdělil na čtyři menší scéna se vyrenderovala ve dvojnásobném rozlišení. Výsledný trojúhelník tvořený ze čtverců vypadá daleko věrněji. Náš návrh v tomto provedení odpovídá 4× AA (každý pixel jsme nahradili čtyřmi menšími).

Antialiasing - vyhlazování teoreticky i prakticky
zdroj: 3dcenter.org

Nyní se jen zprůměrují barvy u každých čtyř sousedních pixelů a scéna se převede zpět do původního rozlišení. Výsledek je teď daleko věrnější než původně. Jenže je tu malá nevýhoda. Místo rozlišení 1920 × 1200 px obraz renderujeme v rozlišení 3840 × 2400. Zatížení sběrnice je obrovské, jsou tu velké nároky na paměť a podobně. Přichází proto na řadu optimalizace.

Supersampling

Antialiasing - vyhlazování teoreticky i prakticky

Kvůli obrovským nárokům Oversamplingu bylo nutné celý proces optimalizovat. Prvním krokem je zmenšení počtu subpixelů na polovinu. Všimněte si, že na obrázku má každý pixel jen dvě červené tečky (subpixely), které by šly snadno doplnit na čtyři. Tím bychom dostali původní 4× Oversampling. V praxi však v drtivé většina případů stačí jen dva takto diagonálně umístěné subpixely, přičemž kvalita obrazu se o mnoho nezhorší (obecně platí, že v každém řádku a každém sloupci musí být jeden subpixel). Tím jsme snížili nároky na polovinu a získali jsme 2× Supersampling.

Antialiasing - vyhlazování teoreticky i prakticky
nahoře 4× Oversampling, dole 4× Supersampling
zdroj: 3dcenter.org

Podobně jako v případě optimalizace 4× OAA na 2× SSAA 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 × 1200 px tedy 7680 × 4800). Po optimalizaci nám však však v každém řadě a sloupci zbude jen jeden subpixel, přičemž kvalita se nezmění (spodní trojúhelník). Tím dostáváme 4× Supersampling, který má stejné nároky na výkon jako 4× Oversampling, ale kvalita je na úrovni 16× Oversampling. Vzhled útvaru se navíc začíná vzdáleně podobat trojúhelníku, který jsme původně chtěli.Samozřejmě je mnoho možností, jak subpixely  vybrat a podle toho se rozlišuje mnoho verzí Supersamplingu.

Multisampling

Další úrovní optimalizace je multisampling. Se Supersamplingem totiž sice máme scénu ve vyšší kvalitě při stejném výkonu, ale stále renderujeme při 4× režimu celou scénu v dvojnásobném rozlišení. Proto přichází další režim, Multisampling. Ten ve vyšším rozlišení generuje jen okolí dvou polygonů. Tím dochází k dalším úsporám ve výkonu. Kvalita vyhlazování se však nemění.

A to je vše?

Multisampling je v dnešní době základní a nejpoužívanější typ vyhlazování hran. Ale existuje bezpočet vylepšených verzí, 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; 16× režim u jedné NVIDIA karty) od NVIDIE a Custom Filter Antialiasing od ATI (CFAA; volitelné filtry).



 
Komentáře naleznete na konci poslední kapitoly.
329 čtenářů navrhlo autorovi prémii: 157.3Kč 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.