Ich habe mich ein wenig mit dem befasst, was auf Hardwareebene auf der GPU tatsächlich passiert, und NVidias Leben eines Dreiecks gefunden, das die Pipeline ziemlich gut erklärt, zumindest für grüne Boxen. Eine Sache, bei der ich nicht klar war, ist, was mit indizierten Netzen passiert, wenn der gleiche Scheitelpunkt für eine Reihe verschiedener Dreiecke verwendet wird. Da Daten in einem Stream-Prozessor im Allgemeinen nicht länger als nötig gespeichert bleiben, wird der Scheitelpunkt nach dem Rastering einfach zerstört, dann abgerufen und erneut durch den Scheitelpunkt-Shader ausgeführt, wenn er in einem neuen Dreieck angezeigt wird. Kann jemand das bestätigen? Was passiert auch im Line-Strip- oder Triangle-Strip-Modus? Behält die GPU die transformierten Scheitelpunktdaten irgendwo bei, bis die 2 oder 3 relevanten Grundelemente in diesen Fällen gerastert wurden?
8
Das hängt davon ab, wie weit die Scheitelpunkte voneinander entfernt wiederverwendet werden.
Zum Beispiel des Quadrat
0, 1, 2, 2, 1, 3
wird ein kurz genug Intervall , dass die1
und2
Ecken werden wiederverwendet werden. Wenn zwischen den Wiederverwendungen jedoch hundert Eckpunkte liegen, ist es wahrscheinlicher, dass keine Wiederverwendung erfolgt.Wenn sie jedoch viel weiter voneinander entfernt sind, fällt der Scheitelpunkt aus dem Cache und muss vom Scheitelpunkt-Shader erneut verarbeitet werden.
Aus diesem Grund können einige 3D-Programme die Scheitelpunktlokalität für indizierte Netze verbessern, indem sie die Scheitelpunkte neu anordnen.
quelle