Hlavní stránka Hardware Grafické karty R420 a NV40 - Full-Scene AntiAliasing
R420 a NV40 - Full-Scene AntiAliasing
autor: Souček Jiří , publikováno 19.5.2004
R420 a NV40 - Full-Scene AntiAliasing
V těchto dnech tomu budou právě čtyři roky, co byla uvedena první grafická karta s hardwarově implementovanou funkcí vyhlazování hran FSAA (Full-Scene AntiAliasing). Od této doby se dříve jednoduché metody vyhlazování zubatých hran v 3D obraze posunuly do oblasti složitých matematicko-logických operací. Cílem je dosáhnout precizní a ostrý obraz bez velkého dopadu na výkon 3D. {mospagebreak title=4 roky s AntiAliasingem}

V těchto dnech tomu budou právě čtyři roky, co byla uvedena první grafická karta s hardwarově implementovanou funkcí vyhlazování hran FSAA (Full-Scene AntiAliasing). Je pravdou, že AntiAliasing byl v mnoha grafických čipech implementován již mnohem dříve, ale to byl tzv. Edge AntiAliasing, stručně řečeno rozostření obrazu na hranách. Protože šlo o implementaci problémovou a často z velké části řešenou softwarově (s velkým dopadem na výkon), nikdy se tento způsob "vylepšení obrazu" neujal.

Jak to začalo...

R420 a NV40 - Full-Scene AntiAliasing

Je asi zbytečné připomínat, že FSAA do domácích počítačů přinesla společnost 3Dfx a to na známých čipech VSA-100. Výroba karet ale byla opakovaně odložena a než se dostaly do prodeje, rozhodla se společnost nVidia, že nabídne svým zákazníkům FSAA taktéž. A proto do svých ovladačů zahrnula možnost AntiAliasingu. Nešlo o plně hardwarový způsob, jaký nabízela 3Dfx, ale fungoval a to bylo podstatné. Vyhlazování díky těmto driverům bylo možné používat i na kartách TNT a TNT2, ale vzhledem k tomu, že na podobné "vymoženosti" nebyly stavěné a jejich hrubý výkon nebyl tak vysoký, šlo o implementaci spíše "papírovou". ATi ani Matrox tehdy podobný krok neučinily. 

Během uplynulých čtyř let se mnoho změnilo. Ze společností, které tehdy nějakým způsobem ovlivňovaly grafický průmysl zůstala již jen ATi a nVidia. Přestože není rozmanitost konkurentů velká, dostává se AntiAliasingu velké pozornosti ze strany vývojářů, neboť obě společnosti jej považují za jeden z nejpodstatnějších subjektů ovlivňujících kvalitu 3D obrazu.

R420 a NV40 - Full-Scene AntiAliasing

V následujících několika odstavcích se pokusím velice stručně vysvětlit základní principy OverSamplingu, SuperSamplingu a MultiSamplingu; pro přiblížení novinek implementovaných na NV40 a R420 je nutné mít alespoň minimální přehled o jejich principech. Pokud přehled máte, můžete kapitolky o Over- Super- a Multi samplingu bez obav přeskočit. :-)

{mospagebreak title=OverSampling, SuperSampling, MultiSampling}

OverSampling

Vraťme se opět zpátky do časů TNT a GeForce 256. Algoritmus, který tehdy společnost nVidia využila, je specifickou formou SuperSamplingu a nazývá se OverSampling. Ten dokáže fungovat pouze s uspořádanou mřížkou. Z prostého důvodu. Funguje tím způsobem, že obraz je vykreslen ve dvojnásobném rozlišení a poté (pomocí bilineárního filtru) zmenšen. Lidově řečeno, z každé čtveřice pixelů je udělán jeden (a jeho barva je průměrem původních čtyřech)

Názorná ukázka: Chceme vytvořit obrázek za použití FSAA 4x. Zaměřme se na úsek velký čtyři pixely:

R420 a NV40 - Full-Scene AntiAliasing

K realizaci daného problému pomocí OverSamplingu je zapotřebí nejprve vykreslit danou plochu ve dvojnásobném rozlišení.

R420 a NV40 - Full-Scene AntiAliasing

Barva každého pixelu je (jako ostatně vždy při běžném renderingu) určena podle vzorku barvy, který byl spočten pro střed pixelu (červeně).

R420 a NV40 - Full-Scene AntiAliasing

Nyní vytvořený obraz bilineárně zmenšíme na původně vyžadované rozlišení (2x2 pixely). Jinak řečeno, každou čtveřici pixelů (na obrázku modře) nahradím jedním pixelem, jehož barva je dána zprůměrováním barev původních 4 pixelů.

R420 a NV40 - Full-Scene AntiAliasing

Výsledkem jsou žádané čtyři pixely (pozice, kde měly původní pixely střed jsem označil červenými křížky - jsou to vlastně pozice, ze kterých byly odebrány vzorky barvy, podle kterých pak byla vypočtena barva celého výsledného pixelu). Protože jsou pozice těchto vzorků uspořádané (anglicky ordered), říkáme tomuto rozložení vzorků Ordered Grid (OG) (uspořádaná mřížka).

Je asi celkem jasné, že pomocí popisovaného OverSamplingu nelze dosáhnout jiného rozložení pozic vzorků, než uspořádaného. (čtverec i po zmenšení zůstane čtvercem)

Výhody popisovaného režimu jsou prosté: lze ho použít na libovolné grafické kartě, která zvládne vyrenderovaný obraz bilineárně zmenšit (prakticky každá). Další výhodou je, že je zpracován obraz po celé ploše, takže stoupá i kvalita textur. Nevýhod je ale více: Jelikož je nutné spočítat čtyřnásobné množství pixelů, je čtyřnásobně zatížena pixel-pipeline, paměťová sběrnice a rostou i nároky na grafickou paměť (někam se ten velký obraz musí dočasně uložit). V mezní situaci to znamená čtvrtinový výkon. Kvalita výsledného obrazu ale zátěži neodpovídá, takže je lepší tento typ FSAA nepožívat a rovnou si dopřát dvojnásobné rozlišení (pokud to monitor snese). Jelikož nevýhody převažují, přestal být záhy tento postup používán.

SuperSampling

Společnost 3Dfx měla FSAA řešený jiným způsobem. Voodoo 5 byla postavená na dvou čipech VSA-100. Každý čip má dvě pipelines. Celkem 4. Každou pipeline můžeme brát jako samostatnou jednotku, která sama může vykreslit celý snímek. Čtyři pipelines tedy můžou najednou (paralelně) vykreslit čtyři nestejné snímky. A v tom tkví celé kouzlo hardwarového SuperSamplingu. Pokud totiž při OverSamplingu nemůžeme ovlivnit rozložení pozic vzorků, tak zde ano. Vysvětlím:

R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing

První pipeline renderuje obrázek, přičemž vzorky barev nejsou odebírány z centra pixelu, ale na jiném (předem určeném) bodě. Druhá pipeline dělá totéž co první, ale vzorky barvy jsou odebrány zase z jiné pozice. Obdobně třetí a  čtvrtá (obrázky výše). Výsledkem jsou čtyři velice podobné obrázky, ale každý má Aliasové artefakty (např. ty známe "zuby" na hranách) nepatrně jinde. Na závěr jsou tyto čtyři obrázky zprůměrovány v jeden a je hotovo:

R420 a NV40 - Full-Scene AntiAliasing

Protože každá pipeline může vzorky odebírat v jakémkoli místě, které jí určíme, můžeme takto přímo ovlivňovat rozložení vzorků a použít tak jakékoli si usmyslíme (třeba i to neefektivní uspořádané). Samozřejmě je nejlepší pootočené (Rotated-Grid), za moment vysvětlím proč.

Nevýhody SuperSamplingu jsou z části stejné jako u OverSamplingu. Jednoduchou kalkulací dojdeme k závěru, že i zde musíme vytvořit čtyřnásobné množství pixelů, než jaké potřebujeme. Stejně tak rostou nároky na paměť a na sběrnici (zde měla Voodoo 5 výhodu v tom, že každý čip měl vlastní sběrnici i paměť). Díky možnosti rozvrhnout vzorky jak potřebujeme, je ale možné dosáhnout podobného výsledku, jako s OverSamplingem 16x.

Defekty Aliasingu (mám teď na mysli především onu zubatost) jsou viditelné nejvíce na liniích blížících se horizontále a vertikále (téměř vodorovné či svislé linie). Abychom tyto partie co nejefektivněji zbavili zubatosti, potřebujeme, aby pozice vzorků rozdělily pixel na co nejvíce rovin. Počet částí, na kolik tyto roviny pixel rozdělí, pak odpovídá počtu odstínů, které je AntiAliasing schopen na (téměř) horizontálních či vertikálních liniích dopočítat. A jak na schématu vidíte, je počet těchto rovin v případě Ordered-Grid 16x FSAA a Rotated-Grid 4x totožný.

R420 a NV40 - Full-Scene AntiAliasing R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing  R420 a NV40 - Full-Scene AntiAliasing

Při Ordered-Grid 4x je pak toto číslo poloviční.

R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing

Dopady na výkon jsou tedy u OverSamplingu a SuperSamplingu srovnatelné, ale SuperSampling je schopen (díky možnosti použít vhodnější rozložení vzorků) dosáhnout nesrovnatelně lepších výsledků.

MultiSampling

MultiSampling je možné praktikovat několika odlišnými způsoby. Základní myšlenka spočívá v tom, že FSAA použijeme jen na hrany polygonů. Všimněte si té absurdnosti: Vyhlazení je použito jen na určité úseky obrazu a přesto je stále používáno označení Full-Scene! Ale zpět: Na plochu pixelu rozložíme vzorky a tuto situaci porovnáme s pozicemi hran polygonů. Pokud leží všechny vzorky jednoho pixelu na ploše jediného polygonu, je pixel vyrenderován standardně, s použitím jediného barevného vzorku (můžeme říci, že AA zde není použit). Pokud naopak nějaký vzorek leží v jiném polygonu (než ostatní vzorky), je spočtena pro tento vzorek barva. Stejně tak je spočtena barva pro zbylou část pixelu (která leží v jiném polygonu) a jejich zprůměrováním je spočtena výsledná barva. Pokud např. jeden vzorek leží na polygonu A a tři vzorky na polygonu B, je samozřejmě barva z polygonu A započtena jednou a barva z polygonu B třikrát. Ještě jednou chci připomenout, že toto je jeden z možných způsobu a navíc trochu zjednodušený. Pro nás je teď důležité, že textury zůstávají prakticky nedotčeny.

Principielně tedy není pro každý vzorek počítána barva; vzorky a jejich pozice určují pouze poměr, s jakým budou barvy započítány do průměru. Pokud je tedy pixel na rozhraní dvou polygonů, jsou spočteny pouze dvě barvy. Pokud jsou vzorky umístěny na třech polygonech, jsou spočteny tři barvy. Atp., maxima je dosaženo, když každý vzorek leží na jiném polygonu (to je pak nutné spočítat barvu pro každý vzorek). (existují i další způsoby, jak MS aplikovat)

