Frustum Culling dengan VBO


8

Saya memiliki medan yang dirender dalam proyek saya menggunakan VBO di OpenGL. Saya ingin menerapkan Frustum Culling tetapi tidak tahu cara mengakses setiap poligon seperti yang ditarik untuk memeriksa apakah itu terlihat. Saya pikir ini adalah di mana oktober berperan, tetapi saya tidak tahu bagaimana ini benar-benar dilakukan. Adakah yang tahu tutorial yang baik tentang bagaimana melakukan hal khusus ini atau memiliki pseudocode untuk saya?

Terima kasih sudah mahir!

Jawaban:


3

Informasi lebih lanjut tentang cara Anda menyimpan data medan akan sangat membantu di sini. Apakah Anda menyimpannya? Apakah Anda terus-menerus membangun kembali VBO? Apakah semua medan dalam satu VBO dan Anda merendernya sekaligus?

Mencoba menyisihkan per poligon mungkin akan memperkenalkan lebih banyak overhead daripada menghemat. Semakin besar sebidang tanah yang dapat Anda uji sekaligus, semakin cepat penyisihannya, dengan trade-off yang jelas dari akurasi. Pada akhirnya, Anda perlu melakukan beberapa profil untuk mengetahui apa poin optimal dari pertukaran itu, sehingga menciptakan sistem yang memungkinkan Anda mengubah secara dinamis bagaimana medan Anda dipecah akan sangat membantu.


1

GPU sudah dapat memilah poligon berdasarkan per poligon, tetapi ini terjadi pada waktu rasterisasi / pengaturan yang terjadi setelah naungan vertex (menggunakan shader Vertex / Geometri / Hull / Domain). Ini berarti bahwa GPU masih dapat mengakhiri naungan simpul poligon yang akhirnya akan dimusnahkan. Jika ini terjadi, GPU akan melakukan banyak pekerjaan tanpa hasil dan karenanya merupakan pemborosan siklus GPU.

Untuk alasan ini, kami mencoba untuk tidak membuang siklus GPU dengan memusnahkan geometri yang tidak terlihat di sisi CPU (atau sisi GPU menggunakan fitur DX10 + seperti DrawIndirect dan / atau rendering yang diprediksi) dalam kumpulan poligon dengan hanya tidak memanggil draw untuk batch tersebut.

Biasanya kumpulan poligon itu dapat diwakili oleh bola atau kotak yang mengelilingi semua poligon itu. Bola / kotak pembatas ini kemudian diuji terhadap frustum dan jika menyentuh frustum, draw draw dipanggil untuk poligon-poligon tersebut. Jika tidak, panggilan undian akan dilewati. Sebuah octree hanyalah cara lain untuk menentukan kumpulan geometri mana yang terlihat, kecuali itu mengatur data tersebut secara hierarkis. Oktaf belum tentu cocok untuk semua geometri.

Beberapa referensi yang cukup bagus yang menjelaskan teknik sphere / frustum adalah sebagai berikut:

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.