Zum 3DCenter Forum
Inhalt




Inside nVidia NV40

14. April 2004 / von aths / Seite 5 von 6


   Verbessertes Multisampling

Endlich nutzt NV40 das "rotated grid" auch mit 4x Antialiasing. Hier gibt es übrigens ein allgemeines Missverständnis: Man muss das Grid nicht nur rotieren, sondern auch noch skalieren. Wir disktutierten das schon in einigen Artikeln. Hier sieht man, wie ein "sparsed" (bei 4x ist es gleichzeitig ein "rotated") grid aussieht. Außerdem haben wir einen Artikel, der sich gründlich mit Multisampling befasst, falls Interesse besteht.

In der Tat ist nVidias Presse-Material ziemlich ungenau, zum Beispiel wird die 4x ordered grid Maske falsch bebildert. Das ist mit ein Grund, warum wir nicht einen einzigen Screenshot aus den offiziellen Papieren bringen :).

Mit seinem neuen 4x Multisampling schließt nVidia beinahe zu ATIs 4x-Qualität auf. nVidia hat allerdings nicht das so genannte "gamma-korrigierte" Downfiltering. Obwohl nVidia mit der Behauptung, solche "gamma-correction" würde kein völlig korrektes Bild liefern, richtig liegt, zeigt ATIs Downfilterung doch oft die bessere sichtbare Antialiasing-Qualität. Außerdem bietet ATI noch 6x an. Das ist kein großer Vorteil gegenüber 4x (dafür bräuchte es schon ein 8x sparsed grid, nVidias 8x AA erfüllt das nicht und ist wegen dem Supersampling-Anteil ohnehin sehr ineffizient.) Natürlich ist ATIs 6x besser als 4x. Von der Qualitäts-Warte her bleibt ATI der Antialiasing-King. Trotzdem ist das Multisamping der GeForce 6800 Ultra auf jeden Fall gut genug für jeden Hardcore-Gamer, der auf Qualität wert legt.

Der Treiber kann die Sample-Positionen (auf einem 8x8-Grid) ändern, so dass das 4x ordered grid weiterhin möglich ist. Seltsamerweise bietet nVidia nach wie vor auch den Quincunx-Modus an (eine Technik, die das gesamte Bild unscharf macht.)


   Braucht man Pixelshader 3.0?

Pixelshader 3.0 ist 2.X mit jedem CAP (capability, das heißt hier Zusatzoption) auf das Maximum gestellt, sowie Unterstützung von "dynamic branching" (das heißt, der Shader erlaubt jetzt auch bedingte Sprunganweisungen.) Ist Pixelshader 3.0 nun der große Wurf, oder nur ein weiterer Schritt in der Evolution der Echtzeit-3D-Grafik?

Viele unserer Leser achten strikt auf "Nutzbarkeit in Spielen." Ehrlich gesagt ist Branching auf der GeForce 6800 Ultra ziemlich "teuer". Dank der Unterstützung von Early-Out könnten zukünftige und (mit Patches) auch heutige Spiele beschleunigt werden. Das hängt davon ab. Wir erwarten, dass Pixelshader 3.0 in nicht allzuferner Zukunft eingesetzt wird. Glücklicherweise ist diese Shaderversion einfach einzubauen. Auch wenn ATIs neues Werk PS3.0 nicht unterstützen wird, stehen die Chancen gut, dass Pixelshader 3.0 trotzdem in Spielen optionale Anwendung findet. Denn damit ließen sich eine Menge netter Dinge tun.

Wie immer liefert nVidia aber erst mal nur die Features und dann erst die Leistung. Das ist natürlich gut für die Marketing-Abteilung - dasselbe Feature lässt sich zwei mal ausschlachten. Zuerst, wenn es auf den Markt kommt, und dann noch mal, wenn die Leistung für "wirklichen" Einsatz ausreicht. Man denke an 32-Bit-Rendering (TNT, TNT2), T&L (GeForce256, GeForce2 GTS) oder den Vertexshader (GeForce3, GeForce4 Ti.)

Man hört oft viel Lobgesang, welche großartigen Features nVidia uns schon heute beschere, aber wir müssen der Tatsache ins Auge sehen, dass das Marketing uns nicht die ganze Wahrheit erzählt. Sie versuchen, ihr Produkt zu verkaufen, denn das ist ihr Job.

Kurzgefasst wird die GeForce 6800 Ultra keine gute Wahl sein, um "echte Shader 3.0-Spiele" zu spielen. Nun ist es im Moment das einzige Produkt mit Shader Model 3.0-Support, aber die nächsten Generationen (NV50+) werden 3.0-Shader sehr viel schneller laufen lassen.

Brauchen wir Pixelshader 3.0 heute nun? Ein Blick auf die Features:

  • Allzweck-Präzision dank FP32
  • Viele mathematische Operationen, große maximale Programmlänge
  • Ausführung bedingter Sprunganweisung