Pokud by čistě teoreticky existovala scéna, ve které je tolik polygonů, že každý vzorek na každém pixelu leží na samostatném polygonu, musí být spočítána barva pro stejné množství vzorků jako v případě SuperSamplingu a k žádné úspoře tudíž nedojde. Proto není výhodné, aby ve scéně bylo velké množství polygonů. Z hlediska MultiSamplingu je lepší, když je scéna tvořena malým množstvím polygonů a kvality je dosaženo pomocí technologií, jako jsou normálové mapy, Bump Mapping či virtuální Displacement Mapping a jiné, které počet polygonů nezvýší (zmíněné technologie jsem popisoval v předchozím článku). Tato problematika je poměrně zajímavá. Lze očekávat, že čím novější hry budou, tím vyšší bude procentuální dopad na výkon při FSAA.

V případě MultiSamplingu je možné použít prakticky libovolné rozložení vzorků, stejně jako u SuperSamplingu.

Myslím, že toto by mohlo prozatím stačit. Pokud by byl zájem, mohl bych napsat samostatný článek, který by vysvětloval úplné základy; zde pro to již není prostor; cíl tohoto článku je jiný. Taktéž chci připomenout, že jsem situaci maximálně zjednodušil a vynechal všechny další hybridní formy FSAA, které se k dnešnímu tématu přímo nevztahují.

{mospagebreak title=GeForce: FX vs. 6800}

V následující tabulce jsou shrnuty všechny specifikace, kterými se postupně probereme.

GeForce FX 5950 Ultra (NV38) GeForce 6800 Ultra (NV40) Radeon 9800 XT
(R360)
Radeon X800 XT Platinum (R420)
Uspořádání vzorků Ordered Grid Rotated Grid Sparse /
Rotated Grid
Sparse /
Rotated Grid
Algoritmus FSAA MultiSampling SuperSampling MultiSampling SuperSampling MultiSampling MultiSampling
Max. vzorků MS 4 4 6 6
Max. vzorků SS 4 2 (RG) / 16 (OG) ? nepodporuje nepodporuje
Max. vzorků celkem 16 8 6 6
Další AA schopnosti - - gamma korekce
(*Temporal AA)
gamma korekce
Temporal AA
Max. vzorků vizuálně 16 8 6 (*12) 12

(*) Implementace prostřednictvím nových ovladačů

Nenechte se plašit některými čísly, která jsou nižší, než u předchozí generace. O výkonu, ani kvalitě to vypovídat nemusí.

GeForce FX vs. 6800

Společnosti nVidia se podařilo učinit velký skok v kvalitě (účinnosti) nově implementovaného režimu. Až dosud totiž používala velice neefektivní uspořádané rozložení vzorků (krom režimu 2x, který byl Rotated). To mělo za následek nepříliš valné výsledky, které nezachránila ani možnost krom MS použít i SS. Dopad na výkon byl pak ještě výraznější a kvalita stále zůstávala pozadu. I SS totiž používal uspořádané rozložení, což nevýraznou účinnost (zdaleka neodpovídající výkonu) vysvětluje.

Po velice dlouhé době nVidia přešla k pootočenému rozložení vzorků (Rotated Grid), což je samozřejmě velmi dobře. Pro nás to znamená mnohem vyšší kvalitu obrazu při použití FSAA. Pro ATi to znamená změnu vlastního rozložení vzorků, protože přece nemůže mít totéž, co konkurence! Zpět k NV40. Jsou podporovány maximálně 4 MS vzorky na pixel, což sice není mnoho, ale na druhou stranu je to díky Rotated-Grid dostačující hodnota. Pokud je použito vyšší rozlišení (1280*1024) s 4x RGMS, nedochází už prakticky k žádným projevům Aliasingu na hranách. 

NV40, jak už jsem zmínil, podporuje i RG-SuperSampling. Maximálně však v režimu 2x. Kvalita však oproti předchůdci (4x OGSS) výrazně horší nebude, díky výhodnějšímu rozložení vzorků bude v mnoha případech na totožné úrovni. Se SuperSamplingem je zde zacházeno poměrně neobvyklým způsobem. Každá scéna je vyrenderována 2x, ale s použitím MultiSamplingu 4x. Když pak obě scény prolneme, dostáváme se na číslo 8 (počet MS vzorků na pixel). Shrnu-li tuto situaci, pak na pixel, který leží celý na jediném polygonu, je aplikován SuperSampling 2x a na ostatní pixely (které leží na hranách) pak MultiSampling 8x... Pozice vzorků SuperSamplingu jsem označil modře, pozice vzorků MS červeně (je dobře vidět, že červené vzorky pocházejí ze dvou původně samostatných pixelů):

R420 a NV40 - Full-Scene AntiAliasing

Tento režim je tím nejkvalitnějším, co nám NV40 může nabídnout. Stačí si spočítat, že pozicemi vzorků prochází 8 samostatných rovin a je jasné, že na hranách extrémně blízkých horizontále či vertikále může poskytnout výsledek srovnatelný s OrderedGrid AA 64x !!! Nesmíme však zapomínat na pokles teoretického fillrate na 1/2. To však není u takto výkonné karty nepřekonatelným problémem, čistě teoreticky by při tomto algoritmu měla poskytovat obdobný framerate, jako GeForceFX při režimu MS 4x (záleží samozřejmě ale i na mnoha dalších faktorech). 

