Jujur saya tidak tahu apa yang mesin generasi berikutnya gunakan hari ini, tapi saya akan memberitahu Anda apa yang saya tahu. Sangat mudah untuk bingung antara optimasi dan struktur data yang digunakan untuk membantu dalam optimasi itu. Semua hal yang disebutkan di bawah ini adalah untuk optimasi, tetapi saya akan menunjukkan yang mana adalah struktur data secara khusus.
BSP : Struktur Data - Untuk mendeteksi persimpangan antara objek bergerak dinamis dan geometri dunia statis. Dulu digunakan untuk kedua deteksi tabrakan dan rendering geometri dengan benar tanpa zbuffer, tetapi tidak lagi digunakan untuk rendering lagi karena kita memiliki cukup memori untuk buffer az sekarang. Meskipun secara teknis dihasilkan sedikit berbeda tetapi masih dianggap jenis pohon yang sama. Membutuhkan preprocessing.
Oktree atau Kd-Tree : Struktur Data - digunakan untuk menentukan objek apa yang ada di "sel" atau area yang sama untuk menghindari melakukan pemeriksaan n ^ 2 pada semua objek dinamis.
Ini bukan satu-satunya, tetapi mungkin yang paling umum. Ada juga banyak optimasi yang memungkinkan mesin menghindari rendering geometri secara umum. Tetapi yang berikut hanya mencabut geometri, dan biasanya hanya itu yang digunakan untuk:
Portal : Tidak secara teknis struktur data, tetapi membutuhkan yang khusus untuk melakukan pemusnahan. Digunakan untuk pemusnahan visibilitas geometri dunia dan geometri objek dinamis dari tampilan. Membutuhkan preprocessing untuk membagi dunia menjadi area yang saya pikir. Tapi saya belum benar-benar menerapkan ini, jadi saya tidak tahu.
Penyisihan oklusi : Optimasi - digunakan untuk visibilitas pemusnahan untuk apa pun yang Anda inginkan, mungkin objek dinamis.
Pemusnahan Tampilan Biasa : Pengoptimalan - memusnahkan objek yang tidak ada dalam tampilan kamera.
Lebih banyak pemusnahan viewport : Optimasi - pemusnahan viewport reguler dapat dioptimalkan lebih jauh dengan menggunakan sebuah octree. Anda dapat menyisihkan seluruh sel oktaf yang ada di belakang kamera atau tidak dalam pandangannya. Ini termasuk bidang medan (jika Anda berada di luar). Apa pun yang tidak dimusnahkan oleh octree Anda akan melakukan "pemusnahan viewport biasa". Lalu, apa pun yang tersisa, Anda akan membuat.
Pemusnahan backface : Optimalisasi - memiringkan geometri menghadap jauh dari kamera untuk mencegah rasterisasi. Biasanya dilakukan di perangkat keras jika status render diatur dengan benar.
Struktur data kasus khusus:
Pohon AABB atau pohon Sphere : Ini adalah jenis struktur data kasus khusus. Mereka mengubah bentuk cekung menjadi cembung. Misalnya karakter dengan tulang secara teknis cekung. Ini memecahnya menjadi potongan-potongan cembung yang lebih kecil. Dapat digunakan sebagai optimisasi untuk deteksi tabrakan, visibilitas pemusnahan objek dinamis (biasanya), dan membuatnya lebih mudah untuk melakukan tes persimpangan karena itu cembung. Ini akan masuk ke dalam katakanlah, sebuah octree karena mereka biasanya objek yang dinamis. Ini juga dapat digunakan untuk membantu dengan optimisasi pemusnahan oklusi.
Tidak ada alasan mengapa Anda harus menggunakan struktur tunggal untuk mewakili semuanya (seperti grafik adegan). Menurut pendapat saya, Anda akan lebih baik menggunakan struktur data yang berbeda untuk tugas yang berbeda daripada mencoba menggunakan satu jenis pohon tujuan umum. Sebagai contoh, mesin yang sedang saya kerjakan saat ini, saya berencana untuk menerapkan kombinasi BSP / Octree / AABB Tree dengan optimisasi berikut: penyumbatan oklusi, viewport, &, tentu saja, pemusnahan backface. Ini berarti saya akan memiliki satu pohon bsp, satu octree, dan mungkin beberapa pohon aabb di dalam octree itu.
Pemilihan struktur data dan algoritma / optimisasi terbaik mungkin merupakan hal terbesar dan paling menguntungkan yang dapat Anda lakukan untuk mesin Anda.