Sieht man die GPU als Coprozessor, ist das ein großer Schritt in Richtung zu einem Allzweck-Coprozessor. Mag Branching auch teuer sein (= einen großen Einfluss auf die Performance haben) man kann es nutzen, wenn man es möchte (oder wenn man es braucht.) Ebenso kann man auch beim Shader Modell 2.0 (oder 2.X) bleiben, wo der NV40 extrem schnell ist.

Pixelshader 3.0 ist eine Option. nVidia bietet diese Option jetzt an, ATI nicht. Es ist immer schön, Optionen zu haben.


   Vertexshader 3.0

Einfach gesagt ist Vertexshader 3.0 der CineFX-Vertexshader 2.X, plus Textur-Sampling. Dieses Textur-Sampling ist nicht "kostenlos": Um der Vertexengine zu helfen, die beim Texturzugriff entstehenden Latenzen zu verstecken, sollte man direkt nach den Texturzugriff einige Textur-unabhängige Befehle setzen. Während MIP-Mapping unterstützt wird, gibt es leider keine Filterung. Mit anderen Worten, der Vertexshader beherrscht nur Pointsampling. Natürlich kann man bilineare oder trilineare Filterung nachstellen, in dem man einige zusätzliche Berechnungen und Texturzugriffe vornimmt. Wir erwarten Texturfilterungs-Support der Vertexshader-TMUs in der nächsten Generation (NV50.)

Mittels einer Zwei-Pass-Lösung erlaubt der NV40 brauchbares Displacement-Mapping. Das ist ganz nett, aber nicht das Ende der Entwicklung. Obwohl Displacement-Mapping eine tolle Technologie ist, und wir danach gieren, es endlich in Spielen zu sehen, erwarten wir das nicht mal für die übernächste Generation (wenn man Doom3, HL2 für die nächste Generation hält, vielleicht Unreal 3 für die übernächste) und schon gar nicht in der "Lebensspanne" der 6800 Ultra .

Doch ohne ein hardwarebeschleunigtes Feature wird es niemals das entsprechende Spiel geben. Das gilt auch für Pixelshader 3.0. Natürlich ist es im Moment kein must-have. Später wird es schon genutzt. Entwickler können jetzt anfangen, mit all den raffinierten Features zu experimentieren. Für einen echten Marktführer ist es wichtig, nicht nur zu haben was der Spieler jetzt braucht, sondern auch was der Entwickler gerne hätte. Der Texturzugriff vom Vertexshader ist auf dem NV40 beschränkt, aber er ist möglich. Auch der Pixelshader bietet die volle 32 Bit Floating Point Genauigkeit, so dass die GeForce 6800 Ultra eine hoch entwickelte Shadertechnik vorzuweisen hat, welche sich mit einigem Aufwand auch für Physik-Berechnungen nutzen ließe. In Zukunft könnten einige Teile der Spiele-Engine, die nicht für die Grafik zuständig sind, vielleicht auf dem 3D-Beschleuniger laufen.

Seit CineFX hat der der Pixelshader das "Render to Vertexbuffer"-Feature. Der Vertexshader kann nun Texturen lesen, so dass es einen "Duplex-Kanal" für Daten gibt.

Am wichtigsten ist vielleicht, dass die Vertexshader-Leistung erheblich gesteigert wurde: Takt für Takt doppelt so schnell verglichen mit bisherigen Highend-GeForce-Chips! Das ist keine Transistor-Verschwendung, man nehme als Beispiel den Early-Z-Pass: Dieser Extra-Pass verdoppelt die Geometrie-Anforderungen. Solch enorme Vertexshading-Power braucht aber nach wie vor auch eine schnelle CPU. Da die gestiegene Geometrieleistung nun mehr (und damit kleinere) Dreieck erlaubt, muss der Entwickler schon die Größe der Dreiecke berücksichtigen. Einige Probleme mit dem Quad-basierten Rendering sind ja schon angesprochen worden. Einfache Lösung: Die Dreiecksgröße sollte so klein wie benötigt, und so groß wie noch vertretbar sein. Solches "Geometrie-LOD" (Level of Detail) könnte eine fortschrittlichen Displacment-Mapping Technik liefern.

Insgesamt betrachtet, ist das Shader Model 3.0 ein guter Schritt in der Evolution. Verglichen mit ATIs Shader-Technik ist es deutlich fortschrittlicher. Der durchschnittliche Spieler braucht diese Features natürlich noch nicht heute. Entwickler werden über ihre neuen Spielzeuge aber sehr froh sein.


2. April, San Jose, Hotel Valencia: nVidias "Editor's Day". Wir erfuhren eine Menge Informationen, die in diesem Artikel zu finden sind.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Zurück / Back Weiter / Next

Shortcuts
nach oben