Anti-Aliasing im Detail
24. Februar 2002 / von aths / Seite 15 von 18
Supersampling durcheinander | |
(Die Technik der Radeon 8500) |
Bei Smoothvision werden keine einzelnen Pixel oder Pixelblöcke sondern jeweils Subpixelblöcke behandelt. Jeder Subpixelblock umfasst (bis zu) 16 Samplepositionen. Bei 2x Anti-Aliasing reicht das für 8 Pixel, bei 4x für 4 Pixel.
Smoothvision-Einstellmöglichkeiten. |
Ob diese Tabelle so zutrifft, ist unsicher. ATi gibt sich arg bedeckt, was die Einzelheiten betrifft. Es ist denkbar, dass ein Block bei 3x Anti-Aliasing nicht 5, sondern nur 4 Pixel umfasst, um eine quadratische Form zu ermöglichen.
Pro Subpixelblock wird ein Samplepositionen-Muster zufällig ausgewählt. Dieses enthält immer genau 8 Koordinaten. Dieses Muster wird für alle Pixel im Block verwendet. Für 2x Anti-Aliasing werden davon entsprechend 6 Koordinaten weggelassen. Bei 4x werden 4 Koordinaten weggelassen. Das Weglassen wird für jedes Pixel anders getroffen, so dass sich insgesamt ein recht zufällig scheinendes Muster ergibt. Dies soll nachfolgend einmal veranschaulicht werden:
Denkbare Version eines Samplepositionen-Musters. |
Wie bei den meisten Beispielen wird 4x Anti-Aliasing näher betrachtet. Ein Subpixelblock umfaßt hier 4 komplette Pixel, welche je 4 Samplepositionen nutzen. Das Muster enthält aber 8 Samplepositionen - also bestimmt ein Zufallsgenerator nun diese 4 Samplepositionen, die letztendlich auch genutzt werden. Bei Pixel 1 mögen das 1-3-5-6 sein, bei Pixel 2 zum Beispiel 2-3-7-8, bei Pixel 3 vielleicht 1-4-5-6 und Pixel 4 bekommt 1-2-4-5.
Denkbare Versionen eines Samplepositionen-Musters. |
Es ist wahrscheinlich, dass bei der Auswahl kein echter Zufallsgenerator zum Einsatz kommt, sondern pro 8-Sample-Muster verschiedene "gute" Auswahl-Reihenfolgen gespeichert sind. Ohne das näher ausführen zu wollen: Kombinationen von mehreren pseudo-Zufallsfolgen unterschiedlicher Länge erlauben eine Pseudozufallsfolge, die sich erst nach sehr langer Zeit wiederholt. "Echte" Zufallszahlen werden in der Regel mit Permutations-Verfahren erzeugt, vielleicht besitzt der Radeon dafür die entsprechende Logik. ATi schweigt sich leider wieder einmal aus.
In jedem Fall wird Supersampling gemacht. Engegen anders lautenden Artikeln im Netz: Smoothvision nutzt kein Multisampling! Das Gegenteil ist richtig: Smoothvision ist ein Supersampling-Verfahren. Denn für jedes Subpixel wird ein eigener gefilteter Textur-Wert erzeugt. Aber selbstverständlich wird die Multisamplebuffer-Technik verwendet.
Würde so 8x Anti-Aliasing umgesetzt, ergäben sich pro Subpixelblock Regelmäßigkeiten, da keine Samplepositionen mehr weggelassen werden können. Es müsste dann ein zusätzliches herkömmliches Oversampling mit vergrößertem Backbuffer verwendet werden. Das wäre treibertechnisch realisierbar, würde aber die Performance zu sehr drücken. ATi bietet derzeit Smoothvision-Einstellungen von 2x bis 6x an.
Nun wurde die Forderung nach möglichst echter Unregelmäßigkeit gut erfüllt. Nachteilig bleibt bei einer noch recht geringen Subpixelzahl (zum Beispiel 4 Samples) die nur mäßig gute Kantenglättung. Sie ist in der Praxis zwar besser als das 2x2 ordered grid Verfahren, leider reicht sie aber nicht an das 4x rotated grid Verfahren heran. Erst die 6x Methode kommt in die Nähe der 4x Kantenglättung á la 3dfx.
Das zufällige Abtast-Raster bei Smoothvision hat sowohl Licht- als auch Schattenseiten. Einfach gesagt überwiegen die positiven Seiten um so mehr, je höher die Anti-Aliasing-Stufe ist.
Subpixel können auch mehrfach verwendet werden. Dies geschieht bei ATI´s Performance-Einstellung, die Smoothvision ebenfalls anbietet. So werden für "4x Performance" nicht 4, sondern weniger (um genau zu sein, 3) Subpixel pro Pixel erzeugt. Wie schon bei Quincunx werden geeignete Subpixel "aufgeteilt" und fließen in mehrere Pixel ein.
Da sich jede Einstellung sowohl im "Quality" als auch "Performance"-Modus verwenden lässt, bietet die Radeon 8500 gleich zehn Anti-Aliasing Stufen zur Auswahl, was Rekord ist. Denn: Je mehr Optionen der Nutzer hat, um so besser. Und ATi´s Radeon 8500 Chip bietet dem Benutzer hier die größere Auswahl.
Beim 2x-Anti-Aliasing steht der Performance-Modus vor Schwierigkeiten. Man kann hier nicht einfach ein ganzes Subpixel mehrfach verwerten, die Unschärfe würde zu groß. Das ist in der Praxis allerdings nicht zu beobachten. Ganz offensichtlich findet hierfür ein 1x1.5 Anti-Aliasing statt.
In jedem Fall kommt der Performance-Modus mit weniger Subpixeln aus. Und da jedes Subpixel entsprechend Speicherplatz beansprucht, sind die Speicher-Anforderungen im Perfomance-Modus geringer, da einige Sampels ja mehrfach verwendet werden. Deshalb sind hiermit auch höhere Auflösungen möglich, als die gleiche Einstellung in der Quality-Version bietet. Zukünftige Radeon-Versionen werden für die dort möglichen hohen AA-Settings im Quality-Mode schon 128 MB RAM benötigen.
Um die hohen Leistungs-Anforderungen die Supersampling bedingt zu mildern, werden bei der Radeon 8500 auch Modi mit Überfilterung angeboten.
Man könnte argumentieren, da Supersampling zwangsläufig die Füllrate stark belastet, sei es für moderne Spiele nicht zu gebrauchen. Dabei wird jedoch ein wesentlicher Fakt ausgeblendet: Anti-Aliasing ist kein Feature um seiner selbst willen! Es ist eine von mehreren Optionen, um die Bildqualität zu verbessern.
Hier spielt auch der anisotrope Filter eine entscheidene Rolle. Dieser Filter ist bei der Radeon extrem leistungsoptimiert. Er erreicht zwar nicht ganz die Qualität des anisotropen Filters einer GeForce3. Allerdings muss diese dafür kräftig Federn lassen, was die Framerate angeht. Außerdem beherrscht sie maximal ein Abtast-Verhältnis von 1:8.
Die Radeon 8500 bietet dagegen Stufen bis 1:16. In den höchsten Filtereinstellungen werden bei beiden Karten pro Pixel bis zu 64 ungefilterte Texel gelesen. Bei 2x Multisampling bleibt dieser Wert bestehen, bei 2x Supersampling sind es jedoch schon 128 Texel, bei 4x gar 256 Texel. Dank Smoothvision kann der Radeon also eine deutlich bessere Texturfilterung bringen als sein Konkurrent. Da heutige verwöhnte Spieler sowohl anisotrope Filterung als auch Anti-Aliasing verwenden, stellt die Radeon 8500 für Anti-Aliasings-Freaks keine schlechtere Wahl dar, als die Wettbewerber zu bieten haben.
nVidia war unterdessen nicht untätig. Sie setzen weiterhin auf die Multisampling-Schiene und ließen sich noch einiges dazu einfallen.