Supersampling Anti-Aliasing auf GeForce GTX 470/480

Sonntag, 25. April 2010
 / von Leonidas
 

Nach wie vor gilt Supersampling Anti-Aliasing als der "heilige Gral" beim Thema Anti-Aliasing – keine andere Anti-Aliasing Art ist in der Frage der Bildqualität derart kompromisslos. Bei Supersampling Anti-Aliasing wird eben wirklich jeder Pixel mehrfach angefasst (und nicht nur die Polygonkanten wie bei Multisampling Anti-Aliasing), wodurch Supersampling Anti-Aliasing auch auf transparente Texturen, hochfrequente Texturen und per Shader erzeugte Objekte wirkt. Das Resultat ist nicht nur eine bessere Kantenglättung, sondern ein deutlich ruhigeres Bild, weil die Wirkungsweise von Supersampling Anti-Aliasing gleichzeitig auch flimmernde Texturen sehr effektiv bekämpft.

Der große Nachteil von Supersampling Anti-Aliasing sind natürlich die hohen Leistungsanforderungen – aus diesem Grunde haben die Grafikchip-Entwickler lange Zeit auf Multisampling Anti-Aliasing gesetzt, weil dies zu deutlich geringeren Leistungsanforderungen immer noch gute Kantenglättungs-Ergebnisse erzielt (jedoch nichts gegen das Texturenflimmern tun kann). Supersampling Anti-Aliasing ist erst in letzter Zeit wieder interessant geworden, als in den letzten zwei bis drei Jahren die Anforderungen an die Grafikkarten durch die jeweils optisch schönsten Spiele nicht mehr wesentlich gestiegen sind, gleichzeitig aber die zur Verfügung stehende Grafik-Power natürlich weiterhin stark zugenommen hat.

Es gibt heuer also gerade bei HighEnd-Grafikkarten deutlich mehr Leistungsreserven, welche brachliegen würden, wenn man diese nicht in eine bessere Bildqualität zu investieren versuchen würde. Dafür bietet sich Supersampling Anti-Aliasing nunmehr nahezu perfekt an, weil sowohl eine klar höhere Bildqualität erzeugt wird als auch der Leistungsbedarf dieses Features ausreichend hoch ist, um notfalls jegliche Performancereserven abzubauen.

Demzufolge ist es durchaus goutiert wurden, als ATI mit der Radeon HD 5800 Serie Supersampling Anti-Aliasing wieder als offizielles Feature brachte. Leider ist das Feature – ganz unabhängig von dieser Grafikkarten-Serie oder auch ATI – heutzutage normalerweise in der Praxis nicht durchgehend nutzbar, da die Spezifikationen von DirectX 10/11 das Forcieren von Anti-Aliasing per Treiber untersagen. Nur noch das DirectX-10/11-Spiel selber darf den Anti-Aliasing Modus anfordern – Supersampling Anti-Aliasing müsste also von den Spieleentwicklern beachtet und entsprechend eingebaut werden. Trotz daß dies keinerlei wirklichen Aufwand bedeutet (es würde nur darum gehen, im Anti-Aliasing Menü des Spiels diese Möglichkeit zusätzlich anzubieten – eine Arbeit von 5 Minuten), gibt es derzeit keine DirectX-10/11-Spiele mit direkter Unterstützung von Supersampling Anti-Aliasing, womit dieses Feature rein praktisch gesehen auf DirectX9-Spiele beschränkt bleibt (wo die Forcierung per Treiber weiterhin erlaubt ist).

Sicherlich kann man sich diesbezüglich auf den Standpunkt stellen, daß Supersampling Anti-Aliasing aufgrund seines hohen Leistungsbedarfs sowieso eher ein Feature für ältere Spiele ist – allein, dies spielt dem Feature auch nicht in die Hände, weil mit fortschreitender Zeit sich immer mehr DirectX10-Titel unter diesem Label "ältere Spiele" einfinden und die DirectX9-Titel dann auch irgendwann einmal zu alt und damit uninteressant werden. So lange die Spieleentwickler Supersampling Anti-Aliasing nicht direkt unterstützen, arbeitet die Zeit eindeutig gegen dieses Feature, weil die damit verschönerbaren Spiele immer älter werden und keine neuen Titel hinzukommen. Dementsprechend bleibt Supersampling Anti-Aliasing auf den neuen ATI-Karten auch weiterhin ein halbgares Feature.

