3D technologie: Anti-aliasing
12.11.2003, Zdeněk Kabát, článek
Každý z Vás jistě slyšel o technologii k vyhlazování hran, která je obecně známá pod názvem Anti-aliasing. V tomto článku si popíšeme detailně, jak tato technika funguje a rozebereme různé její aplikace jako je Quincunx či SmoothVision.
Kapitoly článku:
Ordered Grid a Rotated Grid anti-aliasing
Pro supersampling a multisampling v podání nVidie se používají dva způsoby rozložení obrazového bodu na subpixely. Nejlépe si to předvedeme na obrázku:
Obr. 11 – Ordered Grid a Rotated Grid AA
Při použití standardního Ordered Grid samplingu (ať už OGSS či OGMS) je vyhlazování okrajů textur, které jsou vertikální či horizontální poměrně neúčinné. Nachází-li se totiž v daném pixelu okraj polygonu v takové pozici, bude se uvnitř nacházet 0, 2 nebo 4 subpixely. Znamená to, že máme pro 4x OGSS/OGMS jen tři různé odstíny výsledného pixelu. Naproti tomu ostatní úhly jsou celkem dobré.
U Rotated Grid AA (RGSS a RGMS) jsou nové subpixely přidány v úhlu 45° od původních a celý pixel je pak jakoby pootočen. Pro horizontální a vertikální okraje můžeme mít tedy 0, 1, 3 nebo 4 elementy v polygonu a dostáváme o odstín víc. Protože je lidské oko citlivější na horizontální a vertikální úhly, je Rotated Grid lepší metodou. Bohužel společnost 3dfx, která ho nejvíce používala, je dávno mrtvá a nVidia tuto techniku nepřevzala.
ATi SmoothVision
Technologie, jíž pro anti-aliasing implementovala společnost ATi, je založena na trochu odlišném principu než techniky nVidie. Od Radeonu 8500 dál nabízí ATi celkem 10 způsobů pro vyhlazování – 2x, 3x 4x, 5x a 6x v Quality, nebo Performance módu. Název SmoothVision se používá i pro anizotropní filtrování, které GPU ATi používají, ale o tom jindy.
SmoothVision používá techniku založenou na supersamplingu, ale mnohem efektivněji. Na rozdíl od uspořádané mřížky subpixelů (ať už OGSS nebo RGSS) totiž ATi vyvinulo vlastní způsob, tzv. rozptýlený vzorek. V ovladačích je předdefinované pole náhodně umístěných 8 subpixelů v každém obrazovém bodě, které nemá žádnou pravidelnost. Tato „rozptylová tabulka“ je pak v různé míře použita na reálný obraz.
Obr. 12 – Rozptýlený vzorek u SmoothVision
Princip není tak složitý. Na obrázku výše vidíte blok čtyř pixelů, které dohromady obsahují 16 vzorků. Znamená to, že byl aplikován 4x anti-aliasing a pro každý pixel byly vybrány 4 náhodné subpixely na pozicích, které obsahuje vlevo zobrazená rozptylová tabulka. Kdybychom se spokojili s 2x AA, v každém ze čtyř pixelů by se zvolila jen dvojice subpixelů.
Výsledná barva celého pixelu je pak samozřejmě získána průměrem všech subpixelů použitých pro daný bod.
Na rozdíl od nVidie ale ATi nepoužívá žádnou metodu, jak aplikovat anti-aliasing jen na určitou část obrazu, takže do frame bufferu jsou ukládány informace o všech zpracovávaných pixelech. Ale ATi si to vzhledem k technologii HyperZ III může dovolit. To je systém pro úsporu paměti, který využívá barevné komprese 6:1 (nVidia 4:1) a pro kompresi Z-bufferu 4:1, ale tento poměr vzrůstá s použitým, anti-aliasingem (až 24:1 při 6x FSAA).
SmoothVision má, jak bylo řečeno na začátku, Quality a Performance mód. Quality mód používá pro každý subpixel vlastní texturu a nachází-li se tedy pixel na rozhraní dvou polygonů, jsou barvy pro subpixely počítány zvlášť podle barvy textury. Druhý způsob nazvaný Performance je méně náročný na velikost bufferu, protože „prolíná“ do každého pixelu ještě subpixely ze sousedních obrazových bodů. Svým způsobem je tedy velmi podobný technice Quincunx. Schémata těchto módu naleznete na poslední stránce v příloze.
Obr. 13 – 4x Multisampling (vlevo) ve srovnání s 2x Quality SmoothVision
Všimněte si především kvality textury, která je v podání nVidie rozmázlá
Ovšem technika rozptýleného vzorku není až takovou výhrou, jak říká ATi. Protože rozptylový vzorek je dán v každé scéně pro všechny pixely napevno, oproti supersamplingu nemá příliš výhod. Naopak se může při různých módech opakovat stejný vzorek v jednotlivých pixelech, což může vést k barevným chybám. Časté střídání pozic subpixelů v jednotlivých bodech pak může ústit v jakýsi „neklid“ na hranách.
V podstatě tedy můžeme dojít k závěru, než že jde o supersampling v bledě modrém. SmoothVision má ale oproti SS jednu velkou výhodu – pracuje dobře pro libovolný úhel, který má okraj polygonu v daném pixelu. Více o tom si můžete přečíst na další stránce.
Pozn.: Dokument vztahující se k technologii SmoothVision naleznete ZDE.
Pro supersampling a multisampling v podání nVidie se používají dva způsoby rozložení obrazového bodu na subpixely. Nejlépe si to předvedeme na obrázku:
Obr. 11 – Ordered Grid a Rotated Grid AA
Při použití standardního Ordered Grid samplingu (ať už OGSS či OGMS) je vyhlazování okrajů textur, které jsou vertikální či horizontální poměrně neúčinné. Nachází-li se totiž v daném pixelu okraj polygonu v takové pozici, bude se uvnitř nacházet 0, 2 nebo 4 subpixely. Znamená to, že máme pro 4x OGSS/OGMS jen tři různé odstíny výsledného pixelu. Naproti tomu ostatní úhly jsou celkem dobré.
U Rotated Grid AA (RGSS a RGMS) jsou nové subpixely přidány v úhlu 45° od původních a celý pixel je pak jakoby pootočen. Pro horizontální a vertikální okraje můžeme mít tedy 0, 1, 3 nebo 4 elementy v polygonu a dostáváme o odstín víc. Protože je lidské oko citlivější na horizontální a vertikální úhly, je Rotated Grid lepší metodou. Bohužel společnost 3dfx, která ho nejvíce používala, je dávno mrtvá a nVidia tuto techniku nepřevzala.
ATi SmoothVision
Technologie, jíž pro anti-aliasing implementovala společnost ATi, je založena na trochu odlišném principu než techniky nVidie. Od Radeonu 8500 dál nabízí ATi celkem 10 způsobů pro vyhlazování – 2x, 3x 4x, 5x a 6x v Quality, nebo Performance módu. Název SmoothVision se používá i pro anizotropní filtrování, které GPU ATi používají, ale o tom jindy.
SmoothVision používá techniku založenou na supersamplingu, ale mnohem efektivněji. Na rozdíl od uspořádané mřížky subpixelů (ať už OGSS nebo RGSS) totiž ATi vyvinulo vlastní způsob, tzv. rozptýlený vzorek. V ovladačích je předdefinované pole náhodně umístěných 8 subpixelů v každém obrazovém bodě, které nemá žádnou pravidelnost. Tato „rozptylová tabulka“ je pak v různé míře použita na reálný obraz.
Obr. 12 – Rozptýlený vzorek u SmoothVision
Princip není tak složitý. Na obrázku výše vidíte blok čtyř pixelů, které dohromady obsahují 16 vzorků. Znamená to, že byl aplikován 4x anti-aliasing a pro každý pixel byly vybrány 4 náhodné subpixely na pozicích, které obsahuje vlevo zobrazená rozptylová tabulka. Kdybychom se spokojili s 2x AA, v každém ze čtyř pixelů by se zvolila jen dvojice subpixelů.
Výsledná barva celého pixelu je pak samozřejmě získána průměrem všech subpixelů použitých pro daný bod.
Na rozdíl od nVidie ale ATi nepoužívá žádnou metodu, jak aplikovat anti-aliasing jen na určitou část obrazu, takže do frame bufferu jsou ukládány informace o všech zpracovávaných pixelech. Ale ATi si to vzhledem k technologii HyperZ III může dovolit. To je systém pro úsporu paměti, který využívá barevné komprese 6:1 (nVidia 4:1) a pro kompresi Z-bufferu 4:1, ale tento poměr vzrůstá s použitým, anti-aliasingem (až 24:1 při 6x FSAA).
SmoothVision má, jak bylo řečeno na začátku, Quality a Performance mód. Quality mód používá pro každý subpixel vlastní texturu a nachází-li se tedy pixel na rozhraní dvou polygonů, jsou barvy pro subpixely počítány zvlášť podle barvy textury. Druhý způsob nazvaný Performance je méně náročný na velikost bufferu, protože „prolíná“ do každého pixelu ještě subpixely ze sousedních obrazových bodů. Svým způsobem je tedy velmi podobný technice Quincunx. Schémata těchto módu naleznete na poslední stránce v příloze.
Obr. 13 – 4x Multisampling (vlevo) ve srovnání s 2x Quality SmoothVision
Všimněte si především kvality textury, která je v podání nVidie rozmázlá
Ovšem technika rozptýleného vzorku není až takovou výhrou, jak říká ATi. Protože rozptylový vzorek je dán v každé scéně pro všechny pixely napevno, oproti supersamplingu nemá příliš výhod. Naopak se může při různých módech opakovat stejný vzorek v jednotlivých pixelech, což může vést k barevným chybám. Časté střídání pozic subpixelů v jednotlivých bodech pak může ústit v jakýsi „neklid“ na hranách.
V podstatě tedy můžeme dojít k závěru, než že jde o supersampling v bledě modrém. SmoothVision má ale oproti SS jednu velkou výhodu – pracuje dobře pro libovolný úhel, který má okraj polygonu v daném pixelu. Více o tom si můžete přečíst na další stránce.
Pozn.: Dokument vztahující se k technologii SmoothVision naleznete ZDE.