Vyhlazování a Glyph Antialiasing
Kapitoly článků
Vyhlazování
Kvalita obrazu je již delší dobu trnem v oku výrobcům grafických čipů. Proto
přišlo před několika léty na svět celoobrazovkové vyhlazování (v angličtině
Full Scene Anti Aliasing), které má zkratku FSAA. Zjednodušeně lze říct,
že grafická karta počítá obraz ve vyšším rozlišení a zobrazuje v nižším, což
znamená, že počítá např. 4 pixely, které pak sloučí v jeden, a to i uvnitř
polygonu, ale pro všechny tyto pixely použije stejné body textury (v podstatě
se vícenásobně počítá jen "pixel je nebo není vidět", nikoliv jeho
barva). Implementace může být pomocí Supersamplingu, Multisamplingu atd.
Bohužel má tato funkce hned tři nevýhody:
- mohou se ztratit některé důležité detaily,
- může dojít k rozmazání písma,
- v podstatě do dnešní doby je tato funkce díky snížení výkonu málo
využívaná (viz. benchmark).
Matrox na problematiku vyhlazování šel jinak. Jeho metoda se nazývá fragmentové vyhlazování (v angličtině Fragment Anti Aliasing), která má zkratku FAA. Opět bych to zjednodušeně popsal tak, že si karta vybere objekty ve scéně a ty pak vyhladí v místech, kde je to třeba (nebo kde uzná za vhodné). Hned teď mohu říct, že tato funkce je naprosto dokonalá. Našel jsem pouze jednu nevýhodu - vyhlazování FAA nefunguje vždy, čímž nemám na mysli, že by u nějaké hry nešlo zapnout, ale ne všechny objekty ve scéně takto vyhladí. Ale všiml jsem si toho až u screenshotu, kde u NFS HS2 byl ignorován horizont cesty (obrázek najdete na konci kapitoly).
Rozdíl mezi FSAA a FAA jednou větou: full scene znamená, že hodnotu
sub-pixelu počítá pro každý pixel obrazu, fragment znamená, ze hodnotu
sub-pixelu počítá jen pro ty pixely, které to potřebuji (typicky hrany
polygonu)... Výhody FAA jsou zřejmé, je to nejkvalitnější forma AA, která je
navíc použitelná (rychlá, nezabírá násobky paměti pro frame-buffer, neprovádí
AA tam, kde je to na škodu - vnitřek polygonu - jinými slovy, nechová se jako
další filtr). FAA bohužel nelze aplikovat úplně na všechno, proto i Matrox
přidal podporu FSAA.
FSAA může mít několik hodnot (2, 4, 6), které vyjadřují s jakou kvalitou se
bude počítat (interpolace, množství okolních pixelu atd.). Čím vyšší hodnotu
nastavíme, tím vyhlazenější obraz bude, ovšem za cenu ztráty výkonu. Naproti
tomu FAA má hodnotu pouze 16, která vyjadřuje počet subpixelů z fragmentového
pixelu.
Tak tolik teorie snad stačilo. A jak to vypadá v praxi? U většiny her si
můžete bez obav zapnout FAA16× i v rozlišení 1600×1200. U ostatních, které jsou
náročnější, můžete použít 1280×1024 (nebo lepších 1280×960) a níž. Když jsem
měl zapnutý FAA16× u hry UT2003 v rozlišení 1600×1200, tak se v některých
místech projevilo cukání, ovšem ve 1280×1024 bylo vše v naprostém pořádku. Na
tomto místě bych mohl polemizovat nad použitím rozlišení 1600×1200 ve hrách. K
čemu je to dobré? Jestliže kvalitou je lepší rozlišení 1024×768 se zapnutým
FAA16×, pak je vyšší rozlišení zbytečné.
1600x1200 bez vyhlazování × 1024x768 s FAA16x
Po kliknutí se můžete podívat na PNG obrázky "vytípané" ze hry Quake III Arena v rozlišení 1024×768: FSAA6x Radeonu 9700, FAA16x Parhelie a bez vyhlazování (pozor, každý má cca 700 kB!).
A na závěr FAA jeden moc pěkný obrázek - schválně si pořádně prohlédněte ty
auta - tak přesně takhle se chová FAA16× (v dálce vidíte horizont, který není
vyhlazen - zde je vidět, že pokud aplikace FAA nepodporuje, může se stát, že
některé objekty prostě ignoruje).
S vyhlazováním, které ocení především lidé pracující s CAD aplikacemi,
souvisí i hardwarová podpora Vektorového vyhlazování (HW Vector Antialiasing) OpenGL. Vypadá to takto - na prvním obrázku bez vyhlazování a na druhém se zapnutým vyhlazováním (doporučuji kliknout pro zvětšení)
Glyph Antialiasing
Operační systém Windows nabízí software vyhlazování písma, u kterého dochází
ke znatelnému zpomalení. Na slabších počítačích je toto zpomalení patrné v
podstatě ihned, kdežto na dnešních standardních sestavách, až při větším
vytížení procesoru. Matrox Parhelia nabízí toto vyhlazování na úrovni hardware,
takže i při nejvyšším zatížení procesoru nedochází ke snížení výkonu. Další
výhodou je zdokonalení vyhlazení písma. Přesnější popis naleznete opět v článku, na který jsem již několikrát odkazoval.
Chtěl jsem otestovat rozdíl výkonu, ale narazil jsem na nepřekonatelnou
bariéru.
1. Výběr vhodného testovacího software. Bohužel v dnešní době jsem nenašel nic, co by aspoň trochu testovalo věci, jako Word, Excell atd. Díval jsem se např. na Winbench, PCMARK atd. Nakonec jsem vykopal staré CD a pustil opravdu stařičký Wintach, který mi sice hlásil, že mám perfektní PC s CPU 486, ale testy se zabývají jak Wordem, Excelem, což bylo pro mne dostačující. Horší je to s tím, jak se dá takovému testu důvěřovat - já se obávám, že asi moc ne, přesto jsem takový test zkusil, jenže ...
2. ... při testech bez zatížení CPU jsou výsledky na testovací konfiguraci (viz. benchmark) dosti podobné, takže jsem se snažil vytížit procesor na 100%. Použil jsem na to převod filmu z MJPEG do DIVX, jenže pak byly výsledky naprosto šílené. Jednou výsledek 600, podruhé se stejnými parametry např. 30000. Jde totiž o priority procesu, takže pokud v dané chvíli OS uzná za vhodné přičlenit větší prioritu pro převod filmu, pak dostanu nízké výsledky v testu. Zkoušel jsem ručně přenastavit priority, ale ani to nepomohlo. Prostě výsledky jsou k ničemu. No a nakonec jsem si všiml ještě jedné věci.
3. Funkce Glyph Antialiazing nahrazuje původní software vyhlazování ve
Windows. To znamená, že jakmile ve Windows zapnu vyhlazování, okamžitě se aktivuje GA, takže ani při nejlepší vůli nejsem schopen změřit výkonnostní
rozdíl mezi vyhlazováním SW a HW Glyph Antialiasingem.
Snažil jsem se tedy aspoň vytípat nějaký text, takže pro SW vyhlazování
jsem použil jiný počítač. Sami se můžete podívat na následující obrázek, kde je vidět nejprve nevyhlazované písmeno á, následně softwarově vyhlazované a nakonec vyhlazované pomocí GA. Jedná se o font Times velikosti 12 a patřičně zvětšený:
Bohužel se obávám, že to HW GA vyhlazování tam není zachycené :( Vidím
rozdíl mezi textem, který se mi zobrazuje a mezi tím, co je típnuté. Myslím,
že je to způsobeno tím, že se proces vyhlazování provádí až při výstupu
na monitor.
Diskuse ke článku Matrox Parhelia 512