nVidia hat diesbezüglich mit der GeForce GTX 400 Serie erst einmal keine neuen Anstrengungen unternommen, obwohl auch bei diesen Beschleunigern eine Möglichkeit zum Verbraten überschüssiger Leistungsreserven sicherlich gern gesehen wäre. Nun aber scheint – möglicherweise durch einen Treiberfehler – auch Supersampling Anti-Aliasing auf GeForce GTX 470/480 Karten möglich, wie in unserem Forum entdeckt wurde. Der Dank geht hierbei erst einmal an den Threadstarter Blaire, welcher die Sache mit seinen Screenshots ins Rollen brachte – und dann natürlich auch an alle anderen Threadteilnehmer, welche dann im Laufe der Diskussion die Thematik herausgearbeitet haben.

Basierend auf den Erkenntnissen dieses Foren-Threads lässt sich konstatieren, daß unter den GeForce GTX 470/480 Grafikkarten (nicht aber den früheren nVidia-Grafikkarten) mittels eines recht einfachen Kniffs Supersampling Anti-Aliasing unter DirectX-10/11-Spielen möglich ist. Ironischerweise funktioniert dies derzeit nicht unter DirectX9-Titeln – aber dies dürfte wohl dem Punkt geschuldet sein, daß sich diese Möglichkeit aus einem augenscheinlichen Fehler des Treibers ergibt. Denn der genannte Kniff besteht schlicht darin, im Treiber das schon lange bekannte Transparenz Supersampling Anti-Aliasing (TSSAA) zu aktivieren – zusammen mit der Aktivierung von regulärem Multisampling Anti-Aliasing im Spiel werden dann unter DirectX-10/11-Titeln aber nicht nur transparente Texturen mit Supersampling Anti-Aliasing versorgt, sondern scheinbar das komplette Bild.

Ob man dieses Anti-Aliasing wirklich als "Full-Scene Supersampling Anti-Aliasing" (FSSSAA) bezeichnen kann, ist noch Gegenstand von Diskussionen, da sich in einigen Spielen durchaus Zweifel an dieser Klassifizierung ergeben. Allerdings ist es ganz deutlich (viel) mehr als das normale Transparenz Anti-Aliasing und in vielen Spielen entsteht auch der absolute Eindruck von Full-Scene Supersampling Anti-Aliasing. Zudem lässt sich das stärkere Wirken dieses Supersampling Anti-Aliasings problemlos mit dem entsprechenden Testwerkzeug nachweisen (Textured FSAA-Tester, Bilder mit freundlicher Genehmigung von LovesuckZ):


MouseOut: 8x MSAA (Originalbild), Mouseover: 8x MSAA + 8x TSSAA = 8x SSAA (Originalbild)

Wie gut in diesem Vergleich zwischen normalen 8x Multisampling Anti-Aliasing auf der einen Seite und 8x Multisampling Anti-Aliasing samt 8x Transparenz Supersampling Anti-Aliasing (was dann insgesamt 8x Supersampling Anti-Aliasing ergibt) auf der anderen Seite zu sehen ist, wirkt das Supersampling Anti-Aliasing auch auf und damit innerhalb von Texturen. Hierbei werden sowohl die Schriftarten als auch die innerhalb von Texturen liegenden Kanten (welche nicht mittels Dreiecken gebildet und damit für gewöhnliches Multisampling Anti-Aliasing unsichtbar sind) ebenfalls geglättet. Da dieses Testtool keine transparenten Texturen verwendet, ist dies auch nicht mit einem eventuell wirkendnm Transparenz Anti-Aliasing zu erklären – das Bild von 8x Multisampling Anti-Aliasing samt 8x Transparenz Multisampling Anti-Aliasing sieht exakt so aus wie das Bild mit nur 8x Multisampling Anti-Aliasing.

