Full-Scene AntiAliasing - pokračování



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







Předchozí Pokračovat...





© no-X 2004
akt. 18-02-2004
hlavní stránka