Ještě znovu bych chtěl připomenout vliv SuperSamplingu na textury. Ten je totiž naprosto nedocenitelný, neboť dokáže potlačit i nepříjemné moire (druhotné obrazce na texturách vzniklé kvůli rozdílu mezi velikostí a pozicí pixelů textury a renderovaného rastru, patrné např. při Nature testu 3DMark01 na střeše chatky při použití anizotropního filtru). Také se v některých hrách vyskytnou objekty, které by bylo poněkud zbytečné modelovat z polygonů a pro jejich ztvárnění stačí textura. Problém může nastat v okamžiku, kdy kresba na textuře obsahuje linie, které jsou rozměrově blízké velikosti pixelu, popř. menší. Dovolím si to prezentovat na obrázku:

R420 a NV40 - Full-Scene AntiAliasing

Bílá textura, na ní hnědá linie, černě jsou znázorněny okraje pixelů, červeně střed pixelu, odkud je standardně odebírán vzorek barvy, která je pak použita pro celou plochu pixelu. Vezměme situaci, kdy se pozorovatel oproti textuře nepatrně pohybuje: Snímek "I." - hnědá linie je v pozici, kdy nezasahuje do místa, odkud je odebrán vzorek barvy (B). To znamená, že tato hnědá linie nebude ve výsledním snímku vůbec viditelná (C). Pokud se v následujícím snímku (II.) pozorovatel nepatrně posune a linie se dostane na pozici vzorků (B), bude viditelná, ale její šířka nebude odpovídat skutečnosti (C). Celá animace pak vypadá tak, že na některých snímcích je kresba viditelná, na jiných ne. Toto je specifická forma tzv. SubPixel Flickering(u). Jelikož se celá toto vizuální "nepříjemnost" neodehrává na hraně polygonu, ale na textuře, tak s ní MultiSampling vůbec nic nezmůže. Naopak SuperSampling je schopen tento defekt velice snadno potlačit (samozřejmě účinnost odpovídá množství a pozici vzorků).

Kromě moire a SubPixel Flickeringu je tu ještě jeden prvek, který stojí za zmínku. A tím jsou stíny. Běžné stíny mívají na okrajích zuby (Aliasing). MultiSampling zde opět nic nezmůže,  SuperSampling samozřejmě i zuby na okrajích stínů vyhladí.

{mospagebreak title=Radeon X800} 

ATi začala s implementací FSAA poněkud později. Zato však prostřídala větší množství různých režimů. A za celou dobu tohoto vývoje se jakoby snažila všemožnými prostředky odlišit od konkurence. Nepříliš výrazný SuperSampling na R7x00 byl vystřídán (opět) SuperSamplingem, ale s velmi zajímavě rozloženou pozicí vzorků (každá n-tice pixelů má pro každý pixel určen jiný vzorek; n=počet vzorků na pixel). S Radeonem 9700 teprve ATi přešla na MultiSampling; s pootočeným rozložením vzorků (Rotated Grid). SuperSampling byl úplně opuštěn. Nyní ATi přináší opět nové rozložení vzorků (vycházející více-méně z RotatedGrid), které nazývá Sparse.

Sparse Sample Location

Slovo Sparse bychom mohli přeložit jako rozptýlený, řídký. Překlad ale není příliš vhodný. Pokusím se to vysvětlit. Ale od začátku. ATi velice ráda mění nastavení pozic vzorků přes ovladače. Takže co byla pravda včera, už nemusí platit dnes. Původní rozložení vzorků pro DX9 Radeony (9500-9800XT) bylo pootočené (Rotated Grid). A to pro všechny tři módy (2x, 4x, 6x). Po čase ale ATi změnila rozložení pozice vzorků při režimu 6x (tuším, že to bylo zároveň s vydáním 9800 v souvislosti se specifikacemi SmoothVision 2.1, ale nějak jsem to tehdy nepostřehl). Stejně jako na předchozích generacích, i tentokrát se ATi chtěla blýsknout něčím, co nikdo jiný nemá. Takže Sparse system byl použit i pro režim 4x.

Jaký je rozdíl mezi Sparse a Rotated Grid?

R420 a NV40 - Full-Scene AntiAliasing R420 a NV40 - Full-Scene AntiAliasing

Stejně jako RG, tak i SG (Sparse Grid, i když to zní blbě, dovolím si to použít jako pracovní název) se snaží rozmístit vzorky tak, aby rozdělily pixel na maximální možný počet částí. Tím je zaručena vysoká účinnost na hranách. To by ale oproti předchozímu systému nic nového nepřineslo. Hlavní odlišnost tkví ve faktu, že vzájemná lokace pozice vzorků už není pravidelná, ale je neuspořádaná. To má za následek jistý psycho-vizuální efekt. Jakkoli uspořádané rozložení vzorků má jednu nevýhodu: pravidelnost samu o sobě. A jelikož lidské oko (a tady spíš mozek) je na pravidelnost extrémně citlivé (víc, než si možná připouštíme), dokáže pozůstatky Aliasingu vypozorovat, i když jsou přeneseny na vyšší frekvence. Neuspořádané rozložení ale dokáže Aliasing převést na šum, ve kterém už oko žádnou pravidelnost nezachytí a je takto "oklamáno"; obraz vnímá, jako by byl kvalitnější, než ve skutečnosti je (nezachytí Aliasing, tudíž obraz vypadá výrazně lépe). Tahle teorie hodně nahrává ATi. Až moc na to, aby v tom nebyl háček. Háčky jsou a hned dva: Rozložení vzorků na jednom pixelu je sice nepravidelné, ale pro všechny pixely je použito stejné rozložení, takže jakási pravidelnost stále je. Ten druhý problém je fakt, že aby celý tento princip začal bezvadně fungovat, je k tomu zapotřebí přibližně šestnácti vzorků na pixel :-). Teprve pak je Aliasing skutečně "rozdroben" na bílý šum, pro oko nezachytitelný. Tím samozřejmě nechci novinku od ATi podvrhovat, jen doplňuji zbytek pravdy. SG ale v praxi může být opravdu mnohdy výhodnější než standardní RG, ale tak divoce, jak to prezentuje ATi, bych to rozhodně neviděl. Následuje malá ukázka z whitepaperu, vypadá sice pěkně, ale je to opravdu hodně specifická situace vybraná tak, aby maximálně novinku "vynesla".

