S3 DeltaChrome vs. XGI Volari
10. Februar 2005 / von Robbitop / Seite 6 von 20
Die Architekturen (Forts.)
Der Vertexshader
Im Vertexshader wird die Geometrieberechnung des Bildes durchgeführt. In diesem sind unterschiedliche Funktionen verfügbar: Fest verdrahtetes T&L (Transformation und Beleuchtung) ist einer der ersten Funktionen der Geometrie, die in die Grafikhardware Einzug fanden. Hier werden die Vektornormalen transformiert oder es kommt Backfaceculling (Entfernung von Dreiecken der Innenoberfläche bei geschlossenen konvexen Körpern)zum Einsatz. Für die Animation von Objekten (wie Grashalme und Blätter) sind hingegen programmierbare Shader notwendig.
DeltaChrome S8 | Radeon 9600 | GeForce 5700 | Volari V8 | |
Anzahl | 4 | 2 | 3 | 2 |
Flusskontrolle | statisch | statisch | dynamisch | statisch |
SIMD/MIMD | SIMD | SIMD | MIMD | SIMD |
Die Unterschiede im Geometriebereich scheinen sich auf den ersten Blick hauptsächlich in der Anzahl der Vertexshader zu konzentrieren. Die Komplexität derer ist allerdings unterschiedlich. Vor allem bei der Nutzung von Spezialfunktionen sind die Vertexshader vom DeltaChrome denen von nVidia und ATI unterlegen. Dort muss scheinbar desöfteren zu umständlichen Makros (z.B. die Taylor-Reihe für die Berechnung von SinCos) gegriffen werden. Das beansprucht mehrere Takte.
Die beiden Vertexshader des Volari V8 erweisen sich in späteren Benches als relativ performant. Diese werden weiterhin durch eine fest verdrahtete T&L Einheit verstärkt. Diese ist heutzutage unüblich, da ihre Funktionen über den Vertexshader nachgebildet werden können. Die Radeon 8500 setzte dies ähnlich um.
Der Vertexshader der GeForce 5700 ist technologisch in Front. Dieser unterstützt eine dynamische Flusskontrolle und eine höhere Präzision pro Kanal bei den Vertexshader-ALUs. Weiterhin ist maximale Ausführungslänge von Shadern deutlich höher als die der Konkurenz.
Das Triangle Setup
Verticles (Eckpunkte von Dreiecken [x/y/z]) werden von der CPU errechnet und über den Grafikbus zur Grafikkarte geschleust. Diese machen einen Umweg über den Vertexshader. Im Trisetup werden diese Punkte in 2D Koordinaten umgewandelt. Bei jedem Dreieck wird vorerst der Eckpunkt gesucht, der den kleinsten Y-Wert besitzt. Für diesen wird die Position in Zeilen und Spalten ermittelt. Die nächsten beiden Eckpunkte werden analog umgesetzt. Jedoch wird der Tiefenwert bei der 3D - 2D Transformation berücksichtigt und fließt in Form einer perspektive Verzerrung in das Finale Dreieck ein.
Genaueres dazu gibt es hier.
DeltaChrome S8 | Radeon 9600 | GeForce 5700 | Volari V8 | |
Rasterisierung | 9x9 | 6x6 | 2x2 | 2x2 |
Die Granularität vom Triangle Setup bestimmt das maximal mögliche Anti-Aliasing und die Nutzung von Anti-Aliasing Masken.
Effizienzsteigernde Features
DeltaChrome S8 | Radeon 9600 | GeForce 5700 | Volari V8 | |
Z-Occlusion Culling | ja | ja | ja | ja |
Hierarchial Z Buffer | ja | nein | nein | nein |
Rendering | Z-First | 1-Pass | 1-Pass | 1-Pass |
Fast-Z-Clear | ja | ja | ja | ja |
Z-Compression | ja | ja | ja | nein |
Colorcompression | nein | ja bei Anti-Aliasing | ja bei Anti-Aliasing | nein |
Memorycontroller | nicht unterteilt | 2fach unterteilt | 2fach unterteilt | 2fach unterteilt |
Der Begriff "defered Rendering" (verzögertes Rendern) könnte leicht eine Assoziation mit den Chips von PowerVR Chip hervorrufen. Diese Sorte von Grafikbeschleunigern gewann durch das Vermeiden von Overdraw (überschriebene Pixel) massiv an Effizienz (um den Faktor 2-3). Bei PowerVR teilt man das Bild in Tiles (Kacheln) auf und lässt die Z-Units vor dem eigentlichen Rendern überprüfen, welche Pixel verdeckt sind. Diese werden dann gar nicht erst gerendert. Während die Pipeline das erste Bild rendert, sortiert der HSR Bereich den Overdraw aus dem nächsten aus. Das Besondere an der Kyro-Architektur sind die Kachelaufteilung und das Rendern und Checken von Overdraw in einem einzigen Pass.
S3 fasst unter dem Begriff "Advanced Defered Rendering" dagegen die Bandbreiten- und füllratenschonenden Features dieses Grafikchips zusammen. Der DeltaChrome ist also kein defered Renderer sondern ein "gewöhnlicher" Immediate Renderer (sofortiger Renderer). Features bei IMRs, welche in ihrer Funktionsweise von TBDRs (Tile based Defered Renderer) etwas ähneln, jedoch nie seine Effizienz besitzen, kennen wir bereits seit der Ur-Radeon und der GeForce3.
Hierachial Z Buffering
Mittels Hierarchial Z Buffering können ganze Tiles verworfen werden, wenn alle Pixel dieses Tiles von der HSR Hardware als Overdraw klassifiziert werden. Ist dies nicht der Fall, so werden um den Faktor 2 kleinere Tiles verwendet und der Test wiederholt sich. In günstigen Fällen können viele Pixel pro Takt verworfen werden. Lediglich der DeltaChrome unterstützt dieses Feature unter den von uns untersuchten Kontrahenten. ATI musste bei der Radeon 9600 dieses Feature entfernen, da dies in der R3xx-Architektur nur im Zusammenspiel mit 2 Quadpipelines funktionsfähig war.
Fast-Z-Clear
Dieses Feature bewirkt einen sehr geringen Zeitaufwand beim Löschen des Tiefenspeichers (Z-Buffer). Dies verkürzt chipinterne Wartezyklen. Wir gehen davon aus, dass alle Kontrahenten über so ein Feature verfügen.
Z Occlusion Culling
Der Rendervorgang kann in prinzipiell drei Richtungen geschehen (Z-Richtung ist hiermit gemeint) von vorn nach hinten (Front-to-back) oder von hinten nach vorn (back-to-front) oder unsortiert. In allen Fällen funktioniert das Z Occlusion Culling beim DeltaChrome. Dies ist nur durch ein vom Treiber erzwungenes Zweipass-Rendering, welches z.B. auch bei Doom 3 generell zum Einsatz kommt, möglich.
Alle anderen Karten verfügen über ein reguläres Z Occlusion Culling. Dies ist im Prinzip ein vorgezogener Tiefentest. Hierbei wird vor dem eigentlichen Rendern ein Z-Wert verglichen. Der Ausgangswert stammt noch aus dem Trisetup. Der Endwert des zu berechnenden Pixels stammt aus der ROP. Ist das Pixel verdeckt, wird dieses gar nicht erst gerendert. Natürlich kann das nur funktionieren, wenn von vorn nach hinten gerendert wird. Jedoch kommt nie ein strenges front-to-back rendering zum Einsatz, so dass der Overdraw praktisch nie komplett vor dem Rendern beseitigt werden kann.
Durch das generelle Zweipass-Rendern des DeltaChromes wird im ersten Pass nur der Z-Puffer gerendert (die Tiefeninformationen aller Pixel sind in diesem gespeichert). Dabei fallen keine Shader, keine Pixel und auch keine Texturfilterungen an. Jeder Zixel (Kunstwort für farbloser Pixel) kann also in einem Takt fertig gestellt werden. Beim eigentlichen Rendervorgang ist der Tiefenspeicher bereits fertig, somit fliegt Overdraw durch Early Z viel zuverlässiger heraus. Es müssen lediglich bei Overdraw Z-Werte getestet werden. Das spart Bandbreite und Pixelshaderleistung.
Allerdings kann Zweipass-Rendering, so wie es beim DeltaChrome und bei Doom 3 der Fall ist, der Geschwindigkeit zum Nachteil gereichen. Denn die Geometriedaten müssen 2x zum Grafikchip geschickt werden, das kostet CPU- und Geometrieleistung. Die Vertexshader in der GPU müssen die Geometriedaten natürlich ebenfalls doppelt transformieren. Auch kann der Zixeloutput der ROPs oder die Pixelverwerfleistung zum Flaschenhals werden. Z-First ist also überlegen, wenn der Pixelshader limitiert.