Occlusion Culling:
Occlusion Culling adalah teknik yang digunakan untuk menghindari rendering objek yang tertutup atau tidak terlihat oleh kamera karena ada objek lain yang menghalanginya. Unity secara otomatis menghitung area pandang kamera dan memastikan hanya objek yang terlihat oleh kamera yang akan dirender.
Fungsi utama Occlusion Culling:
- Mengurangi beban rendering dengan menyembunyikan objek yang tidak terlihat.
- Menghindari rendering objek yang ada di belakang objek lain, sehingga tidak mempengaruhi performa.
- Unity menggunakan data precomputed (misalnya, dengan occlusion area atau portal) untuk menghitung objek yang terhalang.
Kapan Occlusion Culling digunakan?
- Ketika kamu memiliki bangunan besar, teras, atau area tertutup dengan banyak objek yang ada di dalamnya, namun hanya sebagian yang akan terlihat pada satu waktu.
- Ideal untuk scene besar dengan banyak objek statis, di mana tidak semua objek akan dilihat oleh kamera pada setiap frame.
Camera Culling (Frustum Culling):
Camera Culling, atau Frustum Culling, adalah teknik yang digunakan untuk menentukan objek mana yang berada dalam jangkauan pandang kamera (dalam view frustum kamera) dan hanya merender objek yang berada di dalamnya.
Fungsi utama Camera Culling:
- Menghindari rendering objek yang terletak di luar jangkauan kamera (misalnya, di belakang atau di luar area pandang kamera).
- Tidak mempengaruhi objek yang terhalang oleh objek lain, hanya objek yang berada di luar area pandang kamera yang diabaikan.
- Camera culling bekerja berdasarkan posisi dan orientasi kamera, dengan objek yang berada di luar view frustum (ruang pandang kamera) tidak akan dirender.
Kapan Camera Culling digunakan?
- Setiap kali kamera bergerak atau mengubah posisi, objek yang berada di luar pandangan kamera (baik itu di belakang atau jauh dari kamera) akan diabaikan dan tidak akan dirender.
- Sangat berguna untuk game yang memiliki kamera bergerak bebas atau perspektif pertama (FPS, third-person, dll.).
Perbedaan Utama:
- Area Culling:
- Occlusion Culling: Fokus pada objek yang terhalang oleh objek lain dalam pandangan kamera.
- Camera Culling: Fokus pada objek yang berada di dalam atau di luar ruang pandang kamera (view frustum).
- Tujuan:
- Occlusion Culling: Memastikan objek yang tersembunyi oleh objek lain tidak dirender.
- Camera Culling: Memastikan objek yang di luar pandangan kamera tidak dirender.
- Implementasi:
- Occlusion Culling biasanya menggunakan proses precomputing (seperti menggunakan data bervolume) untuk menghitung area mana yang terhalang.
- Camera Culling dilakukan secara real-time dengan memeriksa apakah objek berada di dalam view frustum.
- Contoh Penggunaan:
- Occlusion Culling: Sebuah objek berada di belakang gedung, jadi tidak akan dirender meskipun berada dalam jangkauan kamera.
- Camera Culling: Sebuah objek berada di luar pandangan kamera (misalnya di belakang kamera atau jauh dari kamera) dan tidak akan dirender.
Kombinasi Keduanya:
- Keduanya sering digunakan bersamaan untuk optimasi kinerja. Camera Culling menghindari objek yang benar-benar di luar pandangan kamera, sedangkan Occlusion Culling menghindari rendering objek yang tertutup oleh objek lain meskipun mereka masih berada dalam area pandang kamera.
Kesimpulan:
- Occlusion Culling dan Camera Culling berfokus pada hal yang sedikit berbeda, tetapi keduanya memiliki tujuan yang sama: mengurangi beban render untuk meningkatkan kinerja game.
- Camera Culling lebih berfokus pada ruang pandang kamera, sementara Occlusion Culling berfokus pada objek yang terhalang oleh objek lain.
- Menggunakan keduanya secara bersamaan akan memberikan optimasi yang lebih baik, terutama untuk scene besar dengan banyak objek.