R420 a NV40 - Full-Scene AntiAliasing
Kliknutím se schéma zvětší

Gamma korekce

Tato patentovaná technologie byla přítomna již na předchozích DX9 Radeonech, ale ATi ji i nadále používá, zmiňuje a vychvaluje. Vzhledem k tomu, že ATi se vydala zajímavou cestou (na základě psycho-vizuálních zásad dostat z minima vzorků maximální AA efekt) by bylo vhodné tento prvek stručně probrat. Prohlédněte si následující obrázek:

R420 a NV40 - Full-Scene AntiAliasing

Na první pohled se zdá, že jeden horní čtvereček je bílý, druhý šedý a spodní dva jsou černé. Ve skutečnosti tomu tak není. Mezi spodními dvěma je stejný rozdíl (25 odstínů), jako mezi oběma horními (taktéž 25 odstínů z 256 barevných odstínů grayscale). Že se nám zdá rozdíl u spodních dvou barev menší (až neznatelný) je způsobeno dvěma faktory. Tím prvním jsou schopnosti a nastavení zobrazovacího adaptéru (monitor). Monitory jsou obvykle seřízeny tak, aby obraz vypadal kontrastně a výrazně (nebyl šedivý), což má za následek menší vizuální rozdíl mezi tmavými odstíny (zdají se nám totožné), než mezi světlými (rozdíl je viditelný i mezi dvěma sousedícími odstíny grayscale palety). Druhým faktorem jsou opět omezené schopnosti lidského oka, které je citlivější na světlé odstíny (což je ve scénách s kompletním jasovým rozsahem ještě umocněno tím, čemu běžně říkáme oslnění).

R420 a NV40 - Full-Scene AntiAliasing
Kliknutím se schéma zvětší

Na obrázku od ATi je patrné, že mezi odstíny dopočítanými AntiAliasingem (mimochodem je použité starší rozložení Rotated Grid) se díky výše zmíněným faktorům nezdají být stejné barevné (resp. jasové) rozdíly. Pravé 3 odstíny se jeví jako stejné (či podobné), tzn. že dva vzorky byly použity zbytečně (a je tedy mrháno výkonem). ATi přišla s nápadem provést gamma korekci (míra kontrastu) aby byl rozdíl mezi každými dvěma sousedícími odstíny vizuálně stejný (či podobný). V praxi to znamená až o 50% (vizuálně) lepší vyhlazení.

Pro shrnutí a uvedení "na pravou míru": Tato technologie neupravuje kontrast celého obrazu jako kompenzaci snížení kontrastu vlivem FSAA! S tímto tvrzením jsem se několikrát setkal, ale rozhodně není univerzálně pravdivé. V určité specifické situaci by se možná o něm dalo uvažovat, ale rozhodně ne obecně.

{mospagebreak title=Radeon X800 - pokračování}

Temporal AntiAliasing

Krom tohoto se ATi rozhoupala i k trochu radikálnějšímu kroku a tím je implementace něčeho, co ATi nazvala Temporal AntiAliasing. Jako Temporal AntiAliasing (dále TAA) byl původně označován efekt Motion Blur, který minimalizuje dopad diskrétního snímkování. Tím se ale zabývat nebudeme. Temporal AntiAliasing není také žádnou novinkou, na papíře už existuje několik let. Princip se pokusím vysvětlit na co nejjednodušším modelu. 

OG AntiAliasing (resp. jeho rozložení vzorků) je možné praktikovat dvěma způsoby. Horizontálním a vertikálním. Při horizontálním jsou vzorky řazeny vodorovně (v praxi toho lze snadno dosáhnout renderingem scény ve dvojnásobném horizontálním rozlišení a následovným zmenšením obrazu na požadovaný rozměr). Tento režim je vhodný pro scény, kde převažují svislé linie, protože je dokáže slušně vyhladit. Na vodorovné linie vůbec výhodný není (pozice vzorků se ve vodorovném směru překrývají), protože jeho účinnost je na nich prakticky nulová.

R420 a NV40 - Full-Scene AntiAliasing

Druhý způsob je vertikální rozložení. Nebudu to protahovat, vše je opačně, než v předchozím odstavci, takže slušná účinnost na linie blízké horizontále, mizivá na linie blížící se vertikále.

R420 a NV40 - Full-Scene AntiAliasing

Mohlo by se zdát, že s touto "mizernou" výbavou není možné dosáhnout obrazu, který by byl vyhlazen v obou směrech. Ale což použít pro jeden renderovaný snímek první algoritmus (horizontální) a pro druhý snímek ten druhý algoritmus (vertikální) a takto je při renderingu střídat! Pokud bude snímková frekvence dostatečně vysoká, budou následující snímky splývat a obraz bude vypadat, jako by byl vyhlazen v obou směrech, horizontálně i vertikálně; prostě jako kdyby byl použit FSAA 4x:

R420 a NV40 - Full-Scene AntiAliasing

A takto nějak by vypadalo výsledné rozložení vzorků. Pokud bychom si ale udělali screenshot, bylo by na něm patrné jen vyhlazení v jednom směru (podle toho, zda bychom "típli" sudý, nebo lichý snímek).

