Zum 3DCenter Forum
Inhalt




GeForceFX Anti-Aliasing auf GeForce3 und 4

24. November 2002 / von aths / Seite 1 von 3


"Kanten ohne Anti-Aliasing sind wie Texturen ohne Filter" könnte man sagen. Die ersten Textur-Filter waren vom Aufwand her relativ anspruchslos, inzwischen gibt es ausgeklügelte Methoden. Aber auch bei der Kantenglättung blieb die Entwicklung natürlich nicht stehen. nVidias "neuen" Anti-Aliasing Modi der GeForceFX nahmen wir bereits unter die Lupe und stellten hierbei fest, dass eigentlich alles beim alten blieb, sowie dass man diese Modi theoretisch genauso gut auch schon ab der GeForce3 realisieren könnte.

Genau ist dies mit den 40.72er und 41.03er Detonator-Treibern aber auch tatsächlich möglich. Mit dem richtigen Treiber stehen GeForce3 /Ti und GeForce4 Ti Nutzern die Anti-Aliasing Modi der GeForceFX genauso zur Verfügung. Zwar sind die neuen Modi 6xS und 8xS nicht im Treiber selber einstellbar, aber über unser GeForce-Tweaktool aTuner ab der Version 1.2.4.1 erreichbar. Leider funktioniert dies momentan nur unter Direct3D und nicht unter OpenGL, weil im Treiber bislang nur Direct3D mit den neuen Modi bedacht wurde.

Die letzten beiden Einträge unten: Neue Anti-Aliasing Modi im aTuner.
Die letzten beiden Einträge unten: Neue Anti-Aliasing Modi im aTuner.


Da wir uns bereits einmal ausführlich mit den neuen Anti-Aliasing Modi der GeForceFX beschäftigt haben, möchten wir hier jetzt nur noch den Beweis für die Richtigkeit unserer damaligen Vermutung antreten und im Anschluss eine Handvoll Sätze zur praktischen Qualität des Anti-Aiasings der GeForceFX verlieren. Als Grundlage hierfür verwendeten wir mangels einer GeForceFX eine GeForce4 Ti4600, welcher wir mittels des aTuners die entsprechenden neuen Modi "beibrachten".

Aufmerksam auf die Möglichkeit, höhere Anti-Aliasing Modi als bisher realisieren zu können, wurden wir durch ein Posting im Beyond3D-Forum. Der Hintergrund ist folgender: Reverend probierte seinerzeit für seine GeForce3 in Direct3D in der Registry höhere Werte für den AA-Modus einzutragen als mit dem Treiber möglich. Die "Über-Modi" entpuppten sich als 4x 9 tap, 4xS und das inzwischen wieder deaktivierte "Quincunx xS". Genau das gleiche probierte nun jemand auf gut Glück im 40.72er Treiber und hatte Erfolg: Die eigentlich nur für die GeForceFX vorgesehenen Modi wurden entdeckt.

Jener 40.72er Treiber (der 41.03er Treiber kann dies genauso) liefert somit auch gleichzeitig den Beweis, dass unsere Vermutungen zum Aufbau des nVidia 6xS und 8xS Anti-Aliasings im Artikel zum Anti-Aliasing der GeForceFX richtig sind, was wir nun anhand von Screenshots belegen können. Dafür verwenden wir eine PoverVR-Demo namens D3DTubes.

Vorab noch einmal die Subpixel-Maske für den nVidia 6xS-Modus:


Das Muster ist alternierend, d.h. wechselnd steht jede zweite Position innerhalb einer Zeile auf dem Kopf. Es handelt sich um 2x Rotated Grid Multisampling kombiniert mit 1,5 x 2-fach Oversampling.
Das Muster ist alternierend, d.h. wechselnd steht jede zweite Position innerhalb einer Zeile auf dem Kopf.
Es handelt sich um 2x Rotated Grid Multisampling kombiniert mit 1,5 x 2-fach Oversampling.


Zunächst liefert der 6xS-Modus bei horizontalen Linien eine gewisse "Rauheit":


Die scheinbare Rasterung weist auf die alternierende Maske hin.
Die scheinbare Rasterung weist auf die alternierende Maske hin.


Dass es sich wirklich um einen 6xS-Modus handelt, wird mit folgendem Bild bewiesen:


5 Zwischenstufen erfordern 6 Subpixel.
5 Zwischenstufen erfordern 6 Subpixel.


Einige Zwischenstufen sind nur ein Pixel groß, oft sind sie gar nicht zu sehen. Es bleiben in der Vertikalen also 2 relevante Zwischenstufen = 3 relevante Gesamtstufen auf der X-Achse. Die Anzahl der relevanten Stufen auf der Y-Achse zu bestimmen, ist angesichts der Rasterung bei horizontalen Linien etwas schwierig. Je nach dem, ob man die "Rasterung" als eine Zwischenstufe mitzählt oder als zwei, bekommt man 4 bzw. 6 relevante Gesamt-Abstufungen. Nach unserer Einschätzung kann man aber eher von "4 effektiven" Stufen sprechen und die Rasterung ist in der Praxis bei kontrastreichen Kanten nicht gerade ansprechend. Wir haben hierzu einen 6xS-Screenshot angefertigt:


Die besprochenen Merkmale sind rot eingerahmt (für großes Bild klicken).
Die besprochenen Merkmale sind rot eingerahmt
(für großes Bild klicken).


Im oben schon genannten Beyond3D-Forumsthread hat Xmas herausgefunden, dass die Gewichtung der Subpixel ungleichmäßig ist: Die "Rand"-Subpixel (die sich über eine Pixel-Grenze einen gemeinsamen Farbwert teilen) werden doppelt so stark gewichtet. Das war vielleicht deshalb notwendig, weil sich die mathematische Operation "geteilt durch 8" (4 x 1 Gewicht + 2 x 2 Gewichte = 8 Gewichte) in der Binärlogik schaltungstechnisch viel einfacher realisieren lässt als "geteilt durch 6". Der Raster-Effekt scheint durch die ungleiche Gewichtung jedenfalls noch verstärkt zu werden.






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

Shortcuts
nach oben