Zum 3DCenter Forum
Inhalt




Point Sampling beim 40.41er nVidia-Treiber

30. August 2002 / von Leonidas / Seite 1 von 1


Eigentlich sollte dieser Artikel ein etwas größerer Treibervergleich des 29.42er mit dem neuen 40.41er Beta nVidia-Treiber werden - Vergleichswerte haben wir schließlich zur Genüge. Jedoch waren die ersten Benchmark-Ergebnisse aus dem Web mehr als ernüchternd - von den "bis zu 25 Prozent Performance-Plus", welche nVidia verspricht, fehlt bislang jegliche Spur. Vielmehr schlug der neue Treiber oftmals sogar minimal in den negativen Bereich aus - außer in 3DMark2001, wie folgendes aufzeigen kann:


  3DMark2001 Game-Tests
Hard Tecs 4U + 8,7 % - 0,7 %
Icrontic + 11,4 % - 0,6 %
PC-Extreme + 3,6 % - 1,5 %
Virtual Zone + 10,4 % + 0,5 %

In den Game-Tests zeigte alleinig Quake III Arena den Willen zu ein paar mehr fps - nicht soviel wie 3DMark2001, aber meßbar. Somit scheint dieser Treiber ausschließlich auf 3DMark2001 und Quake III Arena optimiert zu sein. Was eigentlich komplett zwecklos ist, denn 3DMark2001 kann man nicht spielen (und Max Payne benutzt eine sehr abweichende Engine, auch wenn die Entwickler etwas anderes behaupten) und bei Quake III Arena bringen noch 3 fps mehr wohl niemanden noch etwas. Auch unter höheren Auflösungen wie auch unter Anti-Aliasing erreicht der 40.41er Treiber keine besseren Resultate, wie der Test bei PC-Extreme zeigt.

Dies soll jetzt nicht sagen, der neue Treiber wäre schlecht - er hält nur nicht die von nVidia vollmundig verkündeten Performance-Erwartungen. Aber der 40.41er Treiber kann mit anderen Dingen glänzen, wie beispielsweise Treiberoptionen für die anisotropen Modi unter Direct3D frei (gab es unverständlicherweise in den nVidia-Treibern bisher nur unter OpenGL) sowie eine Overlay-Funktion für den TV-Out, welcher möglicherweise endlich entsprechende Fremdtools unnötig und den TV-Out von nVidia-Grafikkarten konkurrenzfähig machen könnte. Hier liegt nVidia vollkommen auf der richtigen Schiene, diese Funktionen waren schon lange überfällig.

Jedoch hat sich beim Options-Panel für den anisotropen Filter unter Direct3D auch ein Fehler in den Treiber eingeschlichen, welcher der Anlaß für diesen kurzen Artikel war. Und zwar steht dieser - nur unter Direct3D - per default auf Stufe "0":

Options-Panel für den anisotropen Filter unter Direct3D

Jedoch bedeutet in diesem Fall das Setting "0" nicht den normalen bilinearen/trilinearen Filter (wird durch die jeweilige Anwendung ausgewählt) als Vorstufe zum eigentlichen anisotropen Filter (die Settings 2, 4 und 8), sondern den Point Sampling Filter. Und damit wird dieses Setting dann auch für alle Nutzer dieses Treibers interessant - auch jene, welchen den anisotropen Filter gar nicht einsetzen.

Denn das richtige Setting wäre "1" - so wie es auch bei allen vorhergehenden nVidia-Treibern der Fall ist. Dies kann man auch selber nachprüfen, ohne den 40.41er Treiber und damit dieses Optionsfeld zu haben - der entsprechende Registery-Key (sofern die aktuelle Grafikkarte die default Display-Nummer "0000" hat) lautet ...

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class\Display\0000\NVidia\Direct3D\D3D_74095213

... und steht per default bei allen anderen nVidia-Treibern auf "01 00 00 00" (1). Beim 40.41er Treiber steht dieser Registery-Key aber auf "00 00 00 00" (0) - und dies bedeutet nun einmal der Verzicht auf den bilinearen/trilinearen Filter und die Anwendungen des uralten Point Sampling Verfahrens, welches schon vor der Voodoo-Ära bekannt war.

