Der GeForce4 Ti AF-Bug
1. Oktober 2002 / von aths / Seite 3 von 5
Die Qualitäts-Frage
Durch die Leistungs-Optimierung des AF á la nVidia kamen nicht nur Leistungs-, sondern auch Qualitätsvergleiche wieder in Mode. ATis Radeon 8500 bietet AF-technisch zwei Vorteile gegenüber GeForce3/4: Einerseits ist das Verfahren sehr schnell und andererseits kann bis zu 16x AF verwendet werden (statt bei nVidia nur 8x).
Aber den Leistungsvorteil gibt es nicht umsonst: ATi sagte hierzu aus, dass man eine Methode verwenden würde, die nur jene Bildbereiche anisotrop filtert, die es auch nötig hätten. Die Radeon-Grafikkarten filtern also nur dort anisotrop, wo es auch auffällig lohnt. GeForce-Karten hingegen springen sofort an und das Oversampling setzt auch schon dann ein, wenn der Qualitätsvorteil nur minimal ist. Während vor allem GeForce3-Besitzer aus Leistungsgründen gerne AF ohne trilinearen Filter verwenden, lässt ATi allerdings bis einschließlich der Radeon 9000 dem Benutzer gar keine Wahl - mit AF ist hier alles bilinear.
Doch es gibt noch einen dritten Grund, der die gute AF-Leistung bei ATi erklärt: Durch den anisotropen Filter wird die Textur optimalerweise in der Richtung überabgetastet, in der sie gestaucht ist. Die Radeon bis Radeon 9000 sampelt aber nur in glatten 90°-Winkeln (aus der Textur werden nur "gerade Reihen" statt "Schrägen" gelesen). Dadurch sind die Zugriffe auf den Speicher besonders günstig zu gestalten, was sich in erhöhter Geschwindigkeit äußert. Wäre optimalerweise ein 80°-Winkel nötig, kann durch Oversampling in 90°-Richtung noch eine recht gute Qualität geliefert werden.
Schwierig sind jedoch 45° Winkel: Hier nutzt das Oversampling letztlich gar nichts, da durch die fehlende Winkel-Anpassung überwiegend Texel gelesen würden, die gar nicht mehr im zu renderndem Pixel liegen. Die Hardware muss die AF-Stufe hier automatisch verringern und bei genau 45° sogar auf 1x zurückschalten, was bei diesen Winkeln sich darin äußert, dass gar kein Oversampling mehr vorgenommen wird.
Die Radeon 9700 (und ihr kleiner Bruder 9500) beherrschen als zusätzliche Winkelstufe 45°, zeigen in der Mitte zwischen 0 und 45° bzw. 45 und 90° aber auch wieder Schwächen. Wenigstens wird dem Benutzer hier auch die Wahl überlassen, ob er den trilinearen Filter mit AF kombinieren möchte oder nicht. Abgesehen von gewissen Radeon-Vorteilen durch 16x bleibt das GeForce-Verfahren, rein von der Bildqualität her gesehen, weiterhin der strahlende Sieger.
Vielleicht war ATis Aussage aber auch anders zu verstehen: Denn bei bestimmten Winkeln wird wie bereits geschrieben auch das AF-Maximal-Level zurückgeschraubt, Texturen in einem gewissen Winkel werden bei der 16x AF-Einstellung keineswegs bis zu 16x AF gefiltert. Probleme dieser Art hat das nVidia-Verfahren nicht: Stellt man 8x ein, wird auch garantiert bis zu 8x anisotrop gefiltert, was salopp ausgedrückt in "Textur-Schärfe bis in die letzte Ecke" resultiert, während Radeon-Karten sozusagen nur die "wichtigsten" Winkel mit bis zu voller Stufe filtern.
Doch was bringt das dem Anwender, wenn er für die Qualität mit extremen Leistungsverlust bezahlen muss? Die Situation ist geradezu paradox: Die Radeon 8500 gilt als ideale Karte für AF, während GeForce ab 3 für FSAA-Freunde empfohlen wird. Radeon 8500 bietet schöneres Anti-Aliasing, GeForce3/4 schönere anisotrope Texturfilterung. Das jeweils "gegenteilige" Verfahren ist performanceoptimiert implementiert, wodurch es erst breit einsetzbar wird.
Wir bekräftigen an dieser Stelle unsere alte Forderung, dem Anwender möglichst selber die Wahl zu lassen: Schnelles Multisampling-FSAA oder schöneres Supersampling-FSAA? Schnelles AF á la ATi oder schöneres AF á la nVidia? Der User sollte je nach seinem Geschmack die Einstellungen wählen können und sich beim Kauf nicht zwischen schönem AF oder schönem FSAA entscheiden müssen. An einen Grafikchip vom Kaliber des GeForce4 Ti kann der Anspruch, beides zu nutzen, eigentlich ohne weiteres gestellt werden.
Denn durch hohe Taktraten und ausgefeilte leistungfördernde Techniken ist auch die qualtiätsoptimierte AF-Implementation ausreichend schnell genug - aber leider nur für den trilinearen Modus. Dabei scheint es sich nicht um einen Hardware-Fehler, sondern um eine Design-Entscheidung zu handeln, nVidia könnte hier eigentlich offensiv vorgehen. Auf Nachfragen hin gibt es hierzu jedoch keine Stellungnahme seitens nVidia.
Das Verhalten der GeForce4-Ti-Hardware ist trotzdem verwunderlich, da sie nur eine überarbeitete und erweiterte GeForce3 darstellt - welche bei bilinearem AF die erwartete Leistung bringt. Der angebliche "Bug" bei der GeForce4 Ti äußert sich darin, dass bei dieser im Multi Texturing Modus die AF-Füllrate gleichauf mit der Füllrate im Single Texturing Modus liegt. Und das, wo doch eine zweite TMU in der Pipeline vorhanden ist. Die naheliegende Vermutung, diese bliebe aus irgendwelchen Gründen ungenutzt, erreichte weite Verbreitung. Dafür gibt es zwei Argumente:
Erstens nutzt die GeForce3 ihre 2. TMU im Single Texturing Modus nicht. Vielleicht gilt ja dieses leistungsschädliche Verhalten aus irgendwelchen Gründen beim der GeForce4 Ti auch für das Multitexturing?
Und zweitens legen die (innerhalb der Messtoleranz) identischen Füllraten bei Single- und Multitexturing diesen Schluss einfach nahe.
Die These wäre also, dass die GeForce4 Ti bei AF grundsätzlich eine 4x1 statt 4x2-Architektur verwendet (Rendering-Pipelines x Textureneinheiten). Das ist so pauschal gesagt zwar falsch, aber in gewissem Sinne stimmt es doch. Zuvor aber noch etwas zur AF-Optimierung der GeForce4 Ti für die Direct3D-API.
Der RivaTuner bietet nicht nur für OpenGL das Umschalten von Performance- bzw. Quality-AF an, sondern erlaubt auch für Direct3D gewisse Optimierungen vorzunehmen. Hier lässt sich nämlich die AF-Stufe pro Texture Stage begrenzen oder auch ganz deaktivieren. Wenn AF per Treiber erzwungen wird, unterliegen einfach alle Texturen dem Oversampling. Das äußert sich bei der so genannten Base Map (der grundlegende Textur) in höherem Detailreichtum auch bei schiefer Draufsicht. Ohnehin detailarme Light Maps (für die per CPU vorberechnete Beleuchtung) profitieren hingegen praktisch gar nicht vom AF.
Ein Verzicht auf anisotrope Filterung bei derartigen Texturen bedeutet dort auf Oversampling zu verzichten und damit Rendering-Zeit zu sparen, wo man es so gut wie gar nicht sehen würde. Der eigentliche "Fehler" bei der GeForce4 Ti wird durch diesen Trick aber nicht beseitigt. Die Multitexturing-Füllrate mit auch nur 2x AF liegt weiterhin bei nur 1/4 der normalen Multitexturing-Füllrate, auch wenn nur eine einzige Texture Stage überhaupt noch anisotrop filtern darf.
Scheinbar sieht das mit der Füllrate in OpenGL anders aus. Der von nVidia eingebaute Performance-Modus für AF unter OpenGL funktioniert im übrigen nur dann, wenn AF im Treiber selbst erzwungen wird. Steuert die Anwendung das AF-Level, hat der Treiber nichts mehr zu sagen - und in jedem Fall findet das althergebrachte qualitätsoptimierte AF statt. Dem RivaTuner liegt hierzu ein PatchScript bei, mit welchem sich der Performance-Modus auch für anwendungsgesteuertes AF erzwingen lässt.