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:
Vylepšení kvality textur
Ovšem anti-aliasing může mít kromě negativních účinku vyplývajících z nedokonalé implantace také dobrý dopad na jiné aspekty zobrazení. Konkrétně je tomu tak při použití supersamplingu, kdy se zlepšuje kvalita a čistota textur. Dochází vlastně k jakémusi anizotropnímu filtrování, protože se při výpočtech zvyšuje počet pixelů na scéně. Opět zde máme pro názornost obrázek:
Obr. 22 – Supersampling jako anizotropní filtrování
Výsledek je evidentní hlavně při malém úhlu mezi pozorovatelem a texturou. Ovšem jako filtrování textur působí jen supersampling. Multisampling vybírá k „rozmnožování“ pixelů jen okraje polygonů, a tak je textura vyplňující polygon netknuta. Tam je každý vnitřní bod polygonů počítán dohromady.
Znamená to následující:
Tyto poznatky si můžete ověřit na následujících screenshotech (vylepšení je evidentní u SS, pokulhává naopak SmoothVision):
Obr. 23 – Scéna se Serious Sam 2 jako příklad
Klikněte pro zvětšení
Obr. 24, 25 – Detail bez FSAA (vlevo) a Multisampling (vpravo)
Obr. 26, 27 – Detaily Supersampling (vlevo) a SmoothVision (vpravo)
Transparentní textury
Druhým bodem, který stojí u textur za zmínku, je použití transparentních textur. Pro příklad transparentní textury uvedu list – Kdyby měl být list dokonalý, byl by nutné použít několik polygonů, které tvoří vnější okraj. Když se použije transparentní textura, je možné vzít jako celý list jeden polygon (dejme tomu obdélník), jehož některé části budou průhledné a vytvoří se tak dojem členitosti. Zde je obrázek:
Opět zde máme několik situací, které mají dopad na kvalitu transparentní textury:
Zde jsou opět příklady, kde je znázorněn detail z výše uvedené scény:
Obr. 29 – Detail bez použití FSAA
Obr. 30, 31 – Multisampling (vlevo) a Quincunx (vpravo)
Obr. 32, 33 – Supersampling (vlevo) a SmoothVision (vpravo)
Možností, jak problémy s použitím Multisamplingu vyřešit, nabízejí většinou sami vývojáři her. Např. lze použít textury s postupnou transparencí, kde se textura oproti pozadí jakoby pozvolně vytrácí.
Ovšem anti-aliasing může mít kromě negativních účinku vyplývajících z nedokonalé implantace také dobrý dopad na jiné aspekty zobrazení. Konkrétně je tomu tak při použití supersamplingu, kdy se zlepšuje kvalita a čistota textur. Dochází vlastně k jakémusi anizotropnímu filtrování, protože se při výpočtech zvyšuje počet pixelů na scéně. Opět zde máme pro názornost obrázek:
Obr. 22 – Supersampling jako anizotropní filtrování
Výsledek je evidentní hlavně při malém úhlu mezi pozorovatelem a texturou. Ovšem jako filtrování textur působí jen supersampling. Multisampling vybírá k „rozmnožování“ pixelů jen okraje polygonů, a tak je textura vyplňující polygon netknuta. Tam je každý vnitřní bod polygonů počítán dohromady.
Znamená to následující:
- Pokud použijete 2x, či 4x supersampling, zlepší se úměrně tomu kvalita textury a je nahrazeno anizotropní filtrování.
- Při použití 2x nebo 4x multisamplingu, jsou pouze vyhlazeny hrany polygonů a pro zlepšení textur je třeba zapnout anizotropní filtrování.
- U GeForce4 a GeForce FX je možné použít metody 4xS, 6xS a 8xS, které kombinují supersampling a multisampling. U poslední metody je použit na celou scénu 4x OGSS a na okraje polygonů ještě navíc 4x OGMS. Kvalita textur se tak rapidně zlepší.
- Na ATi kartách se vzhledem k rozptylovému vzorku technologie SmoothVision detaily textur spíše zhoršují, a to jak u Quality, tak u Performance módu. Naproti tomu ovšem stojí vynikající anizotropní filtrování, které negativní účinky zruší.
Tyto poznatky si můžete ověřit na následujících screenshotech (vylepšení je evidentní u SS, pokulhává naopak SmoothVision):
Obr. 23 – Scéna se Serious Sam 2 jako příklad
Klikněte pro zvětšení
Obr. 24, 25 – Detail bez FSAA (vlevo) a Multisampling (vpravo)
Obr. 26, 27 – Detaily Supersampling (vlevo) a SmoothVision (vpravo)
Transparentní textury
Druhým bodem, který stojí u textur za zmínku, je použití transparentních textur. Pro příklad transparentní textury uvedu list – Kdyby měl být list dokonalý, byl by nutné použít několik polygonů, které tvoří vnější okraj. Když se použije transparentní textura, je možné vzít jako celý list jeden polygon (dejme tomu obdélník), jehož některé části budou průhledné a vytvoří se tak dojem členitosti. Zde je obrázek:
Opět zde máme několik situací, které mají dopad na kvalitu transparentní textury:
- Supersampling obecně vyhlazuje celou scénu nehledě na umístění, transparentní textury jsou tedy také vyhlazeny.
- U Multisamplingu jsou vyhlazeny pouze okraje textur, takže rozhraní mezi viditelnou a průhlednou částí textury je stále zubaté.
- Quincunx, jak jsme si ukázali výše, celou scénu více méně rozmázne, čili vyhlazení je na slušné úrovni i uvnitř transparentních textur.
- Podobně je tomu u 4xS, 6xS a 8xS anti-aliasingu, kde jsou vyhlazeny i průhledné části.
- SmoothVision sice transparentní textury vyhladí (jde o druh Supersamplingu), ale detaily textur se spíše zhorší. Opět je třeba anizotropního filtrování.
Zde jsou opět příklady, kde je znázorněn detail z výše uvedené scény:
Obr. 29 – Detail bez použití FSAA
Obr. 30, 31 – Multisampling (vlevo) a Quincunx (vpravo)
Obr. 32, 33 – Supersampling (vlevo) a SmoothVision (vpravo)
Možností, jak problémy s použitím Multisamplingu vyřešit, nabízejí většinou sami vývojáři her. Např. lze použít textury s postupnou transparencí, kde se textura oproti pozadí jakoby pozvolně vytrácí.