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?
shaders
hlsl
geometry
tessellation
Caesar
sumber
sumber
Jawaban:
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!
sumber