Dengan fillrates modern dan rendering yang ditangguhkan, apakah pemusnahan oklusi masih relevan?


10

Misalnya, walaupun ini adalah GPU top-of-the-line saat ini, GTX 980 memiliki 72,1 gigapixels / second fillrate yang mengejutkan, yang dengan rendering back-to-front dan / atau buffer buffer Z, tampak hampir sangat besar, bahkan mungkin sangat besar. pada resolusi 4k. Sejauh hitungan poligon, GPU modern dapat melakukan puluhan hingga ratusan juta segitiga bertekstur tanpa hambatan jika Anda batch dan / atau instantiate dengan benar.

Dengan render maju, jumlah fragmen yang akan digunakan oleh shader dapat dengan cepat menjadi luar biasa, tetapi dengan rendering yang ditangguhkan, biayanya biasanya lebih atau kurang konstan, tergantung pada resolusi, dan kami sudah lama melewati titik di mana sebagian besar shading atau efek pasca-pemrosesan dapat dilakukan secara realtime dalam 1080p.

Either way, faktor pembatas saat ini adalah yang paling umum menarik jumlah panggilan, dan biaya peneduhan, keduanya dijaga relatif rendah oleh rendering yang ditangguhkan dan batching geometri, sehingga dengan itu dalam pikiran, pemusnahan lebih dari sekadar backface dan out-of- poligon frustrum dari manfaat besar? Bukankah biaya (waktu CPU / GPU, waktu programmer) melebihi manfaatnya, sering kali?


1080p adalah seni piksel baru.
Jessy

Jawaban:


9

Ya, pemusnahan oklusi masih berharga.

Minimal, panggilan undian yang Anda lewati karena pemusnahan adalah panggilan undian yang tidak harus menjalankan vertex shader. Hitungan segitiga naik secepat GPU mulai mendukung lebih banyak segitiga, karena mengapa tidak? Dengan arsitektur terpadu, vertex shaders menggunakan perangkat keras yang sama persis dengan yang dilakukan pixel shaders, jadi setiap vertex yang Anda lewati karena pemusnahan lebih menghitung waktu untuk hal-hal yang dapat Anda lihat. Belum lagi semua hal lain yang Anda lewatkan (pemrosesan panggilan draw CPU, dan melempar tris cukup jauh melalui pipa sehingga rasterizer menyadari bahwa ia tidak perlu menaungi mereka).

Ada presentasi hebat dari dua studio Ubisoft di SIGGRAPH 2015 tentang jaringan render berbasis GPU. Di permukaan itu tentang beberapa hal yang Anda sebutkan: batching dan instancing, mengurangi jumlah panggilan draw. Tapi salah satu keuntungan utama yang mereka dapatkan dari pemipaan yang digerakkan GPU adalah pemusnahan oklusi berbutir halus: pemusnahan yang lebih baik daripada yang biasanya Anda lihat pada tingkat panggilan-menarik. Semuanya dalam upaya mendekati sasaran secara asimptotik: hanya memproses apa yang dapat Anda lihat, yang berarti bahwa apa yang dapat Anda lihat terlihat lebih baik.

(Juga: pertimbangkan konsol, ponsel, VR, dan desktop-tanpa-GPU-terbaru-dan-terhebat-yang-dapat-dibeli-beli. Bahkan jika semua tris Anda menghilang ke dalam mulut yang menganga di papan atas Anda. -Garis GPU, Anda mungkin bukan target utama.)


Bagaimana dengan ketika vertex shader digunakan untuk mengubah bentuk jerat? (yang saya anggap mungkin ... saya seorang pemula untuk pemrograman grafis)
Llamageddon

Juga, apakah Anda memiliki makalah tentang pemusnahan oklusi yang didukung GPU? Apakah ini fitur bawaan GPU modern, atau ..?
Llamageddon

@Llamageddon Pada arsitektur GPU modern, vertex shader selalu berjalan, dan sangat mampu mendeformasi jerat — itu hanya mengubah simpul secara tidak kaku. Vertex shader yang lebih mahal dan lebih banyak pekerjaan, tentu saja, lebih banyak pekerjaan yang akan dilewati oleh pemusnahan. Saya tidak punya makalah tentang pemusnahan GPU oklusi, akademisi tampaknya tidak terlalu terpesona dengan itu. Ini bukan fitur bawaan GPU, hanya penggunaan komputasi yang kreatif.
John Calsbeek

Oh, maksudku bagaimana dengan menyisihkan jerat yang akan cacat? Apakah Anda menyisihkannya setelah menjalankan vertex shaders? Kedengarannya berbelit-belit.
Llamageddon

@Lamageddon Umumnya Anda hanya memilah mereka terhadap volume konservatif. Atau beberapa volume yang lebih kecil yang Anda ubah bentuknya dengan jaring (misalnya, saat menguliti Anda dapat menempelkan volume pemusnahan pada sambungan).
John Calsbeek

2

Itu tergantung pada gaya permainan berapa banyak pemusnahan yang dibutuhkan. Misalnya penembak orang pertama mendapat manfaat dari ini banyak, memiliki banyak hal dalam frustrasi pada suatu waktu, sementara pandangan overhead RTS tidak karena Anda secara efektif melihat pesawat dengan barang-barang di pesawat itu. Bahkan dalam RTS sekalipun, melakukan "kedalaman satu-satunya render" untuk menghilangkan penarikan berlebih masih bermanfaat.

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.