Werbung
PolyMorph-Engine:
Eine der zwei neuen Fixed-Function-Units - und auch die Wichtigste - ist die PolyMorph-Engine. Sie ist maßgeblich verantwortlich für Vertex-Fetch, Tessellation, Attribute-Setup, Viewport-Transform und den Stream-Output. Tesselation ist eines der wichtigsten Features in DirectX 11 und daher für die Performance und Darstellung entsprechender Inhalte besonders wichtig.
Jede SM-Einheit besitzt eine PolyMorph Engine, insgesamt kann die GF100 also auf 16 zurückgreifen. Für die GeForce GTX 480 und 470 gilt hier wieder die Reduzierung auf 15 bzw. 14. Sind die SM-Einheit und die PolyMorph Engine durchlaufen, wird das Ergebnis an die Raster Engine weitergeleitet. In einem zweiten Schritt beginnt dann der Tesselator mit der Berechnung der benötigten Oberflächen-Positionen, die dafür sorgen, dass je nach Abstand der nötige Detailgrad ausgewählt wird. Die korrigierten Werte werden wiederum an die SM-Einheit gesendet, wo der Domain-Shader und der Geometrie-Shader diese dann weiter ausführen. Der Domain-Shader berechnet die finale Position jedes Dreiecks indem er die Daten des Hull-Shaders und des Tesselators zusammensetzt. An dieser Stelle wird dann auch das Displacement-Mapping durchgeführt. Der Geometrie-Shader vergleicht die errechneten Daten dann mit den letztendlich wirklich sichtbaren und sendet die Ergebnisse wieder an die Tesselation-Engine, für einen finalen Durchlauf.
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
Im letzten Schritt dann führt die PolyMorph-Engine die Viewport-Transformation und eine perspektivische Korrektur aus. Letztendlich werden die berechneten Daten über den Stream-Output ausgegeben, indem der Speicher diese für weitere Berechnungen freigibt. Während diese Schritte als Fixed-Function-Operationen bisher in einer Pipeline verarbeitet wurden, können sie auf der GF100 parallel berechnet werden, was die Geschwindigkeit der Berechnung deutlich erhöhen soll.
Die folgenden Messungen gibt NVIDIA für die Tesselation-Performance an:
Raster-Engine:
Vier parallele Raster-Engines sorgen auf der GF100-GPU nach der PolyMorph-Engine für eine möglichst detailreiche Darstellung der errechneten Werte. Dazu ist die Raster-Engine in drei Stufen aufgeteilt.
Im Edge-Setup werden nicht sichtbare Dreiecke bestimmt und durch ein "Back Face Culling" entfernt. Jedes Edge-Setup kann pro Takt einen Punkt, eine Linie oder ein Dreieck berechnen. Der Rasterizer zeichnet sich für die Bestimmung der durch Antialiasing berechneten Werte verantwortlich. Jeder Rasterizer kann pro Takt acht Pixel berechnen, insgesamt ist die GF100-GPU also in der Lage 32 Pixel pro Takt zu berechnen. Zum Abschluss vergleicht die Z-Cull-Unit die gerade errechneten Pixel mit bereits im Framebuffer existierenden. Liegen die gerade berechneten Pixel geometrisch hinter denen die sich bereits im Framebuffer befinden, werden sie verworfen.