Artikel SABANA88
Node 01 / Platform Overview
SABANA88 | Occlusion Culling Bikin Game Nggak Perlu Menggambar Objek yang Lagi Ketutup Bangunan atau Objek Lain
Bayangkan karakter berdiri di depan sebuah gedung besar. Di balik gedung itu sebenarnya ada pohon pagar kendaraan dekorasi dan puluhan objek lain. Semuanya masih menjadi bagian dari dunia game tetapi dari posisi kamera sekarang pemain nggak bisa melihat benda-benda tersebut. Pertanyaannya sederhana: apakah semua benda yang tersembunyi itu tetap perlu digambar? Dari sinilah pembahasan SABANA88 masuk ke Occlusion Culling.
Occlusion Culling merupakan teknik optimasi rendering yang berusaha mengetahui objek mana yang tertutup dari pandangan kamera. Kalau sebuah objek benar-benar nggak memberikan kontribusi visual pada frame sekarang proses rendering tertentu terhadap objek tersebut dapat dilewati. Dunia gamenya tetap sama. Yang dikurangi adalah pekerjaan yang memang nggak akan kelihatan oleh pemain.
Objek Ada di Scene Belum Tentu Harus Kelihatan
Scene game bisa mempunyai banyak objek sekaligus. Ada objek di depan kamera ada yang berada jauh di belakang ada yang di luar pandangan dan ada pula yang sebenarnya berada di arah kamera tetapi tertutup objek lain.
Kalau engine memperlakukan semuanya sama jumlah pekerjaan rendering dapat membesar padahal sebagian hasilnya nggak pernah terlihat di layar.
Kamera Jadi Titik Awal Pembicaraan Visibility
Apa yang dianggap terlihat selalu bergantung pada posisi dan arah kamera. Sebuah rumah bisa terlihat jelas dari satu sisi tetapi ketika kamera pindah ke belakang tembok rumah tersebut mungkin tertutup sepenuhnya.
Karena itu visibility bukan sifat permanen sebuah objek. Nilainya dapat berubah setiap kali kamera atau objek bergerak.
Occlusion Artinya Ada Sesuatu yang Menghalangi Pandangan
Misalnya objek A berada di depan objek B dari sudut pandang kamera. Kalau ukuran dan posisinya membuat B tertutup sepenuhnya maka A bertindak sebagai penghalang atau occluder.
Objek B yang tertutup dapat disebut occluded object dalam konteks tersebut.
Bangunan Besar Bisa Menjadi Occluder yang Efektif
Dinding gedung tebing atau struktur besar merupakan contoh yang gampang dibayangkan. Mereka dapat menutupi banyak objek sekaligus.
Kalau kamera berada di satu sisi gedung sistem bisa menghindari pekerjaan untuk sejumlah objek di sisi lain selama semuanya memang tertutup.
Objek Kecil Belum Tentu Cocok Dijadikan Occluder
Secara teori hampir semua benda bisa menutupi sesuatu. Tetapi melakukan pengujian terhadap terlalu banyak objek kecil juga mempunyai biaya.
Developer perlu mencari keseimbangan antara pekerjaan yang dihemat dan biaya untuk menentukan apa yang sebenarnya tersembunyi.
Occlusion Culling Bukan Frustum Culling
Dua istilah ini sering muncul berdekatan tetapi tugasnya berbeda. Frustum culling memeriksa apakah objek berada di dalam area pandang kamera.
Occlusion culling masuk ke masalah berikutnya: objek memang berada dalam arah pandangan kamera tetapi apakah ada benda lain yang menutupinya?
Objek Bisa Lolos Frustum Test tapi Tetap Nggak Terlihat
Bayangkan kamera menghadap sebuah gedung. Pohon di belakang gedung masih berada dalam frustum kamera sehingga secara arah ia seharusnya bisa terlihat.
Masalahnya seluruh pohon tertutup gedung. Di sinilah frustum culling saja belum cukup untuk menghilangkan pekerjaan yang nggak diperlukan.
Frustum Biasanya Menjadi Filter yang Lebih Awal
Objek yang bahkan nggak berada di area pandang kamera bisa dieliminasi tanpa perlu melakukan pemeriksaan occlusion yang lebih rumit.
Setelah kandidat berkurang barulah sistem dapat melakukan proses visibility lain sesuai teknik yang dipakai engine.
SABANA88 Melihat Rendering sebagai Serangkaian Filter
Dalam pembahasan SABANA88 game online lebih gampang membayangkan rendering bukan sebagai perintah “gambar semuanya” tetapi sebagai beberapa tahap penyaringan.
Apakah objek aktif? Apakah masuk jangkauan kamera? Apakah terlihat? Material apa yang dipakai? Baru setelah itu objek yang relevan diteruskan menuju proses rendering berikutnya.
Bounding Volume Bikin Pemeriksaan Objek Lebih Ringan
Model 3D dapat terdiri dari ribuan sampai jutaan vertex. Menggunakan seluruh geometri untuk setiap pemeriksaan visibility tentu bisa mahal.
Karena itu engine sering memakai bentuk sederhana yang membungkus objek seperti bounding box atau bounding sphere untuk berbagai jenis pengujian awal.
Bounding Box Nggak Harus Mengikuti Bentuk Objek dengan Sempurna
Tujuannya memang bukan membuat salinan bentuk. Bounding box merupakan pendekatan yang lebih sederhana supaya perhitungan dapat dilakukan lebih cepat.
Konsekuensinya kotak tersebut bisa mencakup ruang kosong di sekitar model asli.
Semakin Longgar Bounding Volume Semakin Kasar Pengecekannya
Bounding volume yang terlalu besar dapat membuat sistem menganggap objek berpotensi terlihat walaupun geometri sebenarnya sudah tertutup.
Sebaliknya representasi yang terlalu detail dapat menambah biaya perhitungan. Lagi-lagi ada trade-off.
Depth Menjawab Mana yang Berada di Depan
Ketika dunia tiga dimensi digambar ke layar dua dimensi sistem perlu mengetahui permukaan mana yang lebih dekat dengan kamera.
Informasi kedalaman menjadi salah satu bagian penting untuk menentukan permukaan mana yang akhirnya terlihat.
Depth Buffer Menyimpan Informasi Kedalaman
Secara sederhana depth buffer menyimpan nilai kedalaman untuk area layar selama proses rendering. Ketika fragmen baru akan digambar nilainya dapat dibandingkan dengan data kedalaman yang sudah ada.
Kalau permukaan baru ternyata berada di belakang permukaan yang lebih dekat ia dapat gagal dalam depth test.
Depth Test dan Occlusion Culling Punya Tujuan yang Berhubungan tapi Beda Tahap
Depth test dapat mencegah pixel tersembunyi menggantikan permukaan yang lebih dekat. Tetapi geometri mungkin sudah telanjur dikirim dan diproses sebelum fragmennya ditolak.
Occlusion culling berusaha menghindari sebagian pekerjaan lebih awal ketika sistem sudah mengetahui objek tersebut nggak akan terlihat.
Menggambar Lalu Membuang Tetap Memerlukan Kerja
Inilah alasan kenapa sekadar mengandalkan depth buffer nggak selalu sama dengan menghilangkan pekerjaan objek tersembunyi sejak awal.
Semakin kompleks objek yang akhirnya tertutup semakin besar potensi pekerjaan yang sebenarnya bisa dihindari.
Overdraw Bisa Terjadi ketika Banyak Permukaan Menumpuk
Satu area layar dapat menerima beberapa lapisan permukaan selama proses rendering meskipun akhirnya cuma lapisan paling depan yang terlihat.
Fenomena ini sering dibahas sebagai overdraw dan dapat menjadi salah satu sumber beban terutama ketika material atau efek pixel-nya mahal.
Urutan Render Bisa Ikut Berpengaruh
Pada objek opaque menggambar permukaan yang dekat lebih awal dapat membantu depth test menolak permukaan yang lebih jauh sebelum pekerjaan fragment tertentu menjadi lebih besar.
Namun engine mempunyai strategi masing-masing dan transparansi membawa aturan yang berbeda.
Transparansi Bikin Masalah Visibility Lebih Rumit
Tembok solid gampang dianggap menutup objek di belakangnya. Kaca daun berlubang efek partikel dan material transparan nggak sesederhana itu.
Objek di belakang mungkin masih perlu terlihat sehingga sistem nggak bisa memperlakukannya seperti permukaan opaque penuh.
Occluder yang Bagus Biasanya Punya Bentuk yang Jelas
Bangunan besar dengan permukaan solid lebih mudah memberikan keuntungan daripada pagar tipis dengan banyak lubang.
Karena itu pemilihan occluder juga merupakan bagian dari optimasi scene bukan sekadar mengaktifkan satu tombol pada engine.
Indoor Scene Punya Kasus yang Sangat Menarik
Bayangkan karakter berada di dalam sebuah kamar. Ada beberapa ruangan lain di balik dinding dan pintu.
Kalau dinding benar-benar menutup pandangan banyak objek dari ruangan sebelah nggak perlu ikut menjadi beban visual pada frame tersebut.
Pintu Terbuka Bisa Mengubah Visibility Seketika
Saat pintu tertutup isi ruangan berikutnya mungkin nggak terlihat. Begitu pintu terbuka kamera mendapatkan jalur pandang baru.
Sistem visibility harus mampu menyesuaikan kondisi tersebut tanpa membuat objek tiba-tiba hilang ketika seharusnya terlihat.
Portal System Bisa Dipakai pada Struktur Ruangan Tertentu
Beberapa teknik membagi dunia menjadi area atau cell yang dihubungkan oleh portal seperti pintu dan lorong.
Dari posisi kamera sistem dapat menentukan area mana yang berpotensi terlihat melalui portal yang sedang terbuka.
Outdoor Scene Lebih Sulit karena Pandangannya Luas
Di padang terbuka kamera bisa melihat sangat jauh dan objek besar nggak selalu tersedia untuk menutup bagian dunia lainnya.
Dalam kondisi seperti ini occlusion culling tetap dapat membantu tetapi keuntungan dan teknik yang cocok bisa berbeda dari lingkungan indoor.
Nama SABANA88 Cocok untuk Membayangkan Kasus Outdoor
Kalau memakai nama SABANA88 sebagai gambaran visual kita bisa membayangkan scene padang luas dengan batu besar bukit pohon dan bangunan tersebar. Ini cuma ilustrasi teknis dan bukan klaim bahwa SABANA88 menggunakan scene atau teknologi tertentu.
Di area seperti itu bukit atau struktur besar dapat menutup kelompok objek di belakangnya sementara objek yang berdiri di area terbuka tetap terlihat dari jarak jauh.
Terrain Bisa Menutupi Banyak Objek
Bukit merupakan contoh occluder alami. Sebuah desa virtual di balik bukit mungkin berada dalam arah kamera tetapi sama sekali nggak terlihat dari posisi pemain.
Kalau sistem dapat mengenali kondisi tersebut banyak pekerjaan rendering berpotensi ditunda sampai kamera mencapai posisi yang memungkinkan desa terlihat.
Kamera Bergerak Membuat Daftar Visible Terus Berubah
Begitu pemain bergerak ke atas bukit sebagian atap mulai terlihat. Maju sedikit lagi lebih banyak bangunan masuk pandangan.
Artinya hasil occlusion test nggak bisa dianggap benar selamanya.
Dynamic Object Menambah Tantangan
Objek statis relatif mudah dianalisis karena posisinya nggak berubah. Kendaraan karakter pintu dan benda bergerak bisa mengubah hubungan visibility selama game berjalan.
Teknik yang dipakai perlu mempertimbangkan apakah occluder dan objek yang diuji bersifat statis atau dinamis.
Precomputed Visibility Bisa Membantu Scene Statis
Untuk lingkungan yang sebagian besar nggak berubah engine tertentu dapat melakukan sebagian perhitungan sebelumnya.
Data tersebut kemudian dipakai saat runtime untuk mempercepat keputusan mengenai kelompok objek yang mungkin terlihat dari area tertentu.
Precompute Menukar Waktu Build dengan Pekerjaan Runtime
Daripada menghitung semuanya ketika pemain sedang bermain sebagian informasi disiapkan saat proses build atau baking.
Keuntungannya runtime bisa lebih ringan tetapi data hasil baking membutuhkan penyimpanan dan dapat menjadi kurang fleksibel untuk dunia yang sangat dinamis.
Runtime Occlusion Lebih Fleksibel
Pendekatan runtime melakukan pemeriksaan ketika game sedang berjalan sehingga lebih mudah menyesuaikan perubahan scene.
Konsekuensinya ada biaya komputasi yang perlu dibayar pada saat game berjalan.
Occlusion Query Bisa Memanfaatkan GPU
Pada teknik tertentu GPU dapat membantu memberi informasi apakah sebuah objek atau bounding volume menghasilkan sample yang terlihat setelah mempertimbangkan depth.
Hasil query kemudian dipakai untuk menentukan apakah objek perlu dirender pada kesempatan berikutnya.
Jawaban dari GPU Nggak Selalu Datang Gratis
CPU dan GPU bekerja secara paralel. Kalau CPU memaksa menunggu GPU menyelesaikan query saat itu juga pipeline dapat mengalami stall.
Karena itu teknik occlusion query perlu dirancang supaya keuntungan culling nggak habis karena sinkronisasi.
Latency Satu Frame Kadang Lebih Murah daripada Menunggu
Sistem dapat memakai hasil visibility dari frame sebelumnya sebagai perkiraan untuk frame berikutnya daripada membuat CPU berhenti menunggu GPU.
Pendekatan seperti ini punya risiko objek baru terlihat sedikit terlambat sehingga implementasinya membutuhkan strategi konservatif.
Conservative Culling Lebih Aman daripada Terlalu Agresif
Kalau sistem salah dan tetap menggambar objek yang sebenarnya tersembunyi kerugiannya biasanya berupa performa.
Kalau sistem salah menghilangkan objek yang seharusnya terlihat pemain dapat melihat objek muncul terlambat atau menghilang secara aneh. Karena itu false occlusion biasanya lebih mengganggu secara visual.
Bounding Volume Bisa Diperbesar Sedikit untuk Mengurangi Pop-In
Salah satu pendekatan konservatif adalah memberikan toleransi tertentu sehingga objek dianggap berpotensi terlihat sedikit lebih awal.
Hasilnya mungkin ada pekerjaan ekstra tetapi transisi visibility menjadi lebih aman.
Pop-In Jadi Tanda yang Gampang Terlihat
Kalau culling terlambat objek dapat mendadak muncul ketika kamera bergerak. Efek ini sering disebut pop-in.
Pop-in juga bisa berasal dari LOD atau streaming sehingga developer perlu mencari sumber sebenarnya sebelum menyalahkan occlusion system.
Occlusion Culling dan LOD Punya Pekerjaan Berbeda
LOD mengurangi tingkat detail objek yang masih perlu terlihat. Occlusion culling dapat melewati objek ketika ia sama sekali nggak terlihat.
Satu objek jauh mungkin memakai model LOD rendah. Kalau kemudian tertutup bukit sepenuhnya objek tersebut bahkan mungkin nggak perlu dirender.
Distance Culling Menambah Filter Lain
Objek kecil yang berada sangat jauh mungkin dihentikan berdasarkan jarak meskipun nggak tertutup apa pun.
Jadi sebuah engine dapat menggabungkan frustum distance LOD dan occlusion dengan fungsi yang berbeda-beda.
Nggak Ada Satu Teknik yang Menyelesaikan Semua Beban Render
Occlusion culling bukan tombol ajaib yang otomatis membuat setiap game ringan. Kalau bottleneck justru berasal dari physics script atau audio pengurangan draw object mungkin nggak menghasilkan perubahan sebesar yang diharapkan.
Optimasi selalu lebih masuk akal kalau dimulai dari pengukuran.
Profiler Menunjukkan Apakah Rendering Memang Jadi Masalah
Developer dapat melihat CPU frame time GPU frame time jumlah draw call triangle yang diproses dan berbagai metrik lain sesuai engine.
Dari sana baru kelihatan apakah visibility optimization layak menjadi prioritas.
Frame Debugger Bisa Menunjukkan Apa yang Benar-benar Digambar
Kadang developer merasa sebuah objek pasti sudah di-cull tetapi ternyata masih masuk ke render pass.
Frame debugger membantu membedah satu frame dan melihat urutan draw yang benar-benar terjadi.
Visualisasi Occlusion Mempermudah Debug
Beberapa tool dapat memberi tanda objek mana yang dianggap visible dan mana yang sedang di-cull.
Developer kemudian bisa bergerak mengelilingi scene sambil melihat apakah keputusan sistem sesuai dengan apa yang seharusnya tampak dari kamera.
Terlalu Banyak Occluder Bisa Malah Menambah Kerja
Kalau setiap kursi batu kecil dan pot bunga dijadikan occluder sistem mempunyai lebih banyak kandidat yang harus diproses.
Pemilihan objek besar dan efektif biasanya lebih masuk akal daripada mencoba memakai semua geometri.
Occludee Juga Bisa Dikelompokkan
Daripada memeriksa seratus objek kecil satu per satu sistem tertentu dapat menguji bounding volume kelompok terlebih dahulu.
Kalau seluruh kelompok tertutup semua anggota di dalamnya dapat dilewati tanpa pemeriksaan detail tambahan.
Hierarchical Culling Memakai Ide dari Besar ke Kecil
Dunia dapat disusun dalam struktur hierarki. Sistem memeriksa node besar terlebih dahulu lalu masuk ke anak node hanya kalau area tersebut masih berpotensi terlihat.
Pendekatan seperti ini mengurangi kebutuhan memeriksa setiap objek secara individual dalam semua kondisi.
BVH Bisa Membantu Mengelompokkan Ruang
Bounding Volume Hierarchy merupakan struktur yang mengelompokkan objek menggunakan bounding volume bertingkat.
Konsep hierarki semacam ini digunakan dalam berbagai masalah grafis dan spatial query karena memungkinkan kelompok besar dieliminasi lebih awal.
Octree Menawarkan Cara Lain Membagi Ruang
Octree membagi ruang tiga dimensi menjadi bagian yang lebih kecil secara hierarkis. Objek kemudian dapat dikelompokkan berdasarkan wilayah tempat mereka berada.
Nggak semua game membutuhkan octree tetapi konsep spatial partitioning membantu memahami bagaimana ribuan objek bisa dikelola tanpa selalu diperiksa satu per satu.
Static Batching Tetap Berbeda dari Culling
Batching berusaha mengurangi overhead pengiriman banyak objek ke proses render. Culling berusaha menentukan objek mana yang bahkan nggak perlu ikut.
Keduanya dapat saling membantu tetapi batching yang terlalu besar kadang membuat granularity culling berkurang karena beberapa objek sudah digabung menjadi satu unit.
Ukuran Batch Punya Trade-Off
Menggabungkan seluruh lingkungan menjadi satu mesh raksasa mungkin mengurangi beberapa draw call tetapi kalau hanya sudut kecil mesh yang terlihat seluruh unit besar tersebut bisa tetap dianggap perlu diproses.
Karena itu pembagian scene perlu mempertimbangkan pola visibility juga.
Instancing Punya Hubungan yang Mirip
GPU instancing membantu menggambar banyak objek dengan mesh dan material serupa secara efisien. Tetapi sistem tetap perlu menentukan instance mana yang relevan untuk frame.
Culling dan instancing menyelesaikan bagian masalah yang berbeda.
Shadow Caster Bisa Tetap Relevan walaupun Objek Nggak Terlihat Langsung
Ini salah satu detail yang bikin rendering lebih rumit. Sebuah objek mungkin berada di luar pandangan utama tetapi bayangannya jatuh ke area yang terlihat.
Karena itu visibility pada camera pass nggak selalu berarti objek dapat dihilangkan dari seluruh render pass lainnya.
Setiap Render Pass Bisa Punya Kebutuhan Sendiri
Main camera shadow reflection dan efek tertentu dapat melihat dunia dari sudut atau kebutuhan berbeda.
Sistem culling perlu mempertimbangkan pass mana yang sedang dibuat bukan hanya apa yang terlihat langsung oleh kamera utama.
Reflection Bisa Melihat Objek yang Kamera Utama Nggak Lihat
Bayangkan objek berada di samping kamera tetapi terlihat melalui cermin. Dari frustum kamera utama mungkin objek tersebut nggak terlihat secara langsung.
Reflection pass tetap bisa membutuhkan objek itu karena kamera virtualnya mempunyai sudut pandang berbeda.
VR Membuat Visibility Punya Dua Sudut Pandang
Pada virtual reality terdapat pandangan untuk mata kiri dan kanan. Area yang terlihat pada keduanya sangat mirip tetapi nggak benar-benar identik.
Optimasi perlu memastikan culling nggak menghasilkan perbedaan visual yang mengganggu antara kedua mata.
Mobile Membuat Setiap Penghematan Render Lebih Menarik
Perangkat mobile mempunyai batas daya panas dan kemampuan GPU yang beragam. Menghindari pekerjaan yang nggak menghasilkan pixel terlihat dapat membantu menjaga beban lebih masuk akal.
Tetapi algoritma culling itu sendiri juga menggunakan sumber daya sehingga tetap harus diuji pada perangkat target.
Penghematan GPU Bisa Ikut Membantu Konsumsi Daya
GPU yang bekerja berat terus-menerus membutuhkan energi lebih besar dan menghasilkan panas. Pada perangkat tertentu suhu tinggi dapat memicu penurunan performa.
Optimasi rendering yang efektif bisa ikut membantu menjaga beban tetapi hasilnya tetap bergantung pada keseluruhan aplikasi.
Occlusion Nggak Mengubah Data Game
Objek yang di-cull bukan berarti dihapus dari dunia. Ia masih dapat mempunyai posisi state atau logika lain sesuai desain game.
Yang dilewati terutama pekerjaan visual yang nggak diperlukan untuk pandangan tertentu.
AI atau Physics Bisa Tetap Berjalan pada Objek yang Nggak Dirender
Musuh virtual di balik dinding mungkin nggak perlu digambar tetapi logikanya bisa tetap aktif. Begitu juga objek physics yang masih memengaruhi dunia.
Rendering visibility dan simulation state adalah konsep berbeda sehingga jangan otomatis menghubungkan culling dengan penghentian seluruh object logic.
Simulation Culling Adalah Optimasi yang Berbeda Lagi
Developer memang dapat mengurangi update AI animation atau physics untuk objek jauh tetapi itu keputusan sistem lain dengan konsekuensi berbeda.
Occlusion culling sendiri fokus pada visibility dan rendering.
Testing Perlu Mencoba Kamera dari Posisi Aneh
Bug visibility sering nggak muncul dari jalur kamera normal. Kamera yang berada sangat dekat dengan dinding di sudut sempit atau bergerak cepat bisa menghasilkan kondisi yang berbeda.
Karena itu pengujian perlu menjelajahi scene dari berbagai posisi.
Kamera Cepat Bisa Membuka Area Baru dalam Satu Frame
Kalau kamera berputar sangat cepat objek yang sebelumnya tertutup dapat langsung menjadi pusat pandangan.
Sistem perlu cukup responsif supaya objek nggak terlambat muncul hanya karena informasi visibility sebelumnya sudah basi.
Teleport Kamera Jadi Kasus Ekstrem
Perpindahan kamera instan membuat asumsi dari frame sebelumnya hampir nggak berguna. Area yang tadinya jauh bisa mendadak menjadi area utama.
Engine dapat melakukan refresh visibility lebih agresif pada kejadian seperti ini.
Occlusion Data Juga Bisa Menjadi Basi setelah Scene Berubah
Kalau developer menggunakan data yang sudah dibake lalu bangunan besar dapat dihancurkan saat runtime hubungan visibility bisa berubah total.
Desain sistem perlu menyesuaikan seberapa dinamis dunia yang sebenarnya ingin dibuat.
Optimasi yang Bagus Selalu Punya Konteks
Scene kota padat scene koridor dan padang terbuka mempunyai pola visibility yang berbeda. Teknik yang memberi keuntungan besar pada satu level belum tentu sama efektifnya pada level lain.
Karena itu benchmark pada scene nyata lebih berguna daripada hanya mengandalkan teori.
Bandingkan Frame Time sebelum dan Sesudah
Developer dapat merekam performa dengan occlusion culling aktif lalu membandingkannya dengan kondisi tanpa optimasi tersebut.
Kalau jumlah objek yang dihemat besar tetapi frame time hampir nggak berubah mungkin bottleneck berada di tempat lain.
Draw Call Bukan Satu-satunya Angka yang Perlu Dilihat
Triangle count shader complexity overdraw CPU submission GPU time dan memory bandwidth juga dapat memengaruhi performa.
Mengejar satu angka sampai sekecil mungkin tanpa melihat keseluruhan frame bisa menghasilkan optimasi yang salah sasaran.
SABANA88 Occlusion Culling Intinya Memilih Apa yang Layak Digambar
Dari SABANA88 Occlusion Culling kelihatan bahwa optimasi grafis bukan selalu soal menurunkan kualitas gambar. Kadang langkah paling masuk akal justru nggak mengerjakan sesuatu yang hasilnya memang nggak mungkin terlihat.
Objek tetap berada di dunia game tetapi kamera gedung dinding bukit dan struktur scene menentukan apakah objek tersebut relevan untuk frame sekarang.
Yang Nggak Terlihat Nggak Selalu Perlu Ikut Antre untuk Digambar
Itulah gagasan utama Occlusion Culling. Frustum lebih dulu membuang objek yang berada di luar pandangan lalu sistem visibility dapat mencari objek yang masih berada di arah kamera tetapi tertutup oleh sesuatu di depannya.
Kalau diterapkan pada kondisi yang tepat hasilnya bisa mengurangi pekerjaan render tanpa harus menghilangkan detail yang benar-benar terlihat pemain. Dan justru di situ sisi menarik teknologinya: performa nggak selalu ditingkatkan dengan menggambar lebih cepat tetapi kadang dengan mengetahui secara cerdas apa yang nggak perlu digambar sejak awal.