Tessellation vs Geometry Shader


11

Koreksi saya jika saya salah, tetapi pekerjaan Geometry Shader dan Tessellation Shader adalah menghasilkan simpul dalam Pipa Grafis. Apa yang ingin saya ketahui adalah bagaimana mereka berbeda dan kapan saya harus menggunakannya?


6
Saya merasa terlalu malas untuk menulis jawaban penuh, tetapi intinya adalah Geometry Shader adalah untuk tingkat amplifikasi yang sangat kecil, di mana tahap Tessellation adalah untuk amplifikasi poligon yang masif dan dinamis
MickLH

Jawaban:


14

Sebenarnya tidak, 'pekerjaan' geometri shader (GS) adalah evaluasi primitif.

Geometry shaders dapat di-tesselate, tetapi mereka dibatasi oleh a) batas atas yang sedang dalam proses pada jumlah elemen output, dan b) eksekusi dalam shader tunggal ... tentu saja shader instending aleviates masalah kedua, tetapi keseluruhan shader geometri adalah lebih efektif pada evaluasi primitif dan / atau interpolasi nilai daripada pada saat penghentian.

Sebagai perbandingan, tesselation shaders (TS) diperkenalkan secara khusus untuk melakukan densifikasi geometri sehingga mereka berkinerja baik, kuat untuk array algoritma yang semakin melebar, (pun intended) dan mereka kurang dibatasi oleh buffer yang dibatasi keluaran.

Daniel Rákos memiliki artikel bagus tentang evolusi GS / TS: Sejarah tessellation perangkat keras

Kapan menerapkan masing-masing adalah kasus 'gunakan alat yang tepat untuk pekerjaan' dan di sini adalah caranya: Membangun pipa konsep kasar tanpa tesselator untuk mendapatkan primitif mengevaluasi dengan benar di VS / GS / FS. Secara terpisah, lingkup tessellation berbasis tampilan atau adegan, lalu masukkan TS di depan GS untuk memperkuat primitif yang kemudian diteruskan ke GS yang sudah dirancang. Jika Anda ingin mencoba TS yang berbeda kemudian membangun alternatif dan menukarnya ke dalam pipa ... Anda bahkan dapat menggunakan GS yang dipasang untuk secara dinamis memilih TS yang tepat berdasarkan pada properti primitif!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.