Antialiasing — teoretický i praktický test vyhlazování hran
i Zdroj: PCTuning.cz
Hardware Článek Antialiasing — teoretický i praktický test vyhlazování hran

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

Tomáš Šulc

Tomáš Šulc

10. 2. 2012 03:00 62

Seznam kapitol

1. Vyhlazování hran v roce 2012 2. Jak vznikají zubaté hrany (aliasing) 3. Antialiasing — lék na zubaté hrany 4. Srovnání kvality vyhlazování MSAA 2×, 4× a 8× (I) 5. Srovnání kvality vyhlazování MSAA 2×, 4× a 8× (II) 6. Testovací sestava, hry a metodika 7. AC: Revelations, Crysis
8. Far Cry 2, DiRT 3 9. Just Cause 2, Portal 2 10. Serious Sam 3, Splinter Cell: Conviction 11. Test Drive Unlimited 2 12. Průměrné poklesy výkonu s vyhlazováním 13. Závěr

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.

Reklama

Oversampling

Antialiasing — teoretický i praktický test vyhlazování hran
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz


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
i Zdroj: PCTuning.cz


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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz


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
i Zdroj: PCTuning.cz


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
i Zdroj: PCTuning.cz

Č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í.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama