Volle Filterung für ATi und nVidia!
Ein heute neu aufgetauchter, inoffizieller ForceWare-Treiber für Windows 2000 und XP mit der Versionsnummer 61.32, den die Kollegen von Station-Drivers.com aufgetrieben haben, scheint endlich dem langerwarteten, neuen ForceWare nahezukommen.
Dieser Treiber beinhaltet wieder den zwischenzeitlich „einem Defekt erlegenen“ Schalter, der es erlaubt, die volle trilineare Filterung zu erzwingen, die - ersten Betrachtungen zufolge - auch über alle Texturstufen und mit allen Leveln anisotroper Filterung zu funktionieren scheint.
Im Gegensatz zum ersten Treiber für die GeForce 6800 Ultra-Reviews funktioniert dieser Schalter nun auch endlich für die Karten der GeForce FX-Serie, deren Besitzern lange Zeit aus dem sinnlosen Grund der Benchmarkbalkenlänge dieses grundlegende Feature vorenthalten wurde.
Der Link zum Download vom lokalen ComputerBase-Server für registrierte Nutzer findet sich – wie immer – am Ende der News.
Wie es aussieht, waren wir etwas zu voreilig. Volles, trilineares AF gibt es nur über alle Texturstages, wenn die Applikation es anfordert oder mit einem externen Tool nachgeholfen wird. Das über den Treiber erzwungene AF filtert nur auf der ersten Texturstage trilinear-AF, darüber wird nur noch bilineares AF geboten - analog dem, was im ATi-Treiber geboten wird, wenn man auf externe Tools verzichtet.
ATi
Passend zu diesem Anlass wollen wir auch gleich noch eine mehr oder weniger freudige Nachricht für Besitzer von ATi-Karten der Reihe 9600 und X800 bekanntgeben.
Am Wochenende ist es uns gelungen, einige Registry-Einträge für den Beta-Catalyst, mit dem die X800 XT getestet wird, herauszufinden, mit denen man die Optimierungen dieser beiden Kartenserien soweit abschalten kann, um wieder die Filterung zu bekommen, die man bereits von der Radeon 9700/9800-Serie kennt. Ob und wie stark sich das auf die Bildqualität auswirkt, wollen wir mit Absicht nicht kommentieren, da hier auf in-Game-Screenshots kaum beweiskräftige Aussagen zu treffen sind und das individuelle Empfinden auch eine Rolle spielt.
Es gibt drei uns bekannte Einträge im aktuell genutzten Pfad der Grafikkarte in der Registry, den man mit der Suche (STRG+F) nach „AntiAliasSamples“ im Registry-Editor (Start, Ausführung, „regedit“) bestimmen kann. Dieser Wert der „AntiAliasSamples“ sollte dem Wert, der aktuell im Treiber eingestellt ist, entsprechen. Sicher gehen kann man, indem man bei geöffnetem Registry-Editor den Wert im Treiber verstellt und dann im Regedit eine Aktualisierung per F5-Taste erzwingt. Der Wert sollte sich nun auf den zuvor im Treiber eingestellten Wert ändern. Ist dies der Fall, so ist der aktuelle Pfad des Catalyst gefunden.
Sobald man den korrekten Pfad erkannt hat, legt man hier zwei (respektive drei für X800-Karten) neue Werte an. Diese müssen vom Typ „Zeichenfolge“ sein und folgendermaßen aufgebaut sein.
"RV350TRPER" 1
"RV350ANTHRESH" 1
"R420AnisoLOD" 2
Den beiden ersten, die trotz ihres Namens für alle betroffenen Karten (also auch die auf dem R420-Chip basierenden) relevant sind, bekommen einen Wert von „1“ zugewiesen. R420AnisoLOD muss den Wert „2“ bekommen. Durch einen Doppelklick auf den jeweiligen Eintrag kann man ein Fenster erreichen, wo dieser Wert eingegeben wird.
Das Kurvendiagramm zeigt die jeweils erreichte Pixel-Füllrate auf der Y-Achse bei unterschiedlichen Texel-zu-Pixel-Verhältnissen auf der X-Achse. Am linken Rand beginnt die Kurve in einem Bereich, bei dem ein Texel für mehr als ein Pixel genutzt werden kann. Im weiteren Verlauf nach rechts verändert sich dieses Verhältnis dahingehend, daß zuerst immer weniger Pixel mit einem Texel auskommen. Dabei wird ein Punkt erreicht, bei dem ein Texel nur noch genau für einen Pixel ausreicht. Ist dieser Punkt überschritten, müssen die Informationen von mehreren Texeln für einen Pixel zusammengerechnet werden. In diesem Bereich kann dann die Anwendung des trilinearen und anisotropen Filter die Bildqualität verbessern.
Im Verlauf der Kurven erkennt man drei signifikante Arten von Ereignissen.
1. Ein relative gleichmäßiger Abfall der Füllrate:
In diesem Bereich wird durchgehend mit der gleichen Anzahl von Textursamples gearbeitet. Zu dem Verlust kommt es, da sich die Samplepositionen weiter auseinander bewegen. Dies hat eine verringerte Trefferrate im Texturcache zur Folge. Als Konsequenz müssen mehr Daten aus dem Videospeicher geholt werden. Dies belastet die Speicherbandbreite, welche bei den neu vorgestellten Highend-Chips im Vergleich zur Füllrate eher schwach ist.
2. Ein plötzlicher sprunghafter Abfall der Füllrate:
An diesen Stellen wechselt der Chip auf eine bessere Filterstufe, die mehr Textursamples pro Pixel nutzt.
3. Ein plötzlicher sprunghafter Anstieg der Füllrate:
Hier wechselt der Chip wieder zurück auf eine qualitativ weniger hochwertige Filterstufe. Ein Grund dafür kann der Wechsel auf die nächste, niedriger aufgelöste Mipmap der Textur sein. Ein anderer Grund ist der temporäre Verzicht auf volles, trilineares Filtern.
Die blaue Kurve, welche die reguläre Filterung ohne „Optimierungen“ zeigt, lässt den Verlauf klar erkennen. Über mehrere Zwischenstufen erreicht man die maximalen Sample-Anzahl pro Pixel. Da sich die Samplepositionen aber weiterhin voneinander entfernen, wird irgendwann der Punkt erreicht, bei dem auf die nächste Mipmap der Textur gewechselt werden muss, um eine Unterfilterung zu vermeiden. An dieser Stelle kann dann die Sampleanzahl wieder reduziert werden, was in einem Anstieg der Füllrate endet. Dieser Anstieg ist aber nur von kurzer Dauer, da sehr schnell wieder die Sampleanzahl erhöht werden muss, um die zweite Mipmap für den trilinearen Filter auszulesen.
Die „Optimierungen“ wirken sich nun auf zwei Arten aus:1. Die trilineare Optimierung reduziert die Bereiche, in denen der trilineare Filter zum Einsatz kommt. Dies führt dazu, daß länger mit einer reduzierten Sample-Anzahl gearbeitet wird. Erkennbar an der roten Linie, welche - im Gegensatz zur blauen - eine „Hochebene“ bildet. Die korrekte trilineare Filterung führt nur zu einer kleinen „Bergspitze“.
2. Die „R420AnisoLOD“-Optimierung sorgt dafür, daß erst später auf die nächste Filterstufe gewechselt wird. Dies führt dann bei jedem Wechsel zu einem Band mit Unterfilterung. Dafür gibt es allerdings dann auch eine höhere Pixelfüllrate.
Beide Optimierungen tauschen also Füllrate gegen Filterqualität, indem sie die Anzahl der Samples reduzieren.
Hier also eine eher theoretische Betrachtung, was die einzelnen Optimierungen genau auslösen. „RV350TRPER“ (Magenta) ist einzig und allein für die Reduzierung der trilinearen Filterung zuständig und ändert nichts an der Veränderung des AF-LOD oder der verwendeten Sample-Anzahl in der Basistextur.
„RV350ANTHRESH“ (Gelb) wirkt nur innerhalb der Basistextur und bestimmt die Schwelle, ab der bei anisotroper Filterung eine höhere Anzahl an Samples genutzt wird - zu sehen in den Kästen eins und zwei. Hier liegen die einzigen Bereiche, in denen „RV350ANTHRESH“ Füllratenvorteile bringt.
„R420AnisoLOD“ wirkt hingegen dadurch, daß der LOD-Wert zur Bestimmung der nötigen Anzahl an Textursamples oberhalb der Mip-Stufe 1 abgesenkt wird, wodurch man, analog zum „RV350ATHRESH“, im dichter zum Betrachter gelegenen Bereich mit weniger Samples pro Pixel auskommt (s. Kasten drei).
Weiter in die Tiefe hinein, wo weit weniger Pixel davon betroffen sind und ergo der Gesamtverlust an Leistung deutlich geringer ausfällt, verliert man hingegen auch ein wenig Füllrate (Kasten vier). Das Bild wirkt dort auf Standbildern aber schärfer. Pikanter Weise werden genau diese hinteren Bildbereiche jedoch gern bei Screenshot-AF Vergleich benutzt, um die Qualität der Filterung zu beurteilen, wobei die erhöhte Flimmerneigung nur auf hochauflösenden Videos zu sehen wäre.
Natürlich haben wir auch ein paar kurze Performance-Messungen durchgeführt, die allerdings in einem unrealistisch füllratenlimitierten Szenario stattfanden. Hier ist also so etwas wie der „worst case“ beschrieben; im realen Spielealltag bewegen sich bei der „X800 XT PE“ die Verluste eher im Bereich von 5-14%, da hier üblicherweise nicht die Füllrate allein limitiert und außerdem sinnvoller Weise noch FSAA hinzugeschaltet wird, sodaß die zur Verfügung stehende Speicherbandbreite hier ebenfalls ein großer Faktor ist.
Der grüne Balken repräsentiert die bestmögliche Qualität, die die ATis Chips (à la R300/R350/R360) liefern können . Der rote Balken ist das, was man erhält, wenn man sich lediglich auf die Treibereinstellungen verläßt.
Hier, in einem realen Spiel mit aufgezeichneter Timedemo, wirkt die Optimierung bereits deutlich weniger. Je nachdem, wie nahe man am CPU-Limit operiert, kann es auch durchaus sein, daß man durch die Optimierungen gar keinen Frameraten-Gewinn erzielt und so wie es bisher aussieht, wird sich an der prinzipiell höheren Geschwindigkeit der „X800 XT PE“ gegenüber der GeForce 6800 Ultra nicht viel ändern - lediglich die Abstände schrumpfen zusammen.
Zu beachten wäre noch, daß die Optimierungen offenbar unter OpenGL weniger stark ausgeprägt sind. Momentan gehen unsere Vermutungen dahin, daß hier nur der trilineare Filter optimiert wird und keine Anpassungen am AF-LOD vorgenommen werden. Dieses Resultat ist allerdings noch nicht endgültig.