Selbst für den eigentlich nur in Bewegung zu sehenden Effekt des Texturenflimmerns läßt sich mittels dieser Bilder schon erahnen, daß dieser Effekt in der Variante mit Supersampling Anti-Aliasing klar schwächer ausfallen wird: Dazu muß man sich nur auf die innerhalb der Texturen liegenden Kanten konzentrieren, welche bei dem Bild mit reinem Multisampling Anti-Aliasing schließlich keine Kantenglättung abbekommen haben. Wenn man sich diese nicht geglätteten Kanten gedanklich in Bewegung vorstellt (kann man mittels MouseOver auch grob simulieren), ergibt sich sofort das bekannten Texturenflimmern. Auf dem Bild mit Supersampling Anti-Aliasing sind auch diese Kanten dann geglättet, der Effekt des Texturenflimmerns dürfte in Bewegung kaum noch auftreten.

Insofern sieht dies schon sehr stark nach regulärem Full-Scene Supersampling Anti-Aliasing – dafür sprechen auch einige in unserem Forum angestellte Benchmarks, welchen den für Supersampling Anti-Aliasing typischen heftigen Performanceeinbruch zeigen. Mit dem eigentlichen Transparenz Anti-Aliasing hat dies beiderseits nichts zu tun: Dazu passt weder die gebotenen höhere Bildqualität als auch der erheblich höhere Performanceverlust. Und letzterer ist nach wie vor so erheblich, daß sich Supersampling Anti-Aliasing wirklich nur für HighEnd-Hardware lohnt (Testergebnisse eines unbekannten Gast-Posters):

Benchmark Supersampling Anti-Aliasing @ GeForce GTX 480

Zu beachten wäre bei diesen Benchmarks (und bei der Nutzung von Supersampling Anti-Aliasing mit GeForce GTX 470 & 480), daß das Supersampling Anti-Aliasing immer nur maximal jenes Level erreicht, welches an normalem Multisampling Anti-Aliasing ausgewählt wurde. Bei den vorstehenden Benchmarks wurde 16x Coverage Sampling Anti-Aliasing verwendet, welches auf 8x Multisampling Anti-Aliasing basiert – somit ist maximal 8x Supersampling Anti-Aliasing erreichbar. Wählt man dagegen nur 4x Multisampling Anti-Aliasing aus, ist auch maximal nur 4x Supersampling Anti-Aliasing erreichbar.

Dafür aber kann man beide Modi so mixen, daß die Performance immer stimmt: Es wird nämlich nicht immer das gesamte Multisampling Anti-Aliasing in Supersampling Anti-Aliasing umgewandelt, sondern nur dieser Teil, welchen man bei der Auswahl des Transparenz Anti-Aliasings aktiviert. Sprich, wählt man im Spiel 8x Multisampling Anti-Aliasing und im Treiber 2x (Transparenz) Supersampling Anti-Aliasing aus, erhält man letztlich ein 8x Anti-Aliasing mit einem Mix aus 4x Multisampling und 2x Supersampling. Wählt man im Spiel 8x Multisampling Anti-Aliasing und im Treiber 4x (Transparenz) Supersampling Anti-Aliasing aus, erhält man ein 8x Anti-Aliasing mit einem Mix aus 2x Multisampling und 4x Supersampling und erst wenn man im Spiel 8x Multisampling Anti-Aliasing und im Treiber 8x (Transparenz) Supersampling Anti-Aliasing auswählt, erhält man ein reines 8x Supersampling Anti-Aliasing.

Mit 4x Anti-Aliasing sind ebenfalls Mischmodi möglich: Wählt man im Spiel 4x Multisampling Anti-Aliasing und im Treiber 2x (Transparenz) Supersampling Anti-Aliasing aus, erhält man ein 4x Anti-Aliasing mit einem Mix aus 2x Multisampling und 2x Supersampling. Erst wenn man im Spiel 4x Multisampling Anti-Aliasing und im Treiber ebenfalls 4x (Transparenz) Supersampling Anti-Aliasing auswählt, erhält man ein reines 4x Supersampling Anti-Aliasing – gleiches gilt dann auch für den Fall 2x Anti-Aliasing: Wählt man dort im Spiel 2x Multisampling Anti-Aliasing und im Treiber 2x (Transparenz) Supersampling Anti-Aliasing aus, erhält man ein reines 2x Supersampling Anti-Aliasing. Bei den diversen Coverage Sampling Anti-Aliasing Modi kommt es dann darauf an, auf welcher Multisampling-Lösung diese jeweils basieren: 8x CSAA und 16x CSAA basieren auf 4x Multisampling Anti-Aliasing und nur 8xQ CSAA, 16xQ CSAA und 32x CSAA basieren auf 8x Multisampling Anti-Aliasing.

