Mnoho společností se snažilo vyvinout vlastní cestu, jak aliasing odstranit. Některé preferují
nejvyšší kvalitu, některé nejvyšší rychlost, popř. výhodný kompromis. Pokusím se přiblížit, jaké algoritmy
se používají.
|
Takto by vypadal detail ideálního obrazu, kdybychom nebyli omezeni pixely. |
|
A takto obraz vypadá ve skutečnosti. barva celého pixelu je určena podle odstínu, který je uprostřed
pixelu "ideálního" obrazu (de-facto je odebrán jeden vzorek na každý pixel). |
Tím je samozřejmě drasticky snížena přesnost a věrnost obrazu. Např. pátý pixel zleva je
z nějakých 45% tvořen zelenou barvou. Ve výsledku je bílý, protož vzorek barvy byl odebrán z centra pixelu,
které je bílé. AntiAliasing umožní zvýšení přesnosti odebráním více než jednoho vzorku. Kromě množství vzorků
záleží velice i na místech, odkud budou odebrány a vzájemné pozici těchto míst.
3Dfx
Rotated-Grid SuperSampling
Společnost zastávala Rotated-Grid, tedy pootočené rozložení subpixelů. To převzala od blízké
společnosti Quantum 3D, která ho využívala na svých grafických systémech (založených především na voodoo3).
Systém vyrenderoval požadovaný počet snímků (které byly renderovány z několika nepatrně odlišných pozic
daných pozicí vzorků a ty pak byly prolnuty tzv. Rotated-Grid FSAA Compositorem.
3Dfx tento algoritmus (označovaný
jako Rotated-Grid SuperSampling) převzala a kompozitor nahradila T-Bufferem. V této podobě se FSAA objevil na
VSA-100. Tento algoritmus není jednoduché zařadit. Dodnes se vedou pře, zda jde ve skutečnosti o SuperSampling
nebo MultiSampling. Podle "IV" bodu jde o MultiSampling, toho se budu držet. Princip jsem popsal celkem podrobně ve článku
VSA-100. Jelikož tento režim funguje na základě vícenásobného renderingu celého obrazu,
snižuje se drasticky výkon (fillrate) a při režimu 4x klesá fillrate na 1/4. V případě Voodoo 5 - 5500 to odpovídá
zhruba fillrate Voodoo 2 nebo Velocity 200. Tuto cenu pak kompenzují kvality algoritmu.
Jelikož jsou vzorky rozmístěny pravidelně, může vést použití RGSS k vyšší kvalitě textur. Vzájemná pozice
vzorků pak vede k vysoké účinnosti v potlačení Subpixel Flickeringu a Pixel Poppingu.
|
Rozložení Subpixelů (vzorků) |
|
A výsledek |
Rotated-Grid MultiSampling
3Dfx si samozřejmě nedostatku v podobě drastického propadu výkonu byla vědoma a při vývoji
nadcházejícího projektu Rampage na to bylo pamatováno. Byl implementován optimalizovaný algoritmus nazývaný
Rotated-Grid MultiSampling, který vychází ze stejných principů, jako předchozí varianta. RGMS splňuje všechny
4 podmínky MultiSamplingu, takže již jde o 100%tní MultiSampling. Největším rozdílem je tedy rychlost
a fakt, že nejsou
afektovány textury. Jelikož se mi nepodařilo sehnat obrázek vytvořený za použití 3Dfx RGMS (možná že ani žádný takový
neexistuje), tak nelze přesně určit kvality tohoto AntiAliasingu. Pokud bych vycházel z dostupných zdrojů, tak
lze předpokládat, že AA kvalita by byla stejná jako RGSS, ovšem RGMS by byl výrazně rychlejší. řekl bych,
že propad výkonu by byl nízký, možná na úrovni dnešních DX9 kompatibilních karet. Na jednu stranu nový M-Buffer,
který měl být zárukou rychlého zpracování, na druhou stranu absence Z-komprese, takže si závěr radši udělejte sami.
Aby textury nezůstaly zkrátka, obsahuje Rampage i vysoce kvalitní (alespoň podle specifikací) Anizotropní filtr,
ale to už je jiná kapitola.
Stochastic MultiSampling
O dalších projektech 3Dfx je toho známo velmi poskrovnu, ale je jisté, že jako
další krok by byl implementován tzv. Non-Ordered (Stochastic) Sampling, což je náhodné rozmístění vzorků. Pokud vám to
něco připomíná,
tak je to algoritmus částečně podobný ATi SmoothVision (SmoothVision 1.x zpracovává celou scénu, SmoothVision 2.x
jen hrany a okraje... SV ale nevyužívá náhodně generovaného vzorku do takové míry). Základní principy jsou stejné
jako u RGMS, ale jednotlivé vzorky jsou umístěny nepravidelně.
To má za následek převedení Aliasu na šum, který je pro lidské oko těžko zachytitelný. Ve výsledku lze dosáhnout vyšší
účinnosti AntiAliasingu s použitím menšího množství vzorků (= nižší hw nároky). Na druhou stranu je nutné připomenout,
že v případě použití této metody při zpracování celé scény může docházet vlivem nepravidelného
uspořádání subpixelů k snížení ostrosti textur. 3Dfx hodlalo algoritmus používat jen jako MultiSampling, což znamená,
že ve výsledku by textury afektovány nebyly.
nVidia
Ordered-Grid SuperSampling
Společnost nVidia zpřístupnila AntiAliasing pro své grafické karty (RIVA TNT/TNT2
i GeForce 256/2).
od série Detonátorů 5.xx je možné AntiAliasing používat. jelikož je FSAA na těchto kartách realizován jen softwarově,
nelze čekat ani žádný převratný algoritmus. Použitý je Ordered-Grid SuperSampling (známý také pod termínem "OverSampling"),
tedy rendering ve vyšším rozlišením s následným
převzorkováním na požadované rozlišení. Tento režim nemá příliš výraznou účinnost, zvlášť na liniích blížících se horizontále
a vertikále. obraz je vytvářen ve vyšším rozlišení, takže dopady na výkon jsou velmi výrazné.
TNT a GeForce ale nebyly na FSAA stavěny, takže poměrný propad je ještě o nějakých 5% větší (Q3A, 640*480, PIII 1Ghz,
demo001), než v případě Voodoo 5. Původně umožňoval režimy 2x2 a 1,5x1,5 (volitelně možností "HQ").
Dnes jsou již použita standardní označení 4x a 2x. Jelikož jde o standardní OverSampling, zvýší algoritmus
kvalitu textur.
|
|
OGSS 4x. |
OGSS 2x nVidia používá v případě režimu 2x
tzv. vertikální OGSS, což znamená,
že vzorky jsou rozloženy vertikálně (v praxi se obraz renderuje ve vertikálně 2x vyšším rozlišení, zatímco
horiz. rozlišení je zachováno). Výsledkem je vyhlazení hran, které se nacházejí do cca +-45° od horizontály.
Nevím, proč byl vybrán zrovna vertikální režim, ale pravděpodobně kvůli převaze linií blížících se horizontále ve 3D
(např. křídla letadel v simulátorech) |
|
Rozložení Subpixelů (vzorků) |
|
A výsledek. Pokud by byl úhel linie ještě nepatrně menší,
došlo by k známému
defektu. Dvojice subpixelů by vůči linii byla téměř v zákrytu, takže by polovina subpixelů zůstala de-facto
nevyužita. Ve výsledku by režim 4x pouze brzdil rendering, protože jeho účinnost by odpovídala režimu 2x. I se
stávajícím úhlem si OGSS příliš "neví rady", protože přechodové odstíny mezi bílou-půlzelenou-zelenou zabírají
jen jeden pixel. |
HRAA (2x / 4x MultiSampling)
Od GeForce3 je podpora FSAA již plně hardwarová. Tzv. HRAA, neboli
High Resolution AntiAliasing, je označení nVidie pro Ordered-Grid MultiSampling. Je poukazováno na
fakt, že algoritmus je schopen běhat i při vyšších rozlišeních, aniž by snížil framerate pod úroveň hratelnosti.
To je způsobeno faktem, že jde o MS; upraveny jsou tedy jen hrany polygonů.
Z tohoto režimu pak vycházejí následné algoritmy.
Quincunx (aka 2x HRAA 5-tap FSAA)
GeForce3 (a všechny následné čipy nVidie) dále disponují režimem Quincunx. Podle vyjádření společnosti by měl být schopen
při rychlosti
režimu 2x podávat kvalitativní výsledky režimu 4x. V podstatě jde o FSAA 2x, ale do výpočtu barvy pixelu
jsou zahrnuty i 3 vzorky z nejbližších pixelů.
Ve výsledku dochází ke snížení ostrosti obrazu, protože barevná interpolace mezi pixely je ve své podstatě bluring.
|
Quincunx Jde o MultiSampling 2x, přičemž
jeden ze vzorků
je odebrán v centru pixelu a druhý v úplném rohu. Ještě jsou (stále pro tentýž pixel) použity
3 nejbližší vzorky ze 3 sousedních pixelů. Vzorek z centra pixelu je do průměru počítán 2x.
|
|
Quincunx (nová verze) Od GeForce 4 byla změněna pozice vzorků.
nVidia udává, že odebrání vzorku v rohu pixelu vnáší (vzhledem k velké vzdálenosti od centra pixelu)
příliš velkou barevnou chybu, proto byly pozice vzorků přesunuty, aby byly umístěny souměrně se středem pixelu.
|
4x HRAA 9-tap FSAA
Je logické, že když se objevil "optimalizovaný" FSAA 2x (Quincunx), že dojde
i na FSAA 4X. Výhody i nevýhody jsou totožné s Quincunxem (vyšší účinnost, než s běžným MS 4x, ale
snížená ostrost obrazu).
|
HRAA 4x 9-tap Jde o MultiSampling 4x, přičemž
do výpočtů jsou zahrnuty údaje z pěti vzorků tří sousedních pixelů. Centrální vzorek je
do průměru započten 4x, rohové vzorky 1x a ostatní 2x.
|
4xS, 6xS, 8xS
Jsou režimy, které se (postupně) objevily na GF4Ti a GF-FX. Jde o jakousi
směs MultiSamplingu se SuperSamplingem. Celá scéna je vyrenderována ve vyšším rozlišení (SuperSampling) a na hrany
polygonů je ještě aplikován MultiSampling.
režim |
úroveň SS |
úroveň MS |
4xS |
2x |
2x |
6xS |
2x |
4x |
8xS |
4x |
4x |
Matrox
Ordered-Grid SuperSampling
Společnost Matrox na sebe během své historie 3x výrazně upozornila. Poprvé to bylo kartou
MGA, která (2D) výkonem předehnala ATi (Mach64), do té doby "krále" grafiky. Podruhé, když vydala G400,
grafickou kartu, která nejen že jako první kompletně splňovala API MS Direct3D DirectX 6.0, ale výkonnostně byla srovnatelná
s TNT2 nebo Voodoo3. Pak se společnost na dlouhou dobu odmlčela a dalším výrazným krokem byla až Parhelia 512.
První 512 bitové grafické jádro, první s 256 bitovou paměťovou sběrnicí, první čip připravený na AGP8x (vydané karty ale
podporují "jen" AGP4, takže první karta s AGP8x je Xabre od SiSu)... Karta nese i spoustu dalších "prvenství",
kterými se Matrox ale už tolik nechlubil. Je to třeba fakt, že Parhelia je první kartou od Matroxu, která podporuje
AntiAliasing, zatímco konkurence ho používala už několik let (na domácích kartách se objevil nedlouho po vydání G400).
Parhelia hardwarově disponuje režimem Ordered-Grid SuperSampling. Tímtéž, jaký (částečně softwarově) použila nVidia
na TNT a GeForce1/2. Tedy vysoký propad výkonu, poměrně nízká účinnost a kvalitní textury. Na obrázky vzorků se
můžete podívat výše.
Fragment AntiAliasing
Matrox ale nezůstal jen u tohoto zastaralého algoritmu. Ten měl sloužit jen jako doplnění
nového režimu zvaného Fragment AntiAliasing. Podstatou FAA je taktéž OGSS, ale 16x (4x4). Ten je ale použit jen na
vybrané partie obrazu, které AntiAliasing nejvíce potřebují. Tím je zaručen nízký propad výkonu (oproti standardnímu SS)
při vysoké účinnosti (16x). FAA má ale i slabiny (nevím jak se dodnes situace změnila, nevím o nikom, kdo by
měl Parhelii, takže je možné, že problémy již byly vyřešeny). Tou největší slabinou je algoritmus, který určuje, na které
části scény bude AntiAliasing použit. Často totiž důležité hrany vynechá a pak je jedno, jestli jde o režim
2x, nebo 16x, protože zkrátka na důležitých partiích použit není. Taktéž hry, které používají StencillBuffer, není možné
hrát s FAA. Ten je pak nahrazen neefektivním OGSS 4x. FAA je zajímavým zpestřením a pokud ho Matrox
"dotahne" a na další grafické kartě bude jako základní algoritmus FAA použito něco lepšího než hrubá síla
OGSS, půjde o velice zajímavou cestu. Osobně si myslím, že kdyby se Matrox tolik nedržel svých zastaralých
konvencí a použil by místo 16x OGSS třeba 4x či 8x RGSS, byl by výsledek minimálně na stejné úrovni, ale
s polovičním až čtvrtinovým výkonnostním propadem.
|
Ordered-Grid SuperSampling 16x |
PowerVR
Ordered-Grid SuperSampling (optimized)
Společnost PowerVR se už dost dlouho nevytasila s žádnou novinkou. Přestože
by již měla mít navrhnut grafický čip s plnou podporou Pixel a Vertex Shaderů 3.0 a také jako první
uvedla technologická dema pro nové shadery, stále nejsou zveřejněny žádné specifikace. Je možné, že PowerVR nenašla
výrobce, který by byl ochoten nové čipy vyrábět, což by byla jistě škoda. Poslední, co PowerVR vydala byla série Kyro.
Jejím základním kamenem je Tile-Based Rendering, tedy zpracovávání scény po jednotlivých malých obdélníkových
úsecích. Tím je zajištěna práce s malými datovými bloky, ke které stačí z velké části cache samotného čipu,
takže přístupy do několikanásobně pomalejší grafické paměti jsou minimalizovány. Z toho samozřejmě může velice těžit
i AntiAliasing. Kyro používá Ordered-Grid SuperSampling, takže by bylo logické čekat několikanásobný propad výkonu.
Ten však díky Tile-Based architektuře nenastává. Při rozlišení 800*600 se framerate při FSAA 4x drží na více než
50% a při FSAA 2x klesne jen o cca 10%. Při vyšším rozlišení je ale už rozdíl výraznější; při 1024*768
a FSAA 4x klesá počet fps na cca 40% a při FSAA 2x na cca 70% (Q3 Arena, Athlon 650MHz, vlastní
měření). Oproti standardnímu SuperSamplingu jsou to vynikající výsledky (poslední díl článku bude obsahovat srovnání
výkonu téhož FSAA GeForce2 vs. Kyro II)
|
Ordered-Grid SuperSampling 4x Jde o naprosto stejný algoritmus,
jako používá GeForce 1/2; díky TBR je však rychlejší. |
|
|