Situaci jsem zjednodušil, jak to jen šlo. ATi totiž při TAA využívá speciální rozložení vzorků, aby jejich prolnutí dávalo maximálně výhodné pokrytí pixelu:

R420 a NV40 - Full-Scene AntiAliasing

Velké plus temporálního AntiAliasingu je, že s výkonnostním dopadem režimu "n" dokáže podat kvalitu režimu "2*n" (výkon je jako při FSAA 2x, ale kvalita jako při FSAA 4x). Ovšem i zde je jeden háček. Je zapotřebí vysoká snímková frekvence. Pokud by totiž byl framerate příliš nízký, dojde k nepříjemnému defektu: Sudé a liché snímky nebudou vizuálně splývat a rozdíly mezi nimi budou pozorovatelné, jako "zrnění" či "šum" na hranách objektů. Nejvhodnější řešení je stanovit mezní framerate a poklesu pod tuto hranici TAA nahradit standardním režimem FSAA (bude nižší kvalita FSAA, ale nedojde ke zmíněným defektům). Tento framerate však musí být dosažen se zapnutou vertikální synchronizací, neboť pouze tak lze zajistit, aby se na monitoru skutečně zobrazovaly celé liché a celé sudé snímky.

ATi slíbila implementaci TAA na všechny DX9 kompatibilní Radeony (9500+). To samozřejmě není problém. Teoreticky je to možné na jakékoli kartě, která umí AntiAliasing (prosté střídání rozložení vzorků mezi sudými a lichými framy by neměl být problém). Abych byl přesný. TAA je možné provozovat i na kartách, které AntiAliasing vůbec neumějí! Je k tomu zapotřebí jakási slušná HW výbava (rozebírat to nebudu, od toho tu tentokrát nejsme), ale možné to je. Stačí, aby karta byla schopna měnit pozici, ze které je odebírán barevný vzorek. Následovně:

R420 a NV40 - Full-Scene AntiAliasing

Vzorek pro liché snímky třeba z levého horního rohu pixelu, pro sudé pak z pravého dolního.

R420 a NV40 - Full-Scene AntiAliasing

Když pak oba prolneme, dostáváme velice efektivní Rotated Grid AntiAliasing 2x, který je kvalitativně srovnatelný s Ordered Grid AntiAliasingem 4x (OG AA 4x používala např. PowerVR na Kyru a nVidia na sérii GeForce po řadu FX). Takže BEZ JAKÉKOLI ztráty výkonu je možné získat obraz kvalitativně srovnatelný s obrazem s FSAA OG 4x !!!

R420 a NV40 - Full-Scene AntiAliasing

Jakého úspěchu se TAA dočká se teprve dozvíme. Krom ATi se ho rozhodli implementovat i vývojáři softwarové podpory pro karty 3Dfx (konkr. pro čipy VSA-100) a musím oznámit, že projekt je již hotový. Více informací a TAA Glide ke stažení zde.

Opět bych chtěl poopravit jeden "drb", který tvrdí, že při TAA je v méně náročných scénách, kdy je framerate na vysokých hodnotách, použito větší množství vzorků (vyšší hodnota FSAA) a v případě náročnějších scén se opět hodnota snižuje. To není pravda, počet vzorků je stále stejný. Popsaná technologie je tzv. Dynamic AntiAliasing (dynamický anti-aliasing), o kterém už bylo několikrát mluveno, ale do reálu se ještě nedostal.

{mospagebreak title=Shrnutí a Závěr}

Protože se cesty vývoje FSAA obou společností dosti rozcházejí, je velmi těžké dospět k nějakému objektivnímu srovnání. ATi se snaží z minima ždímat maximum a kupodivu se jí to ještě stále daří. nVidia udělala opravdu velký krok definitivním upuštěním od Ordered Grid. Taktéž její SuperSampling nabízí to, co ATi nabídnout nemůže: Vliv na textury. Je nutné připomenout, že dopad na výkon je při SuperSamplingu značný, ale pokud nejde o nejnovější hry s maximálními detaily, tak síla GeForce 6800 na jeho utažení stačí. Starší hry pak tento režim přenese na úplně jinou úroveň.

Ale jak se říká, nikdo není dokonalý, takže se musíme smířit s nějakým kompromisem. nVidia nám nabídne vynikající SuperSampling (2x/8x), který sice nebude úplně "tip-ťop" pro nejnovější hry, ale z majority ostatních her udělá grafické skvosty; ATi zase TAA, který v kombinaci s FSAA 6x dosáhne úrovně kvality odpovídající dvanácti vzorkům na pixel (FSAA 12x), což už se těsně blíží oněm vzpomínaným 16 vzorkům potřebným k převedení Aliasu na bílý šum... Takže vybírejte s rozmyslem.

Všechno má své pro i proti a stejně tak má většina lidí svého favorita v podobě jedné společnosti. Autory renomovaných zahraničních webů nevyjímaje. A proč to sem pletu? Protože velké rozdíly ve způsobech implementace FSAA obou firem dávají těmto recenzentům neskonalé možnosti, jak svého favorita vynést.

  • Máte rádi nVidii? Použije pro test FSAA SuperSampling a nějakou scénu, kde je textura, která nese nějaké tenké linie a neméně důležitá je přítomnost většího množství stínů! To vše NV40 vyhladí a R420 oproti tomu bude se zubatými stíny (a nedokonalou texturou s přerušovanou kresbou) vypadat jako učedník.
  • Máte rádi ATi? Použijte třeba screenshot ze 3D Marku, při němž bude krom FSAA (u obou karet) zapnuto i anizotropní filtrování (aby byl rozdíl na texturách minimální) a screenshot doplňte i hodnotou framerate. Rozdíl na hranách bude mezi režimem 8x (nVidie) a SG GC 6x (ATi) minimální, rozdíl na texturách ještě menší, ale framerate bude mít R420 více než dvojnásobný.

