Transparenz-Antialiasing auf der GeForce6
12. Oktober 2006 / von aths / Seite 1 von 1
Mit dem 91.45-er Forceware-Treiber hat Nvidia Transparenz-Antialiasing auch für die GeForce6-Serie freigeschaltet. Primär geschah dies natürlich, um der GeForce 7100 GS die versprochenen Funktionalität zu ermöglichen - als einzige Karte der GeForce7-Serie basiert diese nicht auf einem G7x-Chip (sondern dem NV44), bietet aber trotzdem ganz offiziell auch Transparenz-Antialiasing an. Ob es nicht anders ging oder ob es ein Versehen war, jedenfalls brachte die Aktivierung von Transparenz-Antialiasing für die GeForce 7100 GS mit sich, daß auch alle anderen Karten der GeForce6-Serie nun über dieses Feature ab der Treiberversion 91.45 verfügen können. Zudem unterstützt auch der aktuelle aTuner jenes Feature für die GeForce6. Wir wollen die Gelegenheit nutzen, uns kurz mit den Transparenz-Modi zu beschäftigen.
Zuvor einige Abkürzungen zur Klärung: Wir nennen Transparenz-Antialiasing auf GeForce "TAA". ATI nennt ein ähnliches Verfahren "AAA" (Adaptives Antialiasing) und nutzt die Abkürzung "TAA" stattdessen für "Temporales Antialiasing" - was mit Transparenz-Antialiasing nichts zu tun hat. Zudem gibt es bei dem Transparenz-Antialiasing von nVidia zwei unterschiedliche Verfahren: Einmal mit Supersampling, welches wir nachfolgend TAA-SS oder TAA-SS nennen - und eines mit Multisampling, welches wir entsprechend TAA-MS oder TMSAA nennen.
Erreichbar ist das Transparenz-Antialiasing bei nVidia wie gesagt ab dem 91.45-er Treiber über das normale Treibermenü: Sowohl im alten als auch im neuen Control Panel ist es unter den erweiteren 3D-Optionen zu finden und bietet dort die Optionen Supersampling Transparenz-Antialiasing und Multisampling Transparenz-Antialiasing. Im aTuner ist Transparenz-Antialiasing direkt im Hauptmenü des Programms integriert:
TAA mit Supersampling
Full-Screen-Supersampling berechnet das gesamte Bild in höherer Auflösung. Multisampling berechnet nur die Geometrie in höherer Auflösung, aber nicht die Texturen. Das ist sinnvoll, da man gute Texturen mit guten Texturfiltern viel effizienter berechnen kann und sich für die Kantenglättung nur um die Polygon-Kanten kümmern muss. Es sei denn, das Spiel nutzt Alphatest ohne Alphablending.
Der Alphawert gibt den Transparenzgrad an, von 0 bis 1. Beim Alphatest wird vom Entwickler eine Schwelle festgesetzt, ab wann genau das komplette Pixel durchsichtig sein soll. Beim Alphablending wird hingegen abgestufte Transparenz ermöglicht, in dem man Vordergrund- und Hintergrund-Pixel entsprechend dem Alphawert mischt. Beim Blending kann man also um die Texturlöcher herum sanfte Übergänge realisieren.
Beim reinen Alphatesting hat man jedoch in der Textur entweder ein sichtbares oder unsichtbares Pixel. Da Multisampling nur Polygonkanten glättet, aber keine Texturen beeinflusst, führt das dann innerhalb der Textur zu Aliasing. Dies wird sogar umso schlimmer, je höher man den AF-Grad wählt. Leider setzen viele Spiele aus Performancegründen heute noch auf reines Alphatesting. Die GeForce 6 und 7 können nun unterscheiden: Ist der reine Alphatest (also ohne Blending) aktiviert, wird das Polygon mit Supersampling berechnet - ansonsten mit Multisampling.
Dieses Verfahren kombiniert die Vorteile von Multisampling (wenig Geschwindigkeitsverlust) und Supersampling (Qualitätssteigerung auch dann, wenn Multisampling versagt). Natürlich führt eine hohe Anzahl an Texturen, für welche der reine Alphatest aktiviert ist dazu, dass dann das meiste mit Supersampling gerendert werden muss - der Geschwindigkeitseinbruch ist dann ziemlich hoch. Doch in fast allen Fällen ist der Qualitätsgewinn höher als der Geschwindigkeitsverlust. Viele Spiele wie World of Warcraft oder Half-Life 2 profitieren erheblich davon.
Das Supersampling wird mit sparse grid durchgeführt, ohne dass die GeForce-Serie eine spezielle Logik dafür hat. Deshalb geht das betroffene Polygon mehrfach durch die Pipeline, jedesmal entsprechend auf die Subpixelposition angepasst.
TAA mit Multisampling
Eine zweite Möglichkeit ist es, Alphablending nachzubilden. Ganz so einfach ist das natürlich nicht, da man hierfür die "Alpha-to-Coverage"-Funktionalität braucht. Diese ist allerdings schon seit der GeForce3 vorhanden. Hier wird aus dem Alphawert einfach eine Deckungsinformation gemacht, Beispiel: Bei 25% Bedeckung und 4x Multisampling wird ein Subpixel als "bedeckt", die anderen drei Subpixel als "durchsichtig" behandelt. Nun hat man bei 4x Multisampling offensichtlich nur die Stufen 25%, 50%, 75% und 100% Abdeckung.
Deshalb baute Nvidia – schon in der GeForce6 – einen Dithering-Algoritmus ein. Intern werden 16 Stufen unterschieden, dies wird dann auf bis zu 4 Subpixel pro Pixel gedithert. Bei 2x Multisampling wird auf 8 Stufen gedithert. Diese Rasterung ist allerdings manchmal sichtbar, weshalb nicht alle gefallen an dieser Methode finden dürften.
Trotzdem ist es bei Texturvergrößerung oft angenehmer, Alphatest-Kanten mit TAA-MS zu behandeln. Bei Texturverkleinerung ist das Supersampling-Verfahren allerdings überlegen, je nach Situation mehr oder weniger deutlich. Dies liegt auch darin begründet, dass nicht unbedingt lineares Blending nachgebildet wird, sondern je nach Alpha-Schwellwert der geblendete Bereich dünner sein kann. Das führt im Vordergrund zu schärferen Abgrenzungen, im Hintergrund aber zu einer schlechteren Glättung.
Leider wird keine Option geboten, je nach Texturzoomfaktor (also Vergrößerung oder Verkleinerung) die eine oder andere Methode zu verwenden. Wenn man TAA zuschaltet, gilt die Multi- oder Supersampling-Variante immer für das gesamte Bild.
Kombinationsmöglichkeiten und die Leistungsfrage
Doch es gibt eine andere Kombinationsmöglichkeit, denn TAA-SS und -MS funktioniert auch im Zusammenhang mit Antialiasing-Modi, in die bereits ein fester Supersampling-Anteil integriert ist. Dies bringt klare Vorteile: Beispielsweise glättet der 8xS-Modus die Kanten auf der X-Achse 4-fach, auf der Y-Achse 8-fach. Texturen werden aber nur auf der Y-Achse geglättet, und das gerade mal 2-fach. Mit TAA-SS kommt die volle Glättung (4x auf der X-Achse, 8x auf der Y-Achse) auch Alphatesting-Kanten zugute. TAA-SS entbindet den qualitätsbewussten Anwender vom Zwang, Alphatest-Artefakte mit einem generell hohen Supersampling-Anteil zu bekämpfen, somit spart man erheblich an Rechenleistung.
Natürlich gehen beide Glättungsmethoden zulasten der Geschwindigkeit - doch der Qualitätsgewinn ist je nach Spiel erheblich. Wer eine GeForce 6600 GT hat und eigentlich mit 4x Multisampling spielt, muss für TAA-SS vielleicht auf 2x herunterschalten: Dafür ist dann aber das gesamte Bild geglättet. In der Regel ist der Geschwindigkeitsverlust aber erträglich, so dass man auch mit 4x TAA-SS spielen kann, falls es vorher für 4x Multisampling gereicht hat.
Zwar reicht bei modernen Spielen auf einer GeForce 6600 GT die Leistung in aller Regel nur noch für 2x Antialiasing, aber auch bei 2x TAA-SS wird ein deutlich besseres Bild geboten, als wenn man gar kein Antialising oder nur reines Multisampling hätte. Nachfolgend ein paar Screenshots einer GeForce Go 6800 aus dem AddOn "Episode 1" für Half-Life 2 (Klick öffnet die Screenshots im unkomprimierten Großformat):
Auffallend ist dabei der praktische Unterschied zwischen TAA-MS und TAA-SS: Während TAA-MS mit der etwas groberen Geländerstruktur auf den oberen Screenshots noch vernünftig zurechtkommt, kann bei der sehr feinmaschigen Gitterstruktur auf den unteren Screenshots dann nur noch TAA-SS etwas ausrichten.
Und was bietet ATI?
ATIs AAA basiert ausschließlich auf der Supersampling-Methode. Wenn man 6x Multisampling aktiviert hat, kann man adaptives 6x Supersampling aktivieren, aber auch weniger Supersampling-Subsamples nutzen. Letzteres wird von aTuner nicht unterstützt, sondern nur generell AAA on oder off. Bei ATI funktioniert AAA offiziell ab der Radeon X1000 Serie, tatsächlich aber kann schon eine Radeon 9700 AAA anbieten.
Fazit
Sowohl ATI als auch Nvidia nutzen ihre Verfahren zur Verbesserung des gesamtes Bildes als Marketing-Instrument für akutelle Grafikchips, dabei beherrschen auch schon ältere Karten diese interessanten Möglichkeiten. Hierbei sollte man nicht nur einseitig auf den Geschwindigkeit schauen und argumentieren, dass ohnehin nur die aktuellen starken Modelle genügend Leistung hierfür hätten. Wenn auch für Alphatest-Kanten Antialiasing gemacht wird, ohne gleich Full-Screen-Supersampling zu verwenden, hat man hiermit eine effiziente Methode zur Bildqualitätssteigerung, von der auch die Einsteiger- und Mittelklassen-Modelle profitieren.