Beim Point Sampling Verfahren werden grob gesagt die Werte der umliegenden Pixel zur Farbbildung des zu rendernden Pixels nicht mit berücksichtigt. Es wird ausschließlich die mehrheitlich zutreffende Farbe ausgewählt und jegliche (vorhandenen) Farbnuancen verworfen. Die Folge sind grobe Pixelblöcke bei Texturen mit nur wenigen unterschiedlichen Farben - ähnlich der Grobpixeligkeit von Spielen im unbeschleunigten Softwaremodus in der Prä-3D-Zeit. Als Nebenproblem tritt zudem ein - nur in Bewegung zu sehenden - Texturenflimmern auf.

Natürlich ist der Effekt beim 40.41er Treiber nicht mehr ganz so dramatisch wie seinerzeit beim Übergang von den 3D-Bremsern á S3 Virge und ATi Rage auf die ersten Hardware-3D-Beschleuniger wie die legendäre 3dfx Voodoo, da die heutigen Texturen wesentlich feiner aufgelöst sind und zudem vielfältige andere Effekte mit am zu rendernden Bild herumändern. Dafür sind aber auch die Qualitätsmaßstäbe gestiegen - und aus dieser Sicht betrachtet ist die folgende Grafik-"Qualität" definitiv nicht mehr zeitgemäß:


Klick öffnet beide Bilder im Großformat
Javascript MouseOver-Effekt:
normal = Setting 1 (bilinear/trilinear)             MouseOver = Setting 0 (Point Sampling)
Klick öffnet beide Bilder im Großformat

Dies dürfte den Effekt eines Point Sampling Filters wohl ausreichend illustrieren :-). Ähnliche "Muster" sind mal mehr und mal weniger stark in allen Direct3D-Spielen zu finden, welcher nicht die Treiber-Settings überschreiben können (Serious Sam). Obiges Bild ist also kein Einzelfall, sondern dies kommt mit dem 40.41er Treiber in fast allen Direct3D-Spielen vor. Man könnte wohl auch noch weitere Screenshots anführen, der vorgezeigte illustriert das Problem aber schon am besten.

Jedem Nutzer des 40.41er Treibers sei hiermit also dringend empfohlen, unter den Direct3D-Optionen die Option "Texture Anisotropic Setting" auf den Wert "1" zu setzen, um dem vorgezeigtem Effekt vorzubeugen. Wer tatsächlich den anisotropen Filter nutzen will, kann hier natürlich noch höhere Werte auswählen. Nur das Setting "0" sollte auf keinen Fall eingesetzt werden.

Bliebe noch die Frage offen, wieviel Performance diese Option bringt. Denn immerhin werden wohl die meisten der vorgelinkten Tests zum 40.41er Treiber mit dem Setting "0" gemessen haben - und zwar gegen ältere nVidia-Treiber mit dem Setting "1". Unsere Messungen mit einer GeForce3 Ti500 unter 3DMark2001, Comanche 4, Giants, Ultima IX und Z: Steel Soldiers ergaben jedoch nicht einmal einen meßbaren Unterschied zwischen diesen beiden Filtern:


  Setting 0 (Point Sampling) Setting 1 (bilinear/trilinear)
3DMark2001 8174 Pts. 8166 Pts.
Comanche 4 (Demo) 31,5 fps 31,8 fps
Giants 43,3 fps 43,3 fps
Ultima IX 57,5 fps 57,5 fps
Z: Steel Soldiers 74,9 fps 75,1 fps

Demzufolge gehen wir hier auch keinesfalls davon aus, daß nVidia nun plötzlich SiS´ TurboMode Konkurrenz machen will, um sich mehr Performance zu erschummeln ;-). Dieses Setting bringt schlicht nur eine schlechtere Bildqualität, aber eben nicht mehr Performance. Daher ist klar von einem Bug auszugehen - welchen nVidia aber spätestens mit der nächsten Treiberversion fixen sollte. Besser wäre es natürlich, wenn man den 40.41er Beta-Treiber noch einmal in einer neuen Version mit richtiggestellten default-Werten veröffentlicht - denn die wenigstens Anwender werden diesen "Bug" auf Anhieb bemerken und im Zweifelsfall wissen, wie man sich helfen kann.

Für die Zwischenzeit bis nVidia einen neuen Treiber veröffentlicht hat, hilft es wie gesagt, die Option "Texture Anisotropic Setting" auf den Wert "1" zu setzen. Dies kostet keine Performance, verhindert aber die gezeigten "Klötzchenbildung".