Nevěříte že tomu tak je? Věřte - stačí se trošku porozhlédnout :-)

Pokud je pro vás FSAA důležitým faktorem, podle kterého si vybíráte grafickou kartu, nevěřte všem obrázkům, screenshotům a testům, které vidíte kolem a zkuste se raději rozhodnout podle toho, co vám bude vyhovovat. Vyberte podle typu her, které budete nejvíce hrát. Myslím, že se protentokrát nebudu mýlit, když si dovolím napsat, že ať se rozhodnete jakkoli, určitě nešlápnete vedle.

Závěrem bych se chtěl obrátit ke čtenářům: protentokrát jsem "nekopíroval" whitepapery (což mi bylo minule vytknuto :-), ale použil jsem z většiny vlastní obrázky. Jak jsem se již jednou zmiňoval - kdyby byl zájem, mohu napsat samostatný článek o FSAA buďto zaměřený na úplné základy, nebo shrnující vše (všechny režimy), co se dosud na poli "konzumního grafického průmyslu" objevilo.

Článek vychází i z materiálů dostupných na těchto webech:

http://www.no-X-files.webz.cz/3dfx/fsaa.htm
http://www.ati.com
http://www.nvidia.com

 
Komentáře k článku
RSS
Pouze registrovaní uživatelé mohou přidat komentář!
19.5.2004 12:46:09   0.0.0.xxx 10
Tak sem zase jednou prvni ja. A ted si jdu vklidu precist clanek...
19.5.2004 12:57:29   0.0.0.xxx 11
chjo
19.5.2004 13:20:43   0.0.0.xxx 10
tak jsem treti :-)

mno shrnuti a data vydani by nebyla spatne,
treba porovnani 3dfx RGMS a ten z NV40
pokud se to da porovnat a ten co ma Parhelia
19.5.2004 13:29:28   0.0.0.xxx 10
Celkom OK citanie
19.5.2004 13:39:05   0.0.0.xxx 10
ale super clanok aspon som trosku v obraze.Teda ale asi to budem musiet prestudovat este raz;-) Jo clanok o FSAA od zakladu by nebol zly ..mozno pre niekoho nudny alebo nepotrebny ale je urcite kopa takych co by zaujal.PIVU ZDAR
19.5.2004 13:53:19   0.0.0.xxx 10
Beru to v potaz :-)
19.5.2004 14:10:17   0.0.0.xxx 10
Mas velmi pekny clanek, jen bych rad podotkl, ze u GeForce 6800 je jeste jeden rezim AA, jedna se o 8xM, coz je kombinace Super/MultiSamplingu s castecne pootocenym rastrem. Je zde pouzit dvojnasobny SuperSamling (4x)ve srovnani s cistym 8x. Proto i to tvrzeni, ze 6800 podporuje jen 2x SS je jen castecne pravdive.

Nechci delat chytryho, ale ted jsem psal o X800 pro konkurenci, tak jsem toho dost precetl, predevsim z 3D Center.
19.5.2004 14:11:23   0.0.0.xxx 01
tak tomu vravim clanok urceny na odborny server a nie tie drby typu kto zas dusikom vydusil procak na 4000000........ GHz (aj tak ho v reale dusikom chladit nebude..)

taketo clanky citam rad a autorom drzim palce pri priprave dalsich podobnych

DAKUJEM
19.5.2004 14:14:55   0.0.0.xxx 11
Děkuji za hodnocení :-)
19.5.2004 14:30:30   0.0.0.xxx 10
Taky jsem na to někde narazil, ale jinde pak i na tvrzení, že zmíněná kombinace 2xSS/8xMS je maximum (možná to záviselo na prvotních driverech). Zatím jsem chtěl zmínit jen to, co je opravdu 100%tní. (ta prezentace vzorků na 3D center se mi občas trochu nezdá, nevím) No nic. Dík za zmínku.
19.5.2004 14:41:11   0.0.0.xxx 01
Jojo, taky jsem cetl neco o ovladacich, proto jsem psal, ze to je jen "castecne" pravda. Nikde uz totiz nepsali od jake verze ovladacu to je jinak.
19.5.2004 14:43:30   0.0.0.xxx 01
Pěkný článek. Na úvod. Bylo by možné udělat rozsáhlejší/podrobnější článek na toto téma? Je jasné, že téma je rozsáhlé, ale třeba jako seriál ...
19.5.2004 14:45:04   0.0.0.xxx 01
Chci článek o všech režimech, dík.
19.5.2004 15:00:22   0.0.0.xxx 11
Zatím je to prakticky jedno. Už takhle má nVidia prvenství ve vlivu na textury (vlivem FSAA) a ATi je zase na prvním místě v poměru kvalita/výkonnostní propad (tedy efektivita) a tenhle jeden nejistý režim to nijak neovlivní. Budu se snažit něco zjistit, ale dokud (a pokud) tu kartu nebudu mít v ruce (v kompu), asi se přesvědčit moc snadno nenechám ;-)
19.5.2004 15:40:38   0.0.0.xxx 10
No konečně něco pučnějšího,jen tak dál
19.5.2004 18:24:09   0.0.0.xxx 10
Neda mi to a opet si rypnu:

"Pokud by čistě teoreticky existovala scéna, ve které je tolik polygonů, že každý vzorek na každém pixelu leží na samostatném polygonu, musí být spočítána barva pro stejné množství vzorků jako v případě SuperSamplingu a k žádné úspoře tudíž nedojde."

