Apakah simpul diproses ulang per-poli untuk jerat terindeks?

8

Saya telah menggali sedikit ke dalam apa yang sebenarnya terjadi pada tingkat perangkat keras pada GPU, dan menemukan NVidia's Life of a triangle yang menjelaskan pipa dengan cukup baik, setidaknya untuk kotak hijau. Satu hal yang saya tidak jelas adalah apa yang terjadi dengan jerat berindeks, ketika simpul yang sama digunakan untuk sekelompok segitiga yang berbeda. Karena data umumnya tidak bertahan lebih lama dari yang diperlukan dalam prosesor aliran, saya menduga verteks hanya dihancurkan setelah dirasterisasi, kemudian diambil dan dijalankan melalui vertex shader lagi setiap kali muncul dalam segitiga baru. Adakah yang bisa mengkonfirmasi ini? Juga, apa yang terjadi dalam mode strip-strip atau segitiga-strip? Apakah GPU mempertahankan data vertex yang ditransformasikan di suatu tempat sampai 2 atau 3 primitif yang relevan telah dirasterisasi dalam kasus ini?

russ
sumber

Jawaban:

5

Ekspresi kunci yang mungkin Anda cari adalah "Post Transform Cache" .

Ini biasanya efektif karena vertex alami digunakan kembali, tetapi menyusun ulang mesh Anda, misalnya dengan metode Hoppe (catatan: halaman ini juga mencantumkan beberapa pekerjaan yang lebih baru) atau Forsyth dapat memperbaiki keadaan lebih jauh.

Simon F
sumber
1
Yup, itu dia. Terima kasih. :-) Saya telah melakukan indeks Marching Cubes pada volume yang cukup besar dan ingin tahu bagaimana mereka diterjemahkan, karena lokalitas verteks cukup buruk di antara irisan. Masuk akal untuk men-cache simpul di suatu tempat (saya kira hanya dalam cache L1 / 2 standar?). Jaring saya mungkin rusak sehingga cukup untuk memproses ulang banyak simpul, jadi saya akan melihat algoritma tersebut.
russ
4

Itu tergantung pada seberapa jauh jarak vertex digunakan kembali.

Misalnya kuadrat 0, 1, 2, 2, 1, 3akan memiliki interval yang cukup pendek sehingga simpul 1dan 2akan digunakan kembali. Tetapi jika ada seratus titik di antara penggunaan kembali maka kemungkinan besar tidak akan ada penggunaan kembali.

Tetapi ketika mereka jauh lebih jauh maka vertex akan jatuh dari cache dan harus diproses ulang oleh shader vertex.

Inilah sebabnya mengapa beberapa perangkat lunak 3D memiliki cara untuk meningkatkan lokalitas simpul untuk jerat yang diindeks dengan menyusun kembali simpul.

aneh ratchet
sumber