r420-a-nv40-full-scene-antialiasing
Hardware Článek R420 a NV40 - Full-Scene AntiAliasing

R420 a NV40 - Full-Scene AntiAliasing | Kapitola 2

Souček Jiří

Souček Jiří

19. 5. 2004 00:00 33

Seznam kapitol

1. 4 roky s AntiAliasingem 2. OverSampling, SuperSampling, MultiSampling 3. GeForce: FX vs. 6800 4. Radeon X800 5. Radeon X800 - pokračování 6. Shrnutí a Závěr

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.

Reklama

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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz


R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz


R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz


R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz

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
i Zdroj: PCTuning.cz
R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz
 

R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz
R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz
 

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

R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz


R420 a NV40 - Full-Scene AntiAliasing
i Zdroj: PCTuning.cz

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

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama