Technikvergleich Anti-Aliasing

Montag, 30. April 2007
 / von Leonidas & Madkiller
 

Vor den eigentlichen Benchmarks wollen wir uns zuerst mit Anti-Aliasing und anisotropen Filter der beiden großen Grafikchip-Entwickler beschäftigen – bzw. in erster Linie, wie gut diese überhaupt miteinander vergleichbar sind. Denn natürlich sind Vergleich rein anhand des Namens nicht wirklich seriös – ein "4xAF" bei dem einem Hersteller kann bei einem anderen Hersteller etwas ganz anderes bedeuten, schließlich gibt es diesbezüglich keine für alle Hersteller verbindliche Namenskonvention. Vor einem Leistungsvergleich steht daher erst einmal der Optikvergleich, um zu sehen, was man da überhaupt gegeneinander ausmisst.

Verhältnismäßig einfach haben wir es diesbezüglich beim Punkt Anti-Aliasing. Dies hängt zum einen damit zusammen, daß es hier keine der "allseits beliebten" Optimierungen gibt – und zum anderen, weil der G80-Chip zwar auch hier einige Neuerungen mit sich bringt, gerade bei den kleineren Modi jedoch weiterhin dem entspricht, was schon frühere Grafikchips von nVidia konnten.

Dazu aber später mehr, erst einmal ein kurzer Abriß der bezüglich ATI und nVidia gebotenen "normalen" Anti-Aliasing Möglichkeiten. Anzumerken wäre, daß wir uns bei der Filterqualität rein auf den unter Direct3D laufenden FSAA Tester verlassen haben, da bei beiden Grafikchip-Entwicklern unter den normalen Anti-Aliasing Modi keine Unterschiede mehr zwischen Direct3D und OpenGL existieren:

Anti-Aliasing auf ATIs Radeon X1x00 Serie
  Anmerkungen Samplemuster Filterqualität Direct3D
ohne AA - aa_R580_samplemuster_0x aa_R580_filterqualitaet_0x
2x
(2x RGMS)
Multisampling
gedrehtes Raster
EER 2x2
(automatisch) gamma-korrektiv
aa_R580_samplemuster_2x aa_R580_filterqualitaet_2x
4x
(4x RGMS)
Multisampling
gedrehtes Raster
EER 4x4
(automatisch) gamma-korrektiv
aa_R580_samplemuster_4x aa_R580_filterqualitaet_4x
6x
(6x SGMS)
Multisampling
handoptimiertes sparse Raster
EER 6x6
(automatisch) gamma-korrektiv
aa_R580_samplemuster_6x aa_R580_filterqualitaet_6x

Gleiches nun für nVidias GeForce7-Serie, wobei hier der 2x Quincunx Modus herausgelassen wurde, da dieser nicht der eigentlichen Definition von Anti-Aliasing entspricht, sondern eher ein Weichzeichner ist (mit welchem vornehmlich Texturinformationen weichgezeichnet und damit zerstört werden):

Anti-Aliasing auf nVidias GeForce7 Serie
  Anmerkungen Samplemuster Filterqualität Direct3D
ohne AA - aa_G71_samplemuster_0x aa_G71_filterqualitaet_0x
2x
(2x RGMS)
Multisampling
gedrehtes Raster
EER 2x2
(zuschaltbar) gamma-korrektiv
aa_G71_samplemuster_2x aa_G71_filterqualitaet_2x
4x
(4x RGMS)
Multisampling
gedrehtes Raster
EER 4x4
(zuschaltbar) gamma-korrektiv
aa_G71_samplemuster_4x aa_G71_filterqualitaet_4x
8xS
(4x RGMS + 2xOGSS)
Multi/Supersampling
teil-gedrehtes Raster
EER 8x4
(zuschaltbar) gamma-korrektiv
aa_G71_samplemuster_8xS aa_G71_filterqualitaet_8xS

Und letztlich kommt nun noch der G80-Chip an die Reihe, welcher einige neue Anti-Aliasing Modi mitbringt:

Anti-Aliasing auf nVidias GeForce8 Serie
  Anmerkungen Samplemuster Filterqualität Direct3D
ohne AA - aa_G80_samplemuster_0x aa_G80_filterqualitaet_0x
2x
(2x RGMS)
Multisampling
gedrehtes Raster
EER 2x2
gamma-korrektiv
aa_G80_samplemuster_2x aa_G80_filterqualitaet_2x
4x
(4x RGMS)
Multisampling
gedrehtes Raster
EER 4x4
gamma-korrektiv
aa_G80_samplemuster_4x aa_G80_filterqualitaet_4x
8x
(4x SGMS + 4x SGCAA)
Multisampling & Coverage Anti-Aliasing
handoptimiertes sparse Raster
EER 8x8 bei CAA bzw. 4x4 ohne CAA
gamma-korrektiv
? aa_G80_filterqualitaet_8x
8xQ
(8x SGMS)
Multisampling
handoptimiertes sparse Raster
EER 8x8
gamma-korrektiv
aa_G80_samplemuster_8xQ aa_G80_filterqualitaet_8xQ
16x
(4x SGMS + 12x SGCAA)
Multisampling & Coverage Anti-Aliasing
handoptimiertes sparse Raster
EER 16x16 bei CAA bzw. 4x4 ohne CAA
gamma-korrektiv
? aa_G80_filterqualitaet_16x
16xQ
(8x SGMS + 8x SGCAA)
Multisampling & Coverage Anti-Aliasing
handoptimiertes sparse Raster
EER 16x16 bei CAA bzw. 8x8 ohne CAA
gamma-korrektiv
? aa_G80_filterqualitaet_16xQ

Wie zu sehen, hat nVidia oberhalb des 4x Modus einiges geändert: Sämtliche Hybrid-Modi zwischen Multisampling und Supersampling Anti-Aliasing sind beim G80-Chip nicht mehr mit dabei, dafür gibt es nunmehr ein vollwertiges 8x sparsed Grid Multisampling Anti-Aliasing, welches in der Kantenglättungsqualität ATIs 6x Lösung sogar minimal überflügeln kann (sehr viel besser kann es nicht werden, weil mit steigender Samplingzahl die jeweiligen Bildqualitätsgewinne relativ gesehen deutlich geringer werden).

Zudem gibt es ein neuartiges "Coverage Anti-Aliasing", welches mit nur einem geringen (relativen) Leistungsverlust auch hohe Anti-Aliasing Modi ermöglichen soll. Dazu benutzt der nVidia-Treiber bei den Coverage Anti-Aliasing Modi eine geringere Anzahl an Farb- und Z-Werten als normalerweise, womit in erster Linie Speicherbandbreite gespart wird, was bei hohen Anti-Aliasing Modi im gewöhnlichen der größte Bremsklotz ist. In der Summe kommt Coverage Anti-Aliasing damit mit einem Bruchteil der Leistungsanforderungen aus, als wenn man dieselbe Sampleanzahl in einem reinem Multisampling berechnen wollte.

Dafür funktioniert Coverage Anti-Aliasing allerdings nicht in jeder Anwendung – so beispielsweise nicht mit den in F.E.A.R. benutzten Stencil-Schatten. Positiverweise fällt in einem solchen Fall nicht gleich das komplette Anti-Aliasing aus, sondern vielmehr wird immer noch der gewöhnliche Multisampling-Teil dargestellt, welchen die Coverage Anti-Aliasing Modi immer mit enthalten. Allerdings muß auch gesagt werden, das gerade überhalb des schon ziemlich perfekten 8x Anti-Aliasings der GeForce8-Serie die Luft dann schon sehr dünn wird für weitere Qualitätsverbesserungen. Wirklich großartige Unterschiede der 16x Modi zeigen unsere Screenshots nicht, hier muß man dann wohl mit 32x oder besser gleich 64x Anti-Aliasing ankommen, um noch eine wirklich merkbare Verbesserung zu erreichen.

Davon abgesehen unterstützen die getesteten Grafikkarten-Serien beider Grafikchip-Entwickler nun auch noch Anti-Aliasing auf transparente Texturen, bei nVidia "Transparenz Anti-Aliasing" (TAA) und bei ATI "Adaptive Anti-Aliasing" (AAA) genannt. Dieses Transparenz Anti-Aliasing (wir verwenden nachfolgend allgemein den nVidia-Begriff, da dieser die Sache klarer beschreibt) kümmert sich um diese Lücken, welche Multisampling Anti-Aliasing läßt: Da dieses nur an echten Kanten glättet, werden Kanten, die nur innerhalb von Texturen liegen, von Multisampling Anti-Aliasing nicht mit erfasst und somit nicht geglättet.

Dabei ist die Nutzung von Texturen, welche Objektkanten innerhalb der Textur selber enthalten, gar nicht einmal so selten: So baut kaum ein Spielentwickler ein einfaches Geländer geometrisch korrekt aus Einzelelementen auf – dies würde die nötige Arbeit nur potenzieren und die Leistungsanforderungen für die aufwendigere Szenengeometrie in die Höhe schieben. Der Einfachheit halber bedient man sich einfach einer Geländer-Textur, in welcher die Elemente des Geländers eingezeichnet sind und die restlichen Stellen als transparent definiert sind, um im realen Spiel dann die dahinterliegenden Objekte sehen zu können. Nachteiligerweise kann Multisampling Anti-Aliasing dies natürlich nicht glätten, weil es die Kanten, die innerhalb der Textur selber liegen, nicht erkennen kann.

Hier kommt nun Transparenz Anti-Aliasing ins Spiel, welches immer dann, wenn transparente Texturen verwendet werden, diese mit einem zusätzlichen Anti-Aliasing für die Textur selber überzieht. Zumeist verwendet man dabei ein 4x Supersampling (nVidia hat auch einen zusätzlichen TAA-Modus mit 4x Multisampling im Angebot, welcher jedoch keine besondere Wirkung hat), welches wie gesagt nur für die transparente Textur selber zum Einsatz kommt, nicht für das gesamte Bild. Welches enormen Effekt dieses Transparenz Anti-Aliasing entfalten kann, sei an nachfolgendem Screenshot aus Half-Life 2 demonstriert (MouseOver-Effekt per Javascript, Alternativ-Variante: Klick öffnet beide Screenshots im unkomprimierten Großformat):

Gerade mit diesem Screenshot-Vergleich sollte deutlich werden, wie enorm die Wirkung von Transparenz Anti-Aliasing sein kann – was uns wiederum dazu führt, welche Bedeutung man diesem Feature inzwischen einräumen sollte. Gerade in der heutigen Zeit, wo die Augen des Anwenders von sauber kantengeglätteten Objekten verwöhnt sind, fallen schließlich jene Strukturen, welche sich Multisampling Anti-Aliasing bisher hartnäckig zur Wehr gesetzt haben, um so stärker auf – und sollten demzufolge um so energischer bekämpft werden.

Demzufolge ist die Hinzunahme von TAA bei nVidia und AAA bei ATI zur Featurepalette der jeweils aktuellen Grafikchip-Generation nur zu begrüßen. Offiziell ist ATIs Adaptive Anti-Aliasing, einstmals allein für die Radeon X1x00 Serie angekündigt, inzwischen ja auch bei allen ATI-Grafikchips seit der Radeon 9500/9700 Serie verfügbar. Auf nVidia-Seite scheint sich derzeit ähnliches anzubahnen: Offiziell ist nVidias Transparenz Anti-Aliasing bisher nur für die GeForce7-Serie verfügbar, ein neuer Beta-Treiber ermöglicht das Feature allerdings nun auch bei den Grafikkarten der GeForce6-Serie.

Und letztlich wäre zum Thema Anti-Aliasing noch zu erwähnen, daß nVidia mit der GeForce8-Serie einen alten Nachteil der bisherigen nVidia-Grafikchips beseitigt hat, welche im gewöhnlichen kein Anti-Aliasing unter HDR-Rendering boten. Die GeForce8-Serie ist nunmehr dazu in der Lage und zieht diesbezüglich nun mit den ATI-Karten gleichauf.