Versteckte "Optimierungen"
25. Mai 2004 / von aths / Seite 2 von 3
Wie viel Leistung darf Qualität kosten?
Ein Wort zur AF-"Optimierungen". Bricht bei aktiviertem AF die Leistung stark ein, sagt das erst mal gar nichts: GeForce4 Ti verliert unerhört viel Leistung bei bilinearem AF, ohne irgendwie bessere Qualität gegenüber dem Vorgänger zu bieten. Doch bricht die Leistung in Grafikkarten-limitierten Szenen mit AF nur wenig ein, ist das sicher kein Grund zur Freude, da man ein untrügliches Zeichen hat, dass das AF nicht viel taugen kann.
In GPU-limitierten Szenarien kann mit 4x AF bei Multitexturing-Games die Geschwindigkeit durchaus um mehr als die Hälfte sinken. Dafür würde dann aber auch Qualität geboten, an die sich kaum noch jemand erinnert. Die Zukunft bringt uns "Pixelshader-Spiele". Während der Shader rechnet, hätten die TMUs Zeit, hochwertiges AF zu ermöglichen. Gerade im Zuge der immer fortschrittlicheren Pixelshader und der gestiegenen arithmetischen Power wäre es kein Problem, beste Filterqualität anzubieten.
Wirklich unverständlich ist die Limitierung des vollen AF-Grades auf 90°- und 45°-Winkel. Das gilt ja jetzt nicht mehr nur für die Radeon, sondern ab NV40 auch für GeForce. Bei alten Spielen, deren Levels meist solche "90°-Architektur" haben, wäre das nicht weiter schlimm: Beispielsweise sind Max Payne 1 und 2 mit dieser Methode gut bedient. Doch gerade für diese vergleichsweisen anspruchslosen Spiele wäre die Leistung für volles AF ohnehin da.
Neuere Spiele, die verstärkt auf Pixelshading setzen, bekommen bessere Texturfilter in gewissem Sinne "for free": Bei einem Sampling-Math-Verhältnis von 1:8 (welches heute noch nicht erreicht ist, aber für welches moderne Pixelshader-Karten gebaut werden) könnte man mindestens 4x AF ohne wirkliche Kompromisse in der Leistung erlauben. Da gewisse Lookups nur bilinear gefiltert werden müssen, bleibt für Base Maps noch besseres AF. Die Wichtigkeit von Texturen in zukünftigen Spielen wollen wir an dieser Stelle nicht weiter vertiefen, sondern uns mit dem Hier und Jetzt begnügen.
Pixel-perfektes AF ist auf absehbare Zeit natürlich nicht realisierbar. Das erwarten wir auch nicht. "Optimierung" muss aber auch nicht zwangsläufig mit Bildqualitätsverschlechterungen einher gehen. Strapazieren wir "Max Payne" noch einmal: Der Nachfolger läuft bei besserer Grafik auch noch schneller. Neue Grafikkartengenerationen sind ohnehin schneller als ihre Vorgänger, das wäre ja eigentlich eine gute Gelegenheit, die Bildqualitätsmaßnahmen noch zu verbessern.
Kommt es darauf an, dass ein Modus "16x" heißt und man auch Screenshots erzeugen kann, die in bestimmten Situationen ein Vorteil gegenüber dem alten 8x zeigen? Oder kommt es nicht vielmehr darauf an, dass 16x in keinem Fall schlechter als der alte 8x-Modus ist? Sogar 4x ist in der alten Variante in bestimmten Situationen gegenüber dem neuen 16x-Modus im Vorteil. Etwas überspitzt formuliert existiert der Forschritt nur auf dem Papier, wenn man nicht bedenkt, dass für bessere Bildqualität zwangsläufig ein Preis in Form von Leistungsverlust zu zahlen ist.
Diese Einsparungen beim AF vernichten mehr Qualität, als man durch die durch den Leistungsgewinn ermöglichte Auflösungssteigerung wieder reinholen kann. Vereinfacht gesagt, muss man für einen 2x-AF-Effekt die Auflösung auf beiden Achsen verdoppeln, und damit die Grafikkarten-Last circa vervierfachen. Für 4x AF müsste die Auflösung auf beiden Achsen vervierfacht werden, die Grafik-Last wäre ungefähr mit Faktor 16 anzusetzen. Die zusätzlichen Vorteile durch höhere Auflösung, z. B. feinere Kanten, können diese erhebliche Zusatzlast nicht wett machen. Auch wenn gute anisotrope Filtering eine Menge Performance kostet, ist es im Endeffekt der beste Weg, um Leistung in Texturqualität umzuwandeln.
Der NV40 richtet sich doch an Enthusiasten. Wer kam auf die Idee, dass gerade die dünne Käuferschicht mit dickem Portemonaie und Begeisterung für neueste Technik ein schlechteres AF haben will, als schon GeForce3 bot? Wenn Nvidia (und ATI) ganz offensichtlich der Meinung sind, wirklich gutes AF Filterung brauchen wir nicht, was kommt als nächstes? Vielleicht auch keine trilineare Filterung mehr? Wie bekannt, ist das leider kein Witz. Und das ist ein Witz - ein schlechter.
Die Vorteile echter trilinearer Filterung
Mit externen Tools lässt sich für die GeForceFX noch durchgehendes 8x AF erzwingen, der Treiber entscheidet ansonsten ja, dass für bestimmte Texturen 2x ausreicht. Leider bleibt die reduzierte trilineare Filterung in jedem Fall aktiv. Im direkten Vergleich der beiden Standbilder scheint das nicht besonders "schlimm" zu sein (MouseOver-Effekt per Javascript, Klick öffnet Alternativ-Variante ohne Javascript):
Trilinear (MouseOut) vs. "brilinear" (MouseOver) – Zulässige Optimierung oder echter Nachteil?
In erster Linie bemerkt man, dass mit dem 45.23er Treiber das Antialiasing auf dem Screenshot weniger gut zu sehen ist. Offenbar war die Methode, die "on the fly"-Downfilterung in den Screenshot zu bringen, beim 45er Detonator noch nicht ganz ausgereift. In unserem Standbild ist "brilineare" Filterung kaum zu erkennen. Anders in Bewegung! Hier nerven solche Optimierungen. Gerade diese Kachel-Texturen mit den feinen Fugen ergeben bei reduziertem Tri-Band eine Art "Unschärfe-Übergangsbugwelle", die man vor sich herschiebt. Nehmen wir den Effekt unter die Lupe. Des Kontrastes wegen sind die Screenshots hier nur mit Gamma 1,9 aufgehellt (MouseOver-Effekt per Javascript, Klick öffnet Alternativ-Variante ohne Javascript):
Ausschnittsvergrößerung aus Max Payne: Trilinear (MouseOut) vs. "brilinear" (MouseOver)
Trotz Vergrößerung erscheinen die Unterschiede marginal – der Nachteil stört eben nur in Bewegung. Auch hier fragt man sich, ob sich die Reduzierungen beim trilinearen Filter sich deshalb einfach durchsetzten: Denn eine reine Screenshot-Analyse bringt hier nicht viel.
Zur Schärfe-Problematik: Bi- und trilineare Filterung bringen im Durchschnitt gleiche Texturschärfe. Der Nachteil bei "brilinearen" Methoden ist nicht bei einem Schärfeverlust zu suchen. Kurz vor Ende der MIP-Map, bevor das Tri-Band nun endlich beginnt, gewinnt man sogar Details. Natürlich auf Kosten der nächsten MIP, deren Anfang bilinear-mäßig unschärfer ist als bei trilinearer Filterung. Nur (echte) trilineare Filterung zieht den Detailstufenübergang wirklich glatt. Jedenfalls im Rahmen der Möglichkeiten.
Heutige trilineare Filterung nutzt zwei bilineare Samples aus (meist vorgefilterten) MIP-Texturen. Das MIP-Mapping hat zur Folge, dass kontrastreiche Striche in der nächstkleineren Folge-MIP etwas verschoben wirken können. Überhaupt wird viel Berechnungsaufwand gespart, so z. B. das LOD (der Detailgrad) nicht pro Pixel, nur pro Quad (einem Block aus 2x2 Pixeln) bestimmt. Herkömmliche trilineare Filterung ist alles andere als das denkbare Nonplusultra, sondern "nur" das beste, was man angesichts der vielen ohnehin vorhandenen Vereinfachungen noch machen kann. Nicht einmal das wird uns heute noch gegönnt. Obwohl die Leistung bei Grafikkarten ständig steigt, und zwar (deutlich) schneller als die CPU-Leistung im gleichen Zeitraum.