Spiel Treiber ergibt
2x MSAA 2x TSSAA 2x SSAA
4x MSAA, 8x CSAA, 16x CSAA 2x TSSAA 2x MSAA + 2x SSAA
4x MSAA, 8x CSAA, 16x CSAA 4x TSSAA 4x SSAA
8x MSAA, 8xQ, CSAA, 16xQ CSAA, 32x CSAA 2x TSSAA 4x MSAA + 2x SSAA
8x MSAA, 8xQ, CSAA, 16xQ CSAA, 32x CSAA 4x TSSAA 2x MSAA + 4x SSAA
8x MSAA, 8xQ, CSAA, 16xQ CSAA, 32x CSAA 8x TSSAA 8x SSAA

So zumindest die derzeitige Lage, wo man unter Ausnutzung eines Treiberfehlers unter der Aktivierung von vermeintlich Transparenz Supersampling Anti-Aliasing dann ein Full-Scene Supersampling Anti-Aliasing erhält. Da die ganze Sache wie gesagt auf einem augenscheinlichen Fehler des Treibers passiert, ist nicht sicher, was nVidia hieraus in zukünftigen Treiberversionen macht – die uns dabei am meisten zusagendste Lösung wäre natürlich, wenn das normale Transparenz Supersampling Anti-Aliasing wieder zurückkehrt und das neue Full-Scene Supersampling Anti-Aliasing mittels eines extra Schalters direkt anwählbar wird.

Dann könnte man nämlich auch einen kleinen Fehler dieses Supersampling Anti-Aliasings ausmerzen: Derzeit wird das Level of Detail (LOD) für entfernt liegenden Texturen nicht angepasst, wie man es üblicherweise bei hohen Leveln von Supersampling Anti-Aliasing tut. Damit wird verhindert, daß bei gleichzeitig hohen Leveln des anisotropen Filters entfernt liegende Texturen (in Bewegung) zum Flimmern neigen. Reguläre Supersampling Anti-Aliasing Lösungen haben dies LOD-Anpassung "früher" ganz automatisch getan, insofern ist dies wohl auch bei nVidias neuem Supersampling Anti-Aliasing problemlos möglich, wenn man seitens nVidia nur daran denkt.

Abzuwarten bleibt allerdings noch, wie dies alles mit dem Zwang von DirectX 10/11 zu vereinen ist, kein Anti-Aliasing mehr per Treiber forcieren zu dürfen. Gut möglich, daß nVidia keinen legalen Weg an dieser Regel vorbei sieht und das Feature zukünftig zwar inoffiziell ermöglicht, aber nicht in den nVidia-eigenen Treiberpanels anbieten wird. Es würde dann zur Aufgabe von Tweaktool-Schreibern werden, Full-Scene Supersampling Anti-Aliasing den Nutzern von nVidia-Grafikkarten anzubieten – dies würde im übrigen zu der früheren Meldung passen, nVidia wolle zukünftig mehr in die Richtung externer Tweaktools hin tun.

Am wichtigsten ist jedoch sicherlich, daß nVidia das ganze nicht als "Fehler" aus seinen Treiber entfernt und es dann nie wieder auftaucht – weil hier existiert mal eine Lösung, mittels welcher Supersampling Anti-Aliasing eben auch bei DirectX-10/11-Spielen möglich wird, womit dieses Feature nicht so blutleer ist wie das Supersampling Anti-Aliasing der Radeon HD 5000 Serie, welches auf DirectX9-Spiele beschränkt bleibt. nVidia könnte mit diesem Feature mal wieder ganz klar mit der besseren Bildqualität bei der GeForce GTX 400 Grafikkarten-Serie punkten – bleibt zu hoffen, daß man sich nun auch zu diesem seitens der Nutzer hochwillkommenen Feature bekennt.

Wir danken an dieser Stelle den im entsprechenden Forums-Thread beteiligten Usern für die Aufdeckung dieser Möglichkeit und verweisen zudem noch auf die in diesem Thread zu besichtigenden diversen Screenshots mit Supersampling Anti-Aliasing auf GeForce GTX 470/480 Karten.