XGI
Ordered-Grid SuperSampling
Společnost XGI je nejmladší společností, která vyrábí akcelerátory určené pro
herní nasazení. Vytyčila si poměrně vysoké cíle a stále není její situace příliš jasná. Z dnešního pohledu
se zdá, že se snaží výkonu dosahovat hrubou silou a moderní technologie jí příliš neříkají. Zaměřme se na FSAA
její série Volari, tedy konkrétně V5/V8 (Ultra/Duo). Když jsem poprvé četl jejich specifikace a narazil na zmínku
o SuperSamplingu, docela mě to zarazilo. Když jsem se dozvěděl, že jde o Ordered-Grid, začínal jsem už tušit,
že se XGI s vývojem v tomto směru zrovna nepřetrhla, a když jsem viděl první screenshoty na serveru pctuning,
bylo moje zklamání dovršeno.
Nikdy by mě nenapadlo, že společnost, která se chce stát během několika let grafickým
leaderem (ještě k tomu v době, kdy je váha kladena na algoritmy jako FSAA a AF) přijde s takovým
algoritmem: Který režim FSAA je nejpomalejší? SuperSampling. XGI ho používá. Jaké rozložení vzorků je nejméně výhodné
z hlediska účinnosti? Uspořádané (OG). XGI ho používá. Jak je možné pomocí AntiAliasingu dosáhnout zhoršení
obrazu pod původní kvalitu? Sdílením vzorků pro sousední pixely. XGI FSAA je sdílí.
Když jsem viděl první obrázky, myslel jsem nejprve, že ani nejde o FSAA, ale o bluring.
Za moment se dozvíte proč.
|
|
OGSS 4x.
Takto vypadá standardní aplikace OGSS.
|
Volari OGSS 4x ???
A takto je (podle mě) praktikován OGSS na Volari...
|
4x 16-tap Ordered-Grid SuperSampling
Mnoho recenzentů považuje stávající situaci za bug. Mě se ale zdá nelogické,
aby již v několikáté verzi ovladačů byl tentýž a takto výrazný bug. Navíc si nedokážu představit,
jak by mohl takovýto bug vzniknout. Zkrátka, XGI se podle mě snažila pomalý a neúčinný algoritmus "dotáhnout" podobným
způsobem, jaký používá nVidia pod názvem 9-tap AntiAliasing, tedy sdílení okolních subpixelů pro zvýšení účinnosti FSAA.
XGI ale zapomnělo na pár faktů. Jednak nelze sdílet subpixely sousedící ze všech stran (to už je totiž skutečný bluring)
a při sdílení sousedních subpixelů nelze hodnotu všech brát stejnou vahou. Výsledek? Algoritmus je pomalý,
neúčinný a drasticky rozostří celý obraz. Jediné plus, že zvýší kvalitu některých textur. Rozostření obrazu
a zostření textur si nelze snadno představit, takže jsem udělal výjimku a přiložil výřez obrázku
z pctuningu.
Volari FSAA (přejeď myší přes obrázek) |
| S a bez Volari OGSS |
Myslím že je vidět vše. Obraz má nižší ostrost, ale textury
(třeba deska stolu či pravá zídka) jsou i přes celkovou rozmazanost zřetelně lepší.
ATi
ATi začala s FSAA až na Radeonech, i když pozdější karty série Rage
podporují Edge-AA (pro D3D). Každopádně nelze říct, že by se ATi používanými algoritmy zrovna chlubila. Princip
svého FSAA zveřejnila jen 1x a to ve SmoothVision 1.0 Whitepaperu (FSAA DX 8.1 kompatibilních Radeonů). ATi doposud
šla třemi různými cestami. První na DX 7 Radeonech (7000 až 7500), druhá na DX 8.1 Radeonech (8500 až 9200) a třetí na
DX 9 Radeonech (9500 a dále).
Radeon 7xxx series FSAA
O algoritmu sedmitisícovek toho vím nejméně. (režimy 2x a 4x s volbou
kvalita/výkon). Ani z obrázků nejsem schopen
nicmoc vykoukat. Algoritmus je o něco rychlejší, než OGSS v podání GeForce (procentuelně) a taktéž účinnost
je vyšší. Podivný je ale vliv na textury. Při použití režimu "quality" není téměř žádný, při "performance" mírně zvyšuje
kvalitu NĚKTERÝCH textur. Pokud náhodou o tomto algoritmu něco víte, dejte mi
vědět.
Semi-Jittered SuperSampling (SmoothVision 1.0)
Touto cestou se ATi dala při vývoji Radeonu 8500. Podstatu jsem popsal
v prví části článku; jde o pravidelně rozložené vzorky, jejichž část má pozici změněnou podle náhodně
vygenerované předlohy. ATi se chlubila, že její režim 2xQ je lepší, než konkurenční režim 4x (nVidia OGMS na GF3).
Náhodná pozice vzorků sice dokáže výrazně zvýšit účinnost FSAA, ale při nízkém množství vzorků může docházet
ke vzniku nepříjemných vizuálních artefaktů. To ATi řešila tím způsobem, že např. při režimu 4x byla náhodná jen pozice
jednoho vzorku ze čtyř. Ovladače umožňují režim 2x, 3x, 4x, 5x a 6x. Pro každý je dále na výběr mód "quality" či
"performance". Následující obrázky slouží pro přiblížení jednotlivých režimů; nejsou v nich zahrnuty pozice náhodných
vzorků - pro snazší grafické vyjádření jsou pozice všech vzorků znázorněny jako uspořádané.
Quality:
|
|
1.0 SmoothVision 2xQ
|
1.0 SmoothVision 3xQ
|
|
|
|
1.0 SmoothVision 4xQ
|
1.0 SmoothVision 5xQ
|
|
|
1.0 SmoothVision 6xQ
|
Performance:
|
|
1.0 SmoothVision 2xP
Antialiasing je proveden jen na každé druhé řádce. V určité situaci může
tato metoda obraz zhoršit.
|
1.0 SmoothVision 3xP
Na 25% pixelů je proveden AA 4x; na 25% není AA proveden vůbec a na zbytku (50%) je proveden 2x.
|
|
|
|
1.0 SmoothVision 4xP
Na jednotlivých sloupcích je střídavě proveden AA 4x a 2x. S největší pravděpodobností jsou
pro pixel sloupce "2x" sdíleny dva nejbližší vzorky sousedního "4x" pixelu, takže každý druhý sloupec má
mírně zhoršenou ostrost v jednom směru (posun o 1/3 pixelu)
|
1.0 SmoothVision 5xP
De-facto režim 4x se sdílenými dvěma nejbližšími vzorky jednoho sousedního pixelu. Obraz má zhoršenou
vertikální ostrost.
|
|
|
1.0 SmoothVision 6xP
Na jednotlivých sloupcích je střídavě proveden AA 4x a 2x. Žádné sdílení.
|
V tabulce jsem se u režimu 2xP zmiňoval, že může obraz zhoršit.
Konkrétně jde o zvýšení aliasu při úhlech kolem 45°, neboť AA každého druhého řádku vytvoří nepříjemný defekt:
v AA řádku byl vytvořen určitý (např. tmavší odstín); ten by měl pokračovat, ale v dalším řádku (bez AA)
je namísto něj odstín původní. Názorně na obrázku:
|
|
|
Ideální obraz |
Bez FSAA |
Standardní FSAA |
|
|
ATi 2xP SmoothVision 1.0 na jedné řádce provede AntiAliasing a druhou
ponechá beze změny. Při úhlech kolem 45° pak může dojít k tomuto defektu. Dopočtený odstín nejenže nesníží
Aliasing, ale ještě ho zvýší... |
|
|
A zde tentýž obrázek, jen bez mřížky (aby byl defekt lépe patrný). |
SmoothVision 1.0 2xP může za určitých okolností v obrazu vytvořit výše
znázorněné dvoupixelové zuby, které obrazu na kvalitě opravdu nepřidají. Ostatní režimy jsou z tohoto
hlediska v pořádku. Režimy 4xP a 5xP mohou mírně snížit ostrost obrazu v jednom směru (1/3 pixel linear blur),
přičemž 4xP jen v každém druhém sloupci.
Ještě bych měl upozornit, že verze ovladačů
Catalyst 4.2 podstatně překopala SmoothVision 1.0 a výrazně zvýšila dopad FSAA na textury (kladně).
SmoothVision 2.x
Při příchodu R9700 sice ATi propagovala rychlost a účinnost nového
FSAA (poprvé MultiSampling), ale vůbec se nechlubila použitým algoritmem.
To poukazuje na fakt, že přestala používat vlastní SmoothVision 1.0 (Semi-Jittered Sampling). Dnes je velice
rozšířen názor, že ATi používá Rotated-Grid MultiSampling (tedy totéž, jako 3Dfx na Rampage). Což by mohlo
vysvětlovat důvod, proč se ATi tímto algoritmem nechlubí (proč se chlubit "cizím peřím"?). Taktéž režimy tomu
odpovídají. Podporovány jsou 2x, 4x a 6x bez možnosti volby kvality. Na rozložení vzorků se mrkněte do předchozího dílu
k 3Dfx. Jelikož je možné procesory od ATi řetězit, můžeme se setkat s víceprocesorovými profi-kartami. Např.
Evans & Sutherland ve svých Hi-End simulátorech používají grafickou kartu založenou na čtyřech procesorech
Radeon 9700 zvanou simFusion 6000q, která je schopna
FSAA až 24x
3DLabs
SuperScene
Společnost 3D Labs dnes vyrábí především profesionální grafické
akcelerátory. Její série WildCat používá FSAA nazývaný "SuperScene". Podporován je režim 8x a 16x. 3DLabs prohlašuje,
že jde o velice efektivní, účinný a kvalitní AntiAliasing. Což je pravda. A jak tomu už bývá, pokud jde
o kvalitní AntiAliasing, tak má vždy něco společného s 3Dfx. Ani tentokrát tomu není jinak. Nebudu dál napínat,
jde o Stochastic MultiSampling. Tedy zcela náhodné rozložení vzorků (použité jen na okraje polygonů). (tento režim jsem rozebíral ve dvou předchozích
dílech).
Jak je špatným zvykem, vždy když se objeví nějaká slušná technologie, tak je svým autorem
(popř. prodejcem) notně přechválena. Taktéž 3Dlabs zachází se SuperScene. Ukázkou budiž jeden obrázek
z whitepaperu:
Jak vidíte, rozložení vzorků je na tomto obrázku všechno, jen ne náhodné.
Pánové z 3D Labs si dali hodně záležet, aby vykrytí vzorky bylo maximálně blízké ideálnímu. Zkuste si
představit, jak by se změnil výsledek, kdybyste prohodili rozložení vzorků pravého a prostředního pixelu
(Proč ne? Když je rozložení podle 3D Labs náhodné, tak to teoreticky nemůže ovlivnit situaci)... A jak by to dopadlo?
Třeba ten malý červený trojúhelníček v prostředním pixelu by pak nebyl pokryt ani jediným vzorkem, natož dvěma
jak je prezentováno. Stejně tak z modrého trojúhelníčku v pravém pixelu by nebyl odebrán ani jediný vzorek.
Profesionální :-).
Toto je právě ta slabší část Stochastic Samplingu. Vzorky se mohou rozložit naprosto neefektivně
a výsledek může být slabý. Podle mého názoru by bylo ideální, kdyby rozložení vzorků nebylo úplně náhodné, ale aby byly
pozice určovány podle jakési mapy, která vychází z RG rozložení a pozice každého vzorku je generována
náhodně, ale se zvýšenou pravděpodobností výskytu v prostředí pozice vzorku RG. Znázornil jsem to na obrázku (režim 4x).
Kde je mapa červenější, tam je vyšší pravděpodobnost výskytu vzorku. Tím by se zaplácly dvě mouchy jednou ranou, protože
by nemohlo dojít k situaci, kdy se vzorky "nakupí" v určité části pixelu, či jejich rozložení bude
naprosto nevhodné. Zároveň však nejsou vzorky rozloženy pravidelně, takže dochází ke zvýšení účinnosti AA (jak jsem
zmiňoval v předchozích dílech, lidské oko je citlivé na pravidelnost, takže pokud není vzorek pravidelný, dochází
k převodu aliasu na bílý šum, který oko nedokáže zachytit).
|
Pozice vzorků by byla generována náhodně,
ale pravděpodobnost umístění vzorku by byla nejvyšší v okolí pozice vzorku při RGAA
(na obrázku režim 4x). Čím sytější barva, tím vyšší pravděpodobnost výskytu pozice vzorku. |
Tímto jsem probral algoritmy používané společnostmi 3Dfx, nVidia, Matrox, PowerVR, XGI, ATi a 3DLabs.
Poslední díl článku bude obsahovat celkové srovnání všech prezentovaných metod.
|
|