Der GeForce4 Ti AF-Bug
1. Oktober 2002 / von aths / Seite 2 von 5
Die Leistungs-Frage
Aktiviert man im Spiel trilineare Texturfilterung, weil das MIP-Banding stört, so findet eine Überblendung zweier MIP-Texturen statt, was im Endeffekt auf die doppelte Samplingzahl hinausläuft, da statt einer MIP-Textur nun zwei berücksichtigt werden. Dass das Auswirkungen auf die Leistung hat, ist klar. Um einen guten Kompromiss aus Texturqualität und Leistung zu erhalten, benutzen viele GeForce3-Besitzer die Einstellung 4x AF ohne trilinearen Filter. Damit sind weiterhin die scharfen Übergänge der MIP-Texturen sichtbar, allerdings werden diese durch das Oversampling auf schrägen Flächen weiter nach "hinten" geschoben, wo sie weniger stören.
Bilineare Filterung erzeugt sogenanntes "MIP-Banding": Die Abgrenzung zwischen den MIP-Stufen ist scharf. Trilineare Filterung erzeugt eine sanfte Überblendung von den beiden nächstliegenden MIP-Texturen. |
Die AF-Einstellung sollte natürlich noch genügend Spielraum für Anti-Aliasing lassen und die Karte nicht völlig auslasten. Nun ist FSAA bei GeForce 3/4 allerdings vorwiegend bandbreitenabhängig, während AF eine Frage der Füllrate ist. Die Performance wird aber in jedem Fall gedrückt. Auf GeForce-Karten vor der GeForce3-Generation galt Anti-Aliasing als überwiegend unsinniger Leistungsfresser - und nun bremst bei der neusten GeForce-Kreation die anisotrope Filterung den 3D-Beschleuniger oft inakzeptabel aus. Der Grund wurde durch Füllraten-Vergleiche bald gefunden.
Da im 2x-AF-Modus die GeForce bei praktisch jeder Textur ein 2x-Oversampling vornimmt, sinkt die Füllrate um die Hälfte. Die GeForce3 verliert sowohl im Single- als auch im Multitexturing-Modus effektiv 50% ihrer Füllrate. Im Single Texturing Modus bekommt jedes Polygon genau eine Textur verpasst. Da die GeForce-Karten ab GeForce2 allerdings pro Pipeline gleich 2 Texturen-Einheiten (TMU) besitzt, um Polygone zu texturieren, verwundert die brachliegende TMU im bilinearem Single Texturing Modus bei der GeForce3.
TMU Nr. 1 erzeugt pro Takt ein Textur-Sample, während TMU Nr. 2 bei Single Texturing offenbar die Hände in den Schoß legt, anstatt das andere Sample zu generieren. Was intern genau vor sich geht, können wir nicht mit Sicherheit sagen. Das nachweisbare Verhalten, immerhin die halbe Leistung zu verschenken, ist ärgerlich. Da aber Applikationen, die überhaupt noch auf Single Texturing setzen, in der Regel relativ anspruchlos sind, ist das zu verschmerzen.
Der Grund für die ungewöhnlich schlechte AF-Leistung der GeForce4 Ti (NV25) liegt nun darin, dass beim aktiviertem bilinearen anisotropen Filter auch im Multitexturing-Modus die halbe Leistung verschenkt wird. Dass sich die Füllrate bei 2x AF ohnehin halbiert, liegt darin, dass so gut wie jedes Pixel mit 2x Oversampling erzeugt wird. Die Texelfüllrate jedoch viertelt sich beim GeForce4 Ti Chip. Von dieser negativen Eigenschaft ist weder GeForce3 (NV20) noch GeForce4 MX (NV17) betroffen.
Die Hardware-interessierte Welt wartete nun auf diesen Treiber, welche das genannte Problem fixen sollte. Spätestens mit dem Erscheinen der nächsten ATi-Karte, der Radeon 9700, würde nVidia jenes Problem im Griff haben, mutmaßte man in diversen Foren. In der Tat kam dann schon deutlich früher ein Treiber (Detonator 28.90), welcher die AF-Leistung etwas verbesserte.
Allerdings gilt dies nur für die OpenGL-API: Was nVidia dort genau gemacht hat, blieb jedoch einige Zeit unklar. Außerdem profitierte auch die GeForce3, die vom GeForce4 Ti AF-Bug ja nicht betroffen ist, von dem neuen Treiber. Der RivaTuner-Autor Unwinder entdeckte schließlich, dass es für anisotrope Filterung in OpenGL nun einen neuen Performance-Modus gibt, der im neuen Treiber standardmäßig aktiviert ist. Dieser Performanceschub geht allerdings leicht auf Kosten der Bildqualität. Ein Treiber-Cheat, den nVidia klammheimlich dem Benutzer unterschob?
Bildqualität für Performance zu opfern, hat ja zunächst immer etwas anrüchiges. Spätestens seit ATi für eine kurze Zeit einen Treiber speziell für Quake III Arena "optimiert" hat, wird die geneigte Käuferschaft beim diesem Thema schnell hellhörig. Doch wenn man fragt, ob hier "gecheatet", also betrogen wird, dann sollte man sich fragen, wer denn hier der Betrogene sein soll.
Denn der Anwender erhält mit dem Performance-Modus für OpenGL der 28.90er Treiber und aller späteren Versionen für eine minimal schlechtere Filterung ein spürbares Plus an Performance, was z.B. in höhere Auflösungen gesteckt werden kann. Je höher die Auflösung, um so detaillierter die Texturen auch in der Ferne. Insofern ist dies wohl ein guter Kompromiss für den Anwender. Das GeForce4 Ti AF-Problem wurde mit diesem Treiber aber wie schon gesagt nicht adressiert, es handelt sich um eine allgemeine Optimierung für nVidia-Karten ab der GeForce3.