Apa itu Tessellation dalam grafik komputer

16

Dalam gim-gim baru-baru ini saya perhatikan sesuatu yang disebut Tessellation, Menghidupkannya akan merusak frame rate saya.

Saya perhatikan bahwa ketika dihidupkan sepertinya Anti-Aliasing.

Adakah yang bisa memberi saya informasi lebih lanjut tentang apa sebenarnya GPU itu.

Anarach
sumber
2
Oh sayang, 2 jawaban dan tidak ada gambar grafik komputer yang terbaik.
joojaa

Jawaban:

25

Tesselation adalah teknik yang memungkinkan Anda untuk menghasilkan primitif (segitiga, garis, titik, dan semacamnya) pada kartu grafis. Secara khusus, ini memungkinkan Anda berulang kali membagi geometri saat ini menjadi jala yang lebih halus.

Ini memungkinkan Anda untuk memuat mesh yang relatif kasar pada kartu grafis Anda, menghasilkan lebih banyak simpul dan segitiga secara dinamis dan kemudian memiliki mesh pada layar yang terlihat jauh lebih halus.

Contoh penghentian

Sebagian besar waktu tesselation ini dilakukan lagi di setiap frame tunggal dan ini bisa menjadi alasan bahwa frame-rate Anda turun begitu Anda mengaktifkannya.

Tesselation dilakukan dalam beberapa tahap, dan itu dilakukan SETELAH vertex shader.

Tahapan

Persyaratan untuk setiap tahap bervariasi berdasarkan API. Di DirectX, itu adalah Hull Shader, Hardware Tessellation, dan Domain Shader. Dalam OpenGL, mereka disebut Tessellation Control Shader, Tesselation Primitive Generation, dan Tessellation Evaluation Shader.

Tahap pertama dan terakhir diprogram, tesselation aktual dilakukan oleh perangkat keras dalam tahap fungsi tetap.

Di Tesselation Control shader Anda mengatur jenis dan jumlah subdivisi.

Kemudian hardware tessellator membagi geometri sesuai dengan Shader Kontrol.

Terakhir, Tessellation Evaluation Shader dipanggil untuk setiap simpul yang baru dibuat. Dalam shader ini, Anda mengatur tipe primitif yang ingin Anda hasilkan dan bagaimana simpulnya ditempatkan dan banyak hal lainnya. Shader ini juga dapat digunakan untuk melakukan segala macam perhitungan per-simpul seperti halnya vertex shader. Dijamin dipanggil setidaknya satu kali untuk setiap vertex yang dihasilkan.

Jika Anda ingin melakukan pekerjaan lebih lanjut pada primitif, Anda dapat menambahkan shader Geometry.

Dragonseel
sumber
1
@Nicol Terima kasih. Saya mengedit jawabannya.
Dragonseel
7

Ini mengaktifkan 3 tahap dalam pipa.

Yang pertama adalah tessellation control shader (hull shader di D3D) yang melihat sekumpulan simpul dan kemudian menampilkan bagaimana ia harus dibagi dalam segitiga yang terpisah.

Yang kedua adalah tahap fungsi tetap yang akan menghasilkan segitiga yang diminta.

Tahap ketiga tessellation evalutation shader (domain shader di D3D) yang dijalankan per vertex yang dihasilkan dan akan meletakkannya di tempat yang benar berdasarkan koordinat barycentric dari vertex yang dihasilkan.

Ini digunakan untuk level detail untuk menghasilkan lebih banyak segitiga ketika mesh lebih dekat ke kamera.

aneh ratchet
sumber