Update

Wir können nVidia nun inzwischen wieder etwas freisprechen: Wenn man nie etwas an diesem Setting verändert hat, so ergibt sich nicht die beobachte schlechte Texturenqualität, obwohl das Setting im Treiber weiterhin auf "0" steht. Doch so lange nie etwas an diesem Setting geändert wurde, existiert der entsprechende Registery-Key schlicht nicht und es wird wahrscheinlich daraufhin ein default-Wert zur Filterung benutzt. Daraus ergibt sich auch, weshalb einige User diese schlechtere Texturenqualität bei ihren eigenen Tests nicht beobachten konnten - sie haben nie dieses Setting im Treiber verändert.

Verändert man jedoch dieses Setting in den nVidia-Optionenpanels (es reicht auch eine reine Bestätigung des Settings "0"), wird der entsprechende Registery-Key mit dem Wert "00 00 00 00" erzeugt, was zur beobachteten schlechteren Texturenqualität führt. Im übrigen differiert der Pfad zum bewußten Registery-Key des 40.41er Treibers etwas zu dem oben gezeigtem Pfad (jener ist für einen älteren Treiber). Der Pfad beim 40.41er Beta-Treiber lautet (sofern die aktuelle Grafikkarte die default Display-Nummer "0000" hat):

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nv\Device0\D3D_74095213

Im Prinzip bräuchte man aber nur nie etwas an diesem Setting im Treiber ändern oder auch nur bestätigen, um diesem Problem aus dem Weg zu gehen. Falls man es doch getan hat, hilft ein Klick auf den "Restore"-Button des Treiberpanels. Dieser setzt dann den Wert "FF FF FF FF" in die Registry, welcher keine negativen Auswirkungen auf die Texturenqualität hat, obwohl im Treiber weiterhin das Setting "0" angezeigt wird.

Die bessere und sichere Alternative ist natürlich, dieses Setting im Treiber gleich grundsätzlich auf "1" abzuändern :-). Wir danken mirp für die Hinweise, welche zu diesem Update führten.


2. Update

Ganz offensichtlich verbergen sich auch hinter den anderen Settings der Option "Texture Anisotropic Setting" nicht jene Werte, welche im Treiberpanel angezeigt werden. Folgende Tabelle gibt darüber Aufschluß, welche Einstellung welches reale Setting ergibt:


Setting im Treiber ergibt Registery-Eintrag ergibt Grafik-Qualität richtig wäre
direkt nach der Treiberinstallation Key existiert noch nicht bilinear/trilinear bilinear/trilinear
manuell Setting "0" angewählt Key 00 00 00 00 Point Sampling bilinear/trilinear
nach Betätigung des Restore-Button Key FF FF FF FF bilinear/trilinear bilinear/trilinear
manuell Setting "1" angewählt Key 01 00 00 00 bilinear/trilinear bilinear/trilinear
manuell Setting "2" angewählt Key 02 00 00 00 anisotropisch Level 2 anisotropisch Level 2
manuell Setting "4" angewählt Key 03 00 00 00 anisotropisch Level 4 anisotropisch Level 4
manuell Setting "8" angewählt Key 04 00 00 00 anisotropisch Level 4 anisotropisch Level 8

Wie zu sehen, ergibt neben dem "Point Sampling Bug" die höchste Stufe 8 des anisotropen Filters nicht eben diese, sondern nur die Stufe 4. Damit ist die komplette Treiberoption natürlich schwer irreführend, da der Unterschied zwischen 4x und 8x anisotropen Filter im Normalfall nur mittels Screenshot-Vergleichen, nicht aber im alltäglichen Einsatz erkennbar ist. Zudem ist mit diesem Treiberpanel der (echte) 8x anisotrope Filter nun gar nicht mehr anwählbar.

Zumindestens Hardware-Tester sollten also gewarnt sein und auf keinen Fall auf dieses neue Optionspanel für den anisotropen Filter unter Direct3D vertrauen - es funktioniert einfach noch nicht so, wie es sein sollte. Als Alternative kann man nach wie vor ein Tweaktool einsetzen - beispielsweise unseren aTuner, welcher auch mit dem 40.41er Treiber problemlos und ohne solche Bugs zurechtkommt.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig 3DCenter-Artikel - Index Home

Shortcuts
nach oben