nVidia: Neue (und alte) Filtertricks
16. Februar 2006 / von Mr. Lolman / Seite 1 von 3
Am PC Antialiasing (AA) und anisotrope Filterung (AF) zu aktivieren, ist für die meisten Spieler erst seit einigen Jahren gang und gäbe. Dabei gibt es die Features schon seit mehr als einem halben Jahrzehnt. Damals waren sie jedoch aufgrund diverser Fehlinterpretationen entweder verkannt, oder die vorhandene Leistung reichte nicht aus, um weiterhin flüssige Grafik zu gewährleisten. So wurde 3dfx' bis vor kurzem qualitativ unübertroffenes Supersampling-Antialiasing teilweise einem Blurfilter (nVidias "Quincunx") gleichgestellt. Auch Hardwareseiten, die den Nutzen von Bildqualitäts-Features erkannten, strichen beim Vergleich der Glättungsqualität oftmals die Segel.
Während bei Konsolen die tatsächliche Nutzung von AA/AF gerade erst Einzug erhält, wartet mittlerweile quasi jede aktuell kaufbare Grafikkarte mit derartigen Einstellungen auf. So brauchte man im Jahr 2000 noch eine - mittlerweile legendäre - 3dfx Voodoo5, um Spiele mit schönem 4xSGSSAA zu einem flimmerfreiem Bild zu bewegen. Heutzutage jedoch erlaubt schon eine Grafikkarte für unter 100 € den Genuss von elegant glatten Kanten und dementsprechend flimmerfreien Bildern.
Wieso, werden sich einige fragen, hört man dann die Spatzen von den Dächern pfeifen, dass nVidias aktuelles Flaggschiff, der G70 zum Texturflimmern neigt? Wie bekommt man nun die bestmögliche Bildqualität, wer hat mit den ganzen "Optimierungen" angefangen und wie kann man dieses Dilemma beenden?
Die optimale Bildqualität
Nun ist es zunächst so, dass ein bewegtes Bild, ohne Bildqualitäts-verbessernde Maßnahmen, primär zum Kantenflimmern neigt. Dieses bekommt man inzwischen, nicht zuletzt dank der neuen Transparenz-AA-Modi, schön in den Griff. Für optisch ansprechende Grafik sind gute Texturen jedoch mindestens genauso wichtig wie glatte Kanten. Und so kommt die nächste Innovation ins Spiel, nämlich eine schärfere Darstellung von verzerrten Texturen mittels des anisotropen Filters. Und an diesem scheiden sich seit einiger Zeit die Geister.
Es wäre viel einfacher, wenn man die HighEnd-Grafikarten nicht immer gegeneinander antreten lassen würde. Was hat man nicht schon alles gegeneinander gebencht, nur weil die in den Controlpanels angezeigten Optionen auf den ersten Blick ziemlich gleich aussahen: nVidias 16 Bit gegen 3dfx' 22 Bit-Monitorausgabe, nVidias trilinearen Filter gegen 3dfx' Mipmap-Dithering, trilineares AF eines NV20 gegen bilineares AF eines R200, Supersampling-Antialiasing der Radeon 8500 gegen Multisampling Antialiasing einer GeForce3. Die Reviewer gingen dabei offenbar davon aus, dass die Scores den zuvor gehegten Erwartungen genügend ähnlich waren ;).
Teilweise schaffte man es sogar zu Bildqualitätsvergleichen mit Screenshots. Zwar waren die in Ermangelung des notwendigen Bewusstseins über das Testsubjekt nicht immer besonders aussagekräftig, aber darüber sieht der unbedarfte Leser recht gleichgültig hinweg. So macht es auch nichts aus, dass man sich dem Leser anpasst und schlecht komprimierte Bilder online stellt. Aufgrund der auf den Screenshots mitunter schwer erkennbaren Unterschiede der Test-Szenen vergrößert man die Bilder schon mal mit einem (standardmässigen) bilinearen bzw. bikubischen Filter. Das heißt, die einzelnen, oft nur pixelgroßen Unterschiede werden durch Vermischung mit Nachbarpixeln verfälscht (richtig wäre für solche Vergleiche von vergrößerten Bildausschnitten das Filtersetting "nearest neighbour").
Im Gegensatz dazu bekommt man die Benchmarkergebnisse optisch aufwändig präsentiert. Balken blenden sich ins Bild, ampelfarbene Amplituden lenken von den wichtigen fps-Werten ab, doch sind diese alle nicht vergleichbar, solange es keinen gemeinsamen Nenner gibt - die Bildqualität. Nun ist man sich beim für Gamma 2.2 angepasstem 4x MSAA und der Option zur Glättung von (durch Alphatesting verursachtem) Texturkantenflimmern anscheinend einig geworden, beim AF zählt jedoch weiterhin nur die Zahl davor - und nicht der tatsächlich angewendete Filtergrad. Dieser Umstand wird dann natürlich von den GPU-Entwicklern ungeniert zum fps-schinden genutzt.
Zwar ist ATI in der Hinsicht auch kein Unschuldslamm. Jedoch weiß die durch Catalyst "A.I." auf der Low-Einstellung erreichte Kombination zwischen hoher Performance und guter Bildqualität größtenteils zu überzeugen. Während also bei ATI die Texturfilter-Optimierung die Bildqualität im Regelfall nur sehr subtil verschlechtern und deswegen für die meisten Spieler auch nicht erkennbar sein dürfte, so kann es bei nVidia schon einmal durch ein paar falsche Klicks im Controlpanel passieren, dass man trotz vermeintlich bestmöglich eingestellter Settings doch nur eine fps-optimierte, qualitativ minderwertige Bildqualität bekommt.
Sehen wir uns dazu das mittlerweile doch recht alte und inoffiziell deswegen auch schon in einer verfeinerten Version vorhandene Control Panel also noch einmal genauer an. Direkt nach einer Neuinstallation, präsentiert sich einem das nVidia Control Panel folgendermaßen:
Der Systemleistungs-Slider ist anscheinend an die einzelnen Optimierungen gekoppelt, so kann man, wenn die Systemleistung auf "High Quality" steht, die einzelnen Optimierungen (trilinear, anisotrope Mipfilter, anisotropes Muster) nicht mehr ändern. Diese Optionen sind nun ausgegraut und stehen zusätzlich auf "Off".
Doch wenn das Spiel auf nVidias "Optimierungsliste" steht, bekommt man maximal die Qualität, die nVidia einem erlaubt - unterhalb des hardwareseitig machbaren. Bei Unreal Tournament 2004 ist das beispielsweise die erzwungene sogenannte "brilineare" (reduzierte trilineare) Filterung auf nicht-primären Texturesstages. Auch bei Far Cry konnte eine minimale Absenkung der Bildqualität seit den 77er Treibern beobachtet werden.
An dieser Stelle wünschen wir uns unbedingt ein Treibersetting seitens nVidia, welches es erlaubt, ohne jeglicher Einschränkung maximale Bildqualität zu aktivieren, also den aktivierten HighQuality-Modus nicht nur im Control Panel anzuzeigen, sondern auch im 3D-Spiel tatsächlich auf den Monitor zu bringen. Denn wer gibt gerne mehrere 100 € aus, nur um festzustellen, dass bei seinem Lieblings-Oldie plötzlich eine "Bugwelle" im Bild herumwandert.
So eine Bugwelle tritt dann auf, wenn der Übergang zwischen den MIP-Maps nicht korrekt interpoliert wird. Während ATI-Karten beim AF hardwarebedingt zu einer leichten Überfilterung neigen und in Verbindung mit minimal negativerem LOD-Bias geschickt Unzulänglichkeiten ihrer trilinearen Filterung überdecken, so fallen bei nVidias theoretisch korrekterer Implementation des anistropen Filters die Artefakte bilinearer Filterung, eben die scharfen Detailgrad-Übergänge, viel eher auf.
Und eine solche bilineare Filterung bekommt man unter Umständen sogar bei der HighQuality-Treibereinstellung zu Gesicht. Dazu schieben wir an dieser Stelle aber zuerst noch einen kleinen Abriss über nVidias Texturfilter-Optimierungen ein:
- 1. Trilineare Optimierung
- per default aktiv
- Verringert Interpolation zwischen MIP-Maps (gegebenenfalls Neigung zu Bugwellen).
- 2. Anisotrope Mipfilter Optimierung
- per default inaktiv
- Schaltet bei TS>0 (Direct3D) bzw. bei allen Texturen (OpenGL) auf zwangsbilinearem Filter um (MIP-Banding-Neigung). Hat also trotz der missverständlichen Namensgebung nichts mit dem Filter gemein, der für die Erstellung der Mipmaps verantwortlich ist.
- 3. Optimierung des anisotropen Musters
- per default aktiv
- Generelle Unterfilterung findet statt (Bild wird flimmeriger).
"Optimierung" ist ein von nVidia euphemistisch gebrauchter Ausdruck für "auf Qualitätsverschlechterung beruhender Geschwindigkeitsgewinn" (wobei der Fairness halber ATI das Wort im ganz genau demselben Sinn benutzt). Deshalb setzen wir das Wort "Optimierung" generell in Anführungszeichen, wenn es sich um keine echte Optimierung, sondern einfach eine Steigerung der fps-Rate zulasten der Qualität handelt.
Hat man den Treiber nun installiert, AA und AF eingestellt und schaltet dann erst auf HighQuality, wird man, wie vorstehend bereits angedeutet, leicht in OpenGL-Spielen wie Doom 3 oder Quake 3/4 ein MIP-Band feststellen können. Für dieses Phänomen sind gleich zwei Eigenheiten des ForceWare Control Panels verantwortlich:
Sofern die Systemleistung auf "Qualität" steht und man im Control Panel den anisotropen Filter aktiviert, schaltet sich automatisch die "Mipfilter-"Optimierung" ein. So weit wir wissen, hat nVidia damit ATIs ehemaliges Treiberverhalten nachgeahmt, mit dem Unterschied, dass die, generell zu präferierende, Methode des direkt im Spiel aktivierten AF auch von dieser "Optimierung" betroffen ist, sofern sie einmal aktiv ist - im Gegensatz zu den Radeon-Karten.
Deaktiviert man nicht einzeln alle "Optimierungen", bevor man auf HighQuality schaltet, sind sie unter OpenGL immer noch aktiv. Wer über diesen Punkt nicht Bescheid weiß, oder aber nicht per Zufall dieserart seine Treiber-Einstellungen getätigt hat, bekommt unter OpenGL-Spielen also generell keine HighQuality-Grafikqualität bei nVidia geboten - und dies seit geraumer Zeit (getestet mit den meisten wichtigen Treibern von 66.72 bis 83.40).