Zum 3DCenter Forum
Inhalt




Anti-Aliasing im Detail

24. Februar 2002 / von aths / Seite 11 von 18



  Überfilterung
  (Glatter als glatt?)

Wenn man sich noch einmal das Muster beim 2x Anti-Aliasing der GeForce3 ansieht, stellen sich noch einige Fragen.

2x Multisampling bei der GeForce3.
2x Multisampling bei der GeForce3.

Ein Subpixel liegt in der Mitte. Es ist klar, dass er in die Berechnung eingehen sollte. Nun liegen am Rand aber gleich deren 4, von denen nur einer genutzt werden wird. Warum nutzt man nicht alle 4 zu jeweils 25%?

nVidia nannte dieses Verfahren "Quincunx Anti-Aliasing", weil das Muster ebenso heisst.
nVidia nannte dieses Verfahren "Quincunx Anti-Aliasing", weil das Muster ebenso heisst.

nVidia äußerte sich mehrfach so, dass hier die Qualität von 4x Anti-Aliasing erreicht würde. Entweder haben sie nie eine Voodoo5 gesehen oder die Marketing-Abteilung ging nicht ohne Grund so geschickt vor, den Vorteil an einem Bild zu zeigen, wo praktisch keine Texturen zu sehen sind. Jedoch ganz so neu ist das Quincunx zugrundeliegende Verfahren auch nicht - schon beim 1.5x1.5 Supersampling flossen einige Subpixel mehrfach ein.

Wie ist das "Recycling" bei Quincunx zu bewerten? Anti-Aliasing funktioniert so, dass zunächst mehr Informationen erzeugt werden, als eigentlich darstellbar sind. Deshalb werden sie danach wieder heruntergerechnet. Dabei findet eine Mittelwertbildung statt: Beim 4x Anti-Aliasing beispielsweise geht jeder Subpixel pro Pixel mit 25% Stärke ein. Das führt zu einer Glättung.

In diesem Falle findet eine zusätzliche Mittelwertbildung statt. Denn diese neue Glättung erfolgt, ohne dass neue Informationen einfließen: Es wird Unschärfe hinzugefügt. Es ist bekannt, dass eine Kante mit 2x Anti-Aliasing drei Abstufungen bekommen kann. Das sind 0%, 50% und 100%. Dank dem Unschärfe-Filter sind feinere Abstufungen möglich. Ein genialer Trick?

Nun, die Glättung der Treppenstufen basiert hier nach wie vor auf nur zwei Subpixeln. Die Unschärfe verwischt die Stufen etwas, womit sie subjektiv besser aussehen. Man mag nun argumentieren, diese zusätzliche Glättung sei nun wünschenswert. In das Pixel fliessen einmal ein kompletter Subpixel, sowie 4 weitere zu je 1/4 Stärke ein. Das ergibt 1 + 4 x 1/4 = 2 Subpixel. Dabei gehen zwar keine neuen, aber (natürlich) immerhin vorhandene Informationen in das Pixel ein. Von der Kantenglättung her scheint Quincunx-Anti-Aliasing dank einer zusätzlichen Glättungsstufe sehr gut zu sein.

Eine Kante, die genau im 90° Winkel liegt, kann mit 2x Anti-Aliasing ohne Quincunx entweder geglättet werden, oder eben nicht. Beim 2x Raster spielt die Farbe entweder zur 50% mit in die Randpixel oder komplett zu 100%. Mit Quincunx sind scharfe Ränder grundsätzlich nicht mehr möglich. Die Randfarbe ist bei diesem Winkel entweder mit 25% dabei, oder aber mit 75%. Das senkt das "Zappeln" von sich bewegenden Polygonrändern und ist für Bewegung vorteilhaft.

Doch natürlich bleiben die Vorteile in genau den Grenzen, die 2x Anti-Aliasing mit sich bringt. Wenn ein Objekt dünner als ein halbes Pixel ist, tritt Line Popping wieder auf. Quincunx zaubert also nichts neues herbei, sondern nutzt lediglich die bekannten Informationen anders.

Der große Nachteil von Quincunx Anti-Aliasing tritt an anderer Stelle zutage. Man erinnere sich, wie Multisampling funktioniert: Pro Pixel wird nur ein gefilterter Texturwert gelesen. Dieser wird auf alle Subpixel angewandt. Durch den Unschärfefilter geht dieser Texturwert aber auch zum Teil in die Nachbar-Pixel mit ein. Da innerhalb eines Dreiecks beide Subpixel den gleichen Farbwert bekommen, nimmt die Unschärfe so automatisch Überhand.

Multisampling Anti-Aliasing, also reine Kantenglättung, lohnt deshalb, weil sich dank anisotropen Filter schön scharfe Texturen darstellen lassen. Quincunx-Anti-Aliasing macht dies nachträglich wieder unscharf. Das kann im eigentlichen nicht Sinn einer bildqualitätverbessernden Maßnahme sein.

Die Realisierung von Quincunx wurde performanceoptimiert implementiert. Zunächst findet ein ganz normales 2x Multisampling statt. Erst beim Zusammenmischen der beiden Backbuffer werden die zusätzlichen Subpixel mit einbezogen. Dabei kommt ein Cache (direkt im Chip integrierter Zwischenspeicher) zum Einsatz, der zwei oder drei Zeilen vorrätig halten kann. Somit verbraucht Quincunx relativ wenig Bandbreite. Erst wenn die Karte hart am Bandbreiten-Limit arbeitet, wird Quincunx spürbar langsamer.

Es soll hiermit gleich auch ein öfter auftretenes Missverständnis beseitigt werden: Multisampling macht Texturen nicht unscharf! Auch nicht ein bisschen. Multisampling macht an Texturen einfach gar nichts. Mit Supersampling kann man sie schärfer machen. Dank dem bei allen AA-Verfahren zusätzlich anwendbarem anisotropen Filter ist diese zusätzliche Schärfe aber nicht unbedingt vonnötig. Texturunschärfe kommt allein durch die Quincunx-Glättung. Aber besonders dann, wenn diese zusammen mit Multisampling eingesetzt wird, wie bei der GeForce3 der Fall, nimmt sie Überhand.

Allerdings kann dieser Chip bezüglich Anti-Aliasing noch einiges mehr. Obwohl diese Verfahren nicht dokumentiert sind, lassen sie sich nutzen. Deshalb bekamen sie das folgende Kapitel spendiert.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Zurück / Back Weiter / Next

Shortcuts
nach oben