Anti-Aliasing

Sonntag, 21. Januar 2007
 / von Mr. Lolman & Raff & robbitop
 

Was ist am Anti-Aliasing der Voodoo5 6000 nun so besonders, dass selbst sechs Jahre nach dem Ableben von 3dfx es kein Hersteller geschafft hat, dessen Qualität in allen Belangen zu überbieten?

Durch das Überlagern mehrere Bilder im "T-Buffer" getauften Multisample-Buffer kann man – im Gegensatz zum einfachen, als Oversampling bekannten "Ordered Grid Supersampling Anti-Aliasing" (OGSSAA) – die AA-Samplepositionen innerhalb eines Rasters frei bestimmen. Das Anti-Aliasing entsteht dabei durch eine leichte Verschiebung der Szenerie. Durch dieses "Sparse Grid" werden schon mit zwei Subpixeln (also 2x SGSSAA) sowohl die X- als auch die Y-Achse jeweils doppelt so fein abgetastet, während man bei rechtwinkliger Anordnung der Subpixel (OGSSAA) dafür tatsächlich 2x2 = 4 Subpixel (und gleichermaßen verdoppelten Rechenaufwand) benötigt.

Ein "sparse grid" ist sozusagen eine Sparversion von einem "ordered grid". Allerdings wird dabei sinnvoll gespart: Während sich die Kantenglättungsqualität bei den wichtigsten Winkeln nur unwesentlich verschlechtert, wird erheblich Leistung eingespart. So kann ein 2x OGSSAA prinzipbedingt nur eine Achse höher abtasten und dementsprechend entweder vertikale oder horizontale Winkel glätten. Um mit einem Ordered Grid die Kantenauflösung von 8x SGSSAA zu erreichen, müsste man schon 8x8 (= 64x) OGSSAA einsetzen, was ein guter Indikator dafür ist, dass OGSSAA im Consumermarkt eher ein Checklistenfeature war und nur eingesetzt wurde, um technische Unzulänglichkeiten auszugleichen. So erreichte nVidia die Texturqualität eines 64x OGSSAA schon mit dem 8xAF der GeForce3. Zur weiteren Vertiefung dieses Themas: In einem früheren Artikel unsererseits wird neben den Grundlagen über Anti-Aliasing unter anderem auch auf die Unterschiede zwischen den verschiedenen Masken eingegangen.

3dfx steht mit seiner AA-Methode mittlerweile nicht mehr alleine da. Der R200 (Radeon 8500) sollte ursprünglich ebenfalls Supersampling Anti-Aliasing mit einem rotierten Gitter bieten, schaffte dies jedoch nur in Spielen, die keinen Nebel einsetzten. Aktuell bietet bloß S3 mit 9x SGSSAA einen Modus an, der das 3dfx'sche 8x SGSSAA optisch sogar übertreffen könnte. Jedoch ist dieser praktisch kaum einsetzbar, da im Vollbildmodus die Sampleverteilung scheinbar willkürlich ist, was in einer schlechten Bildqualität resultiert. Überredet man ein Spiel allerdings zum Laufen im Fenstermodus, offenbart sich ein Anti-Aliasing, das dem der Voodoo5 6000 als einziges mindestens ebenbürtig ist.

Natürlich bieten ATI und nVidia mittlerweile effizientere AA-Modi an, jedoch lassen sich relativ problemlos Situationen konstruieren, wo das AAA/TSAA nicht funktioniert (OpenGL) – einmal abgesehen davon, dass durch diese Verfahren sowieso nur Alphatests (Texturen mit binärem Alpha-Wert, also pro Bildpunkt entweder vollständig durchsichtig oder komplett undurchsichtig) geglättet werden. Der neue 8x-MSAA-Modus des G80 bietet zwar auf Polygonkanten eine 8x8-höhere Achsenauflösung, lässt aber andere Bildinhalte komplett unbehandelt, wo bei 3dfx' 8x AA noch acht Super-Samples zum Einsatz kommen.

Am nächsten kam dem 3dfx-8xAA nVidias mit dem NV40 eingeführter (und am G80 aktuell nicht mehr verfügbarer) 16xS-Modus mit aktiviertem TSSAA. Dieser bot auf Alphatests und Polygonkanten genauso wie 3dfx eine jeweils 8fach höhere Achsenauflösung, hatte aber im Gegensatz zu 3dfx' 8xAA nur vier Textursamples anstatt acht (wobei man natürlich mit AF nachhelfen kann). Festzuhalten bleibt auch, dass selbst der "normale" 16xS-Modus (ohne TSAA) nicht einmal 3dfx'sches 4xAA vollständig übertreffen konnte, da er durch den OGSSAA-Anteil Alphatestkanten statt 4x nur 2x so hoch auflösen konnte – bei mehr Rechenaufwand wohlgemerkt!

So blieb bis zum Erscheinen des G70 (und der damit verbundenen Einführung von TSAA, rückwirkend auch auf NV4x-Chips) Bildqualitätsfetischisten nur die Möglichkeit, auf sehr ineffizientes 16x OGSSAA zurückzugreifen, welches genau wie 3dfx' 4xAA eine EER von 4x4 auf das gesamte Bild bietet. Dies jedoch kombiniert mit dem Vorteil, dass immerhin 16 Textursamples anstatt vier zum Einsatz kommen, was in Anbetracht der akzeptablen Texturfilterung unter der HighQuality-Treibereinstellung ohnehin Verschwendung gewesen wäre. Und natürlich abgesehen davon, dass bei diesem Modus etwa 94% der verfügbaren Füllrate allein für das Antialiasing benötigt wurden, was eine GeForce 6800 GT ungefähr auf das Leistungsniveau einer Voodoo4 4500 herunterdrückte (350 zu 333 MTexel/s). Interessant ist hierbei, dass eine Voodoo5 6000 (bei 166 MHz Takt) mit 4x SGSSAA ebenfalls genau der Rohleistung einer Voodoo4 4500 ohne Anti-Aliasing entspricht.