Werden Scheitelpunkte für indizierte Netze pro Poly erneut verarbeitet?

8

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?

russ
quelle

Antworten:

5

Der Schlüsselausdruck, nach dem Sie möglicherweise suchen, ist "Post Transform Cache" .

Dies ist normalerweise aufgrund der natürlichen Wiederverwendung von Scheitelpunkten effektiv, aber eine Neuordnung Ihres Netzes, z. B. mit der Methode von Hoppe (Hinweis: Auf der Seite sind auch einige neuere Arbeiten aufgeführt) oder mit Forsyths kann die Dinge weiter verbessern.

Simon F.
quelle
1
Ja, das ist der eine. Vielen Dank. :-) Ich habe indizierte Marching Cubes auf ziemlich großen Volumes erstellt und war neugierig, wie sie gerendert wurden, da die Vertex-Lokalität zwischen Slices ziemlich schlecht ist. Es ist sinnvoll, die Eckpunkte irgendwo zwischenzuspeichern (ich denke nur im Standard-L1 / 2-Cache?). Meine Netze sind wahrscheinlich nicht in der richtigen Reihenfolge, um viele Scheitelpunkte erneut zu verarbeiten. Daher werde ich mich mit diesen Algorithmen befassen.
Russ
4

Das hängt davon ab, wie weit die Scheitelpunkte voneinander entfernt wiederverwendet werden.

Zum Beispiel des Quadrat 0, 1, 2, 2, 1, 3wird ein kurz genug Intervall , dass die 1und 2Ecken 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.

Ratschenfreak
quelle