Tohle (a odstavec predtim) je uplne spatne. Pocita se VZDY JEDINY barevny vzorek. Rozdily na hranach spocivaji pouze na tom, jestli je uvnitr (zapise se) nebo mimo (nezapise se). Vzdy se provadi rasterizace jedineho trojuhleniku a o vedlejsim nema pipeline ani sajnu...
19.5.2004 21:33:15   0.0.0.xxx 01
Hlásím se též - opravdu bych ocenil komplexní článek o vyhlazování (obrazu :-) Autorovi chvála!
20.5.2004 09:21:41   0.0.0.xxx 10
Jestli jo....tak to bude dost good - už se těšim na TAA na mym 9500Pro:-) V-Sync mam stejně zapnutej (kromě benchmarků) protože "tekoucí" obraz se mi fakt nelíbí, takže co!
20.5.2004 11:24:04   0.0.0.xxx 01
Nemůžu mluvit za ATi, ale podle mě tentokrát slovo dodrží. Implementace není složitá. Jen bude škoda ten pevný limit 60FPS. Snad to půjde přes registry nějak poupravit. V případě vyššího množství použitách vzorků (4x) totiž mezi snímky nejsou na hranách tak velké rozdíly, aby byl výše zmíněný framerate nutný. Co jsem zkoušel na V5, tak ve většině případů i při 45FPS vypadá 2x RGSS +TAA lépe, než 2x RGSS bez TAA! I když to může být značně subjektivní.
20.5.2004 13:01:00   0.0.0.xxx 10
Ak by sa do toho autorovi chcelo, velmi rad by som privital ten clanok o ktorom na konci spominal- Vsetko o FSAA
Budem cakat...
20.5.2004 13:07:38   0.0.0.xxx 11
Dobře, o něco se pokusím. Snad bude redakce souhlasit ;-). Nejdřív chci ale vyřešit tu si tuaci s MS, ať se vše objasní. Čekám na email od xR-> ;-)
21.5.2004 06:28:52   0.0.0.xxx 00
Nevite negdo jak funguje Accuview Antialiasing?
21.5.2004 09:20:46   0.0.0.xxx 10
Toto není žádný název pro specifický režim; je to marketingové označení pro soubor několika různých režimů, které používá (-vala) společnost nVidia. Pokud se dobře pamatuji, spadá tam 2x OGMS (=Ordered Grid MuliSampling), 4x OGMS, Quincunx -tj. 2x Rotated Grid MultiSampling se sdílením 3 sousedních subpixelů(~vzorků) a dvojnásobnou váhou středního pixelu oné pětice:

http://www.no-x-files.webz.cz/3dfx/articles/fsaa/samples_quincunx_new.png

a jako poslední je to režim nazvaný 4xS, což je směs 2x OG SuperSampling a 4x OG MultiSampling (případně 4x Semi-Rotated MultiSampling).
21.5.2004 15:19:16   0.0.0.xxx 01
No, mě připadá 4X FSAA úplně dostačující - hraju většinou v 1024*768 nebo 1280*960. Takže v případě TAA by se vlastně použilo 2x FSAA a tam si myslim je 60fps celkem bez problémů dosažitelné.
Problém vidím v náhlých poklesech (swapping, výměna textur v paměti, ...) - aby to nedopadlo tak, že v těhle okamžicích se FSAA vypne a na těch několik okamžiků uvídíme nefiltrovaný obraz (a nebo se zapne normální 4x FSAA, čímž se propad ještě zvýší...taková malá kladná zpětná vazba..čím to jde pomalejc, tím vyšší FSAA ..až to skončí úplně ve sračkách:-))
21.5.2004 15:21:37   0.0.0.xxx 11
To zní logicky...tak se nějak domluvte...ať může vyjít oprava nebo tak něco (třeba samostatnej článek o Multisamplingu?;-))
21.5.2004 20:27:17   0.0.0.xxx 10
Třeba na pctuningu není. :-(

:-) Super článek :-) , a také prosím o komplexnější zpracování problematiky Antialiasingu.
22.5.2004 18:26:32   0.0.0.xxx 10
Vyborny clanek - jen tak dal.
23.5.2004 10:22:21   0.0.0.xxx 01
S xR-> jsme se dohodli přes email. Já jsem popisoval výsledek, nikoli postutp (jakým je MS prováděn) a byl jsem špatně pochopen :-). Už je to OK
23.5.2004 10:34:50   0.0.0.xxx 01
Nee. Vezměme v úvahu např. režim 4x. Pokud aktivuješ TAA, mělo by to používat stejný počet vzorků, jako se standardním FSAA (zde 4ks), ale kvalita bude zhruba dvojnásobná (jako při 8 vzorcích). V okamžiku, kdy framerate klesne pod 60fps nedojde k deaktivaci FSAA, ale jen se vypne TAA (takže to bude vypadat jako při normální 4x FSAA) - žádná katastrofa. Zatížení vlivem fsaa tedy bude stále stejné.
23.5.2004 10:38:04   0.0.0.xxx 11
Je! Tady vpravo nad diskuzí!
28.5.2004 13:38:50   0.0.0.xxx 10
taky se pripojuju k zadatelum o podrobny clanek o FSAA.
2.6.2004 19:51:31   0.0.0.xxx 00
Jéééé, prostě jsem slepejš. |-)
27.7.2004 20:47:59   0.0.0.xxx 11
Konečně jsem se zase něco dozvěděl, chyby nedokážu posoudit, když se v tom tak nevyznám, ale aspoň něco jsem pochytil a to je fajn!

Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz

0 čtenářů navrhlo autorovi prémii: 0Kč 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.