Voxels telah berfungsi sebagai sistem pencahayaan di dunia Roblox selama empat tahun terakhir. Tetapi cepat atau lambat, waktu untuk perubahan datang dalam segala hal. Itulah mengapa para pengembang bertanya-tanya apa yang harus dilakukan selanjutnya.
Pencahayaan memang rumit, jadi ada banyak faktor yang harus diperhatikan saat memilih teknologi baru. Untuk memfasilitasi pengambilan keputusan, Roblox telah membuat prototipe dua sistem masa depan: yang disebut voxel dan peta bayangan. Untuk memahami batasan keduanya, pertama-tama penting untuk memahami cara kerjanya.
Catatan: Tangkapan layar dalam artikel disusun sedemikian rupa sehingga voxel selalu ditampilkan di sebelah kiri, dan peta bayangan di sebelah kanan.
Implementasi: voxels
Meskipun sistem khusus ini telah bekerja dalam gim untuk waktu yang lama, opsi yang dipertimbangkan di sini telah mengalami banyak peningkatan.
Data dunia diubah menjadi satu set kisi voxel: setiap kisi berpusat di sekitar karakter dan dapat berupa ukuran voxel dari 1 hingga 16 (total 5 kisi). Setiap voxel berisi informasi hunian mulai dari 0 hingga 100%. Data pencahayaan untuk setiap voxel di setiap mesh kemudian dihitung berdasarkan informasi kepenuhan dan sumber / arah cahaya ini. Semua hal di atas terjadi pada GPU karena yang sentral tidak cukup cepat untuk memperbarui begitu banyak voxel dengan kepadatan tinggi.
Sistem menyimpan semua data di voxel, khususnya - untuk setiap voxel yang tersedia ada data tentang:
- Fullness (beberapa nilai yang menjelaskan seberapa penuh setiap voxel);
- Skylight (seberapa banyak langit terlihat dari voxel);
- Bayangan matahari (seberapa banyak matahari yang ditutupi oleh voxel);
- Benda cahaya / warna kerucut (perkiraan warna / kerucut dari efek sumber cahaya lokal pada voxel).
Informasi ini nantinya digunakan untuk menghitung warna setiap piksel pada resolusi tertentu. Resolusi layar dan voxel dapat disesuaikan satu sama lain. Bagian dari voxel mesh dapat diperbarui bingkai demi bingkai saat lampu / benda bergerak.
Implementasi: peta bayangan
Metode ini menggunakan rasterisasi untuk menghitung sebagian besar efek bayangan. Itu dilakukan dalam tiga tahap. Pertama, untuk setiap kasta bayangan, kami memperbarui peta bayangan, meluncurkan kasta berbagai sinar dari sumber cahaya ke dalam pemandangan dan mengingat hasil persimpangan. Kami kemudian membangun struktur percepatan spasial di mana kami menyematkan setiap objek cahaya tampak, yang pada dasarnya adalah kisi voxel frustokonis (juga dikenal sebagai kisi froxel).
Grid tersebut menutupi seluruh bagian dunia game seperti yang terlihat oleh kamera. Di setiap froxel, kami menuliskan daftar semua objek cahaya yang memotongnya. Terakhir, untuk menghitung pengaruh semua sumber cahaya, saat merender pemandangan, untuk setiap piksel kami mencari froxel yang berisi piksel ini, mengulangi semua sumber cahaya, dan untuk setiap cahaya kami menghitung pengaruhnya secara terpisah menggunakan peta bayangan yang dibangun pada tahap pertama.
Sistem menyimpan data dalam dua struktur:
- Shadow atlas (semua peta bayangan cahaya tampak dikemas dalam satu tekstur besar);
- Jala cahaya (jaring froxel yang secara efektif mengubah titik di kamera menjadi daftar lampu).
Warna setiap piksel dihitung secara dinamis dan tidak disimpan secara eksplisit. Bagian atlas bayangan dapat diperbarui bingkai demi bingkai saat lampu / benda bergerak.
Kinerja: voxels
Teknik voxel cocok untuk penskalaan: untuk mengurangi kualitas keluaran, kita dapat mengurangi jumlah kisi voxel atau memperbarui lebih sedikit voxel per frame (yang mengarah ke "penundaan cahaya" - pembaruan yang lebih lambat dari paparan cahaya objek dibandingkan dengan memperbarui objek itu sendiri).
Voxels memiliki tiga karakteristik kompleksitas: kompleksitas geometris, kompleksitas cahaya, dan jumlah piksel. Kompleksitas geometris hanya mempengaruhi biaya voxelization, jadi menambahkan lebih banyak objek tidak akan menyebabkan penundaan. Kompleksitas cahaya hanya mempengaruhi biaya komputasi, yang tidak bergantung pada kompleksitas geometris atau jumlah piksel. Terakhir, warna piksel akhir dihitung dari jumlah voxel / lampu / objek, sehingga kami dapat menskalakan resolusi tanpa mempengaruhi kualitas pencahayaan.
Performa Voxel dihitung sebagai O (G) + O (L) + O (P), di mana G adalah jumlah segitiga (kompleksitas geometris), L adalah jumlah lampu, P adalah jumlah piksel.
Sayangnya, kinerja voxel puncak tidak optimal karena jumlah voxel berskala karena N3 dan GPU tidak ideal untuk metode penyegaran yang diperlukan dan tidak dapat mempertahankan manajemen kinerja yang baik. Dengan penelitian yang cukup tentang komputasi GPU, kerugian kinerja dapat dikompensasikan, tetapi biaya dasar dapat tetap cukup tinggi saat ini.
Kinerja: kartu bayangan
Kartu bayangan lebih ramah GPU karena dirancang berdasarkan rasterisasi. Biaya memperbarui atlas bayangan dapat dikurangi sebagian dengan menyimpan / menunda pembaruan (yang secara logis mengarah ke latensi tambahan). Mengoptimalkan representasi geometri (termasuk tingkat detail mesh) juga mengurangi biaya metode.
Namun demikian, memperbarui bayangan dalam pemandangan yang kompleks masih mahal, karena biayanya bergantung pada jumlah detail geometris dan jumlah lampu yang memancarkan bayangan. Di dalam gedung, jika ada lampu yang bergerak, seluruh bangunan perlu dirender ulang setiap bingkai untuk memperbarui informasi bayangan untuk cahaya itu. Banyak pancaran cahaya bergerak di dalam gedung menyebabkan penurunan kinerja: kami tidak dapat memperbarui semua lampu dalam bingkai sekaligus, yang mengarah ke artefak visual.
Selain itu, metode ini tidak memungkinkan pemisahan parameter resolusi dari jumlah cahaya: untuk setiap piksel, kita harus menghitung ulang pengaruh semua sumber cahaya yang menutupinya. Langkah ini juga tidak dapat disimpan dalam cache, yang menyebabkan masalah kinerja pada resolusi tinggi dalam pemandangan yang sangat terang: 20 lampu yang tumpang tindih dalam ruangan 4K mungkin memerlukan perkiraan cahaya 160 juta.
Performa Shadowmap dihitung sebagai O (GL) + O (LP), di mana G adalah jumlah segitiga (kompleksitas geometri), L adalah jumlah lampu, P adalah jumlah piksel.
Evaluasi kinerja
Untuk kejelasan, kedua metode digunakan untuk level game yang dipilih secara khusus. Perhatikan bahwa ini adalah penerapan tingkat yang sudah ada sebelumnya dan tidak dirancang khusus untuk evaluasi kinerja.
Paris (bayangan matahari, sangat sedikit sumber cahaya non-bayangan)
- Voxels: pembaruan bayangan - 6ms, rendering adegan - 1.5ms;
- Peta bayangan: pembaruan bayangan - 1 md, rendering adegan - 2,4 md;
- Biaya komputasi bayangan voxel dasar lebih tinggi karena lebih sulit untuk diproses oleh GPU.
Gua (banyak sumber yang menghasilkan bayangan)
- Voxels: pembaruan bayangan - 7 md, rendering adegan - 0,9 md;
- Peta bayangan: pembaruan bayangan - 10 md, rendering adegan - 2,1 md;
- Karena banyaknya geometri dan lampu bergerak, memperbarui peta bayangan itu mahal.
Barat (banyak sumber bayangan)
- Voxels: pembaruan bayangan - 8ms, rendering adegan - 1ms;
- Peta bayangan: pembaruan bayangan - 15 md, rendering adegan - 2,5 md;
- Dengan lampu bergerak dan banyak segitiga, memperbarui peta bayangan itu mahal.
1000 sumber cahaya tanpa bayangan
- Voxels: penyegaran ringan - 20ms, rendering adegan - 0,5ms;
- Peta bayangan: pembaruan cahaya - 0,5ms, rendering adegan - 5ms;
- Jumlah kumulatif cahaya dan voxel yang tumpang tindih dalam hal ini memperlambat pembaruan voxel. Selain itu, Anda dapat melihat bahwa dalam tahap dekat, pendekatan untuk "satu cahaya di setiap voxel" tidak dilakukan.
Kinerja: kesimpulan
Peta bayangan diskalakan dengan baik untuk beban kerja, tetapi ada dua hal yang perlu dipertimbangkan:
- Biaya per piksel meningkat seiring dengan peningkatan resolusi, menjadikannya solusi praktis hanya pada resolusi sedang (1080p); melampaui 1080p membutuhkan GPU yang sangat bagus.
- Biaya rendering bayangan tumbuh sangat cepat dalam kasus geometri kompleks dari banyak lampu dinamis. Ini dapat dikompensasikan dengan pemusnahan yang lebih baik, tetapi pada tahap ini tetap menjadi masalah mendasar.
Sebaliknya, pada saat yang sama, kinerja voxel tidak terlalu bergantung pada konten level, tetapi memiliki biaya dasar yang jauh lebih tinggi. Ini dapat dikompensasikan dengan algoritma GPU yang ditingkatkan dan pengurangan voxel.
Persyaratan memori
Persyaratan memori untuk shadow map dan voxel bergantung pada kualitas yang dibutuhkan.
Dalam kasus voxel, beberapa tekstur disimpan dalam memori untuk setiap tahapan, sehingga ukuran totalnya bergantung pada jumlah tahapan dan ukurannya masing-masing. Saat ini, 4 stage (dengan ukuran voxel 1..8) dengan masing-masing 128x64x128 voxel digunakan, yang menambahkan hingga 128 MB VRAM bekas. Dimungkinkan untuk membuat 2 tahap lagi (0,5 voxel dan 16 voxel) atau mengkonfigurasi ulang yang sudah ada, yang akan meningkatkan nilai ini menjadi 192 MB. Sebaliknya, Anda dapat mengurangi jumlah kaskade (menghapus beberapa kaskade dekat) dalam sistem dengan memori terbatas, dan kemudian dampak memori minimum bisa sekitar 64 MB dengan dua kaskade (4..8) dan sekitar 96 MB dengan tiga kaskade (4 .. enambelas).
Dalam kasus peta bayangan, peta bayangan atlas dan kisi froxel digunakan. Yang terakhir sebagian tergantung pada resolusi. Ukuran atlas bayangan, pada gilirannya, dapat diperkecil jika Anda perlu mengurangi kualitas bayangan untuk meningkatkan kinerja / memori. Sistem saat ini menggunakan memori video 73 MB, yang sebagian besar (64 MB) ditempati oleh shadow atlas. Anda dapat menguranginya dan dengan demikian membatasi jumlah cahaya yang digelapkan atau kualitas bayangan. Anda juga dapat mempertimbangkan beberapa opsi untuk peta bayangan yang memerlukan lebih banyak memori untuk mendukung tembus pandang, yang berarti akan menggunakan lebih banyak ruang (hingga 130 MB atau lebih). Dampak minimum pada memori sistem mungkin dicapai dengan mengurangi ukuran atlas bayangan dan menggunakan versi yang lebih sederhana, yang akan memakan waktu sekitar 25 MB.
Sebagai perbandingan, sistem pencahayaan saat ini memiliki dua mode: kualitas tinggi (PC) dan kualitas rendah (seluler). Versi PC membutuhkan ~ 40 MB (24 MB RAM, 16 MB VRAM); seluler - ~ 11 MB (RAM 6 MB, VRAM 5 MB).
Faktanya, kedua metode cukup dekat dalam hal dampak memori, tetapi peta bayangan agak lebih skalabel untuk rentang cahaya / bayangan yang sama.
Kompatibilitas seluler
Penonton game menjadi semakin mobile, yang berarti bahwa saat membandingkan implementasi yang dipilih, perangkat game yang berbeda juga harus diperhitungkan. Pada perangkat kelas atas, harus ada kemampuan API yang cukup untuk mengimplementasikan kedua metode, tetapi tentu saja mereka mungkin tidak sepraktis dalam hal memori dan kinerja.
Sistem pencahayaan voxel yang ada sangat bagus untuk perangkat seluler: sistem ini mendukung banyak fungsi pencahayaan yang kompleks (bayangan cahaya, langit-langit, dll.) Dan melakukan sebagian besar kalkulasi kompleks pada CPU, sehingga memberikan persyaratan minimal untuk kinerja GPU dan rangkaian fitur ... Karena sistem ini masih perlu didukung untuk perangkat seluler dan PC berbiaya rendah di masa mendatang, beberapa opsi telah muncul untuk mendukung sejumlah besar perangkat:
- Simpan sistem yang ada dalam bentuk seluler, yang baru hanya akan menjadi PC / konsol. Ini berarti bahwa sebagian besar basis pengguna tidak akan memiliki akses ke sistem baru.
- ( , ), /.
- low-end , , .
Dalam semua kasus ini, pertanyaan tentang kompatibilitas konten perlu dijawab, karena salah satu janji utama platform ini adalah "mengunduh konten sekali dan menjalankannya di mana saja". Kami masih perlu mengerjakan ini. Pada awalnya tampaknya solusi voxel baru lebih baik dalam arti memberikan konsistensi kualitas / perilaku dari sistem lama ke sistem baru, sementara peta bayangan mewakili transisi yang lebih mendadak ke kualitas lain, tetapi pada saat yang sama mereka lebih mungkin untuk menyesuaikan dengan kemampuan terbatas pada perangkat seluler.
Kualitas: sumber cahaya
Solusi peta bayangan memberikan informasi yang dapat diandalkan dalam hal simulasi sumber cahaya: pada tangkapan layar di bawah ini dengan 1000 lampu untuk peta bayangan, Anda dapat melihat sorotan spekuler yang direproduksi secara sempurna - dimodelkan dengan BRDF, yang memberi kita pantulan cahaya yang diinginkan.
Larutan voxel pada dasarnya lebih buruk karena mendekati efek cahaya pada setiap voxel seolah-olah berasal dari satu sumber saja. Dari sini, Anda dapat melihat bahwa kualitas pantulan spekuler memburuk:
Jadi, dalam kasus voxel di area dengan sorotan spekuler, warna bergabung dalam rasio 1: 1, menciptakan cahaya kuning, bukan hijau dan merah, meskipun tidak ada cahaya kuning di pemandangan. Sebaliknya, solusi peta bayangan secara akurat mensimulasikan kombinasi warna.
Dalam beberapa kasus, kami mendapatkan hasil yang sangat tidak meyakinkan sama sekali, meskipun dapat ditingkatkan dalam perspektif:
Dalam contoh di atas, Anda dapat melihat sorotan cermin yang melengkung, memanjang, terdistorsi, dan dalam beberapa voxel di bawah salah satu objek tidak ada informasi cahaya sama sekali. Tangkapan layar yang sama untuk peta bayangan memberikan hasil yang jauh lebih baik.
Kualitas: bayangan
Kualitas yang menentukan dari peta bayangan adalah akurasi, sedangkan bayangan voxel lembut. Peta bayangan memberikan bayangan yang cukup tajam dengan detail sesedikit mungkin, namun cukup tepat untuk menciptakan bayangan yang meyakinkan untuk karakter tersebut. Di sisi lain, algoritme voxel sangat bagus untuk menciptakan bayangan yang sangat lembut, namun, bayangan dari detail kecil tidak terekam sama sekali atau memiliki bentuk yang tidak beraturan.
Karena alasan ini, varian peta bayangan saat ini digunakan untuk membuat bayangan karakter - namun, ini lebih merupakan penopang, yang hanya diterapkan pada bayangan karakter matahari yang memancarkan bayangan. Sumber cahaya lain tidak diperhitungkan.
Juga, teknik kunci untuk mempercepat voxel adalah dengan menggunakan kaskade. Namun, ini berarti bahwa data kepenuhan menjadi lebih kasar karena jarak dari titik dalam pemandangan menarik bagi kami. Dalam hal ini, kualitas bayangan juga menurun seiring dengan bertambahnya jarak antara sumber dan penerima bayangan:
Pada tangkapan layar di atas, ukuran voxel terkecil akan cukup untuk membuat bayangan berkualitas tinggi dari jembatan, tetapi jembatan terlalu jauh dari permukaan air, sehingga vokselnya menjadi terlalu kasar bahkan saat asalkan voxel di dekat permukaan air lumayan bagus.
Kualitas: langit-langit
Fungsi penting dalam pipa voxel adalah perhitungan koefisien skylight, yang menentukan seberapa banyak langit terlihat dari voxel saat ini. Ini digunakan untuk memadukan pencahayaan dalam dan luar ruangan dan sangat efektif untuk meningkatkan kualitasnya. Pada tangkapan layar di bawah, bagian luar rumah harus jauh lebih terang daripada bagian dalam, bahkan di area yang teduh. Solusi voxel menghitung dan mereproduksi koefisien ini dengan baik, tetapi dalam kasus peta bayangan, tidak ada, oleh karena itu tidak ada kemungkinan untuk membuat bayangan menjadi redup.
Kualitas: presisi geometris
Perlu diperhatikan perbedaan mendasar dalam representasi geometri antara voxel dan peta bayangan.
Voxels berasumsi bahwa semua objek yang didukung oleh mesin ringan dapat "di-voxel" - artinya, untuk setiap voxel di dunia game, ada cara cepat untuk menghitung jumlah persimpangan antara objek dan voxel. Ini berfungsi dengan baik untuk bentuk primitif, tetapi objek kompleks seperti CSG dan MeshParts sudah menjadi masalah serius. Sekarang, dekomposisi kasar dan serangkaian peretasan lain untuk voxelization yang efektif membantu sebagian dalam hal ini, tetapi ini sering menyebabkan artefak yang terlihat. Pada saat yang sama, peta bayangan menggunakan representasi poligonal yang sama dengan yang terlibat dalam rendering, sehingga peta bayangan dapat dengan sempurna mewakili bentuk semua objek:
Kualitas: kebocoran cahaya
Meskipun bentuk bayangan sangat penting, mungkin yang lebih penting adalah penanganan piksel yang tidak terlihat dengan benar. Ketika perkiraan yang berbeda melanggar ini, ada yang disebut kebocoran cahaya - garis-garis yang terlihat, yang menyebabkan sebagian besar masalah di lingkungan kontras tinggi - misalnya, di dalam gedung dengan sinar matahari luar yang cerah. Berikut adalah contoh kebocoran cahaya:
Ini adalah bagian lantai yang tipis dan bercahaya tepat di dinding. Peta bayangan menjaga oklusi cahaya jauh lebih baik dan mengatasi masalah ini.
Ada beberapa sumber kebocoran untuk voxel. Beberapa di antaranya dapat dikurangi sambil mempertahankan kepenuhan anisotropik: misalnya, sekarang memori menyimpan 3 nilai per voxel, yang menunjukkan "berapa banyak materi dalam proyeksi voxel di sepanjang sumbu" untuk ketiga sumbu. Sayangnya, meskipun ini membantu detail halus menghasilkan bayangan terlepas dari ketebalannya, ini tidak akan memperbaiki semua kebocoran. Satu-satunya cara untuk menjamin pemblokiran cahaya sepenuhnya dalam aspek ini adalah membuat bagian tersebut dua kali lebih tebal dari voxel. Selain itu, kebocoran tumbuh dengan ukuran voxel, yang berarti kebocoran menjadi lebih terlihat pada tingkat kualitas yang lebih rendah dan / atau semakin jauh.
Peta bayangan tidak sepenuhnya disegel, tetapi kebocoran di dalamnya jauh lebih sedikit masalah - misalnya, dalam implementasi ini, objek dengan ketebalan 0,4 voxel tidak akan mengirimkan cahaya tampak (dengan ketebalan 0,2 voxel, ia dapat mengirimkan sebagian cahaya, tetapi juga dari ini) Anda bisa singkirkan di masa depan).
Kualitas: kesimpulan
Kartu bayangan sangat baik dalam banyak aspek kualitas. Satu-satunya area yang turun secara signifikan adalah perhitungan rasio skylight. Ini mungkin memerlukan metode hybrid yang menggunakan voxelization untuk skylight, yang menyebabkan beberapa halangan pada pipa voxel - atau mungkin ada solusi alternatif untuk masalah ini. Akan menyenangkan juga untuk dapat mendukung bayangan lembut, yang dapat dilakukan dengan beberapa ekstensi pada algoritma peta bayangan.
Voxel memberikan kualitas yang dapat diterima, tetapi dibandingkan dengan peta bayangan, mereka kehilangan banyak, terutama dalam ketepatan bayangan dan sorotan spekuler. Bagaimanapun juga, kami harus memecahkan masalah ini agar dapat menerapkan pencahayaan voxel yang dapat memberikan bayangan indah dari pemain, karena penggunaan solusi saat ini hanya memberikan bayangan dari matahari, yang tampaknya tidak sesuai dengan visi masa depan dunia dalam game.
Visibilitas: tembus cahaya
Rendering shadow adalah masalah yang diteliti dengan cukup baik untuk objek buram, tetapi translucency adalah masalah yang sama sekali berbeda. Karena dalam kasus sistem voxel, cahaya bergerak melalui sel-sel voxel berdasarkan nilai kepenuhan, tidak terlalu sulit untuk mempertahankan bayangan semi-transparan yang dapat diberikan bayangan frekuensi rendah (lembut) dari efek partikel dan objek semi-transparan lainnya dalam pemandangan, termasuk bayangan sendiri untuk efek partikel itu sendiri:
Di bawah ini adalah video dari efek ini yang sedang bergerak:
Saat ini tidak ada dukungan untuk tembus pandang untuk peta bayangan. Ini berarti bahwa jika kita ingin mendukung partikel atau objek transparan lain yang menghasilkan bayangan, solusi lain harus ditemukan. Ada beberapa penelitian untuk representasi peta bayangan alternatif yang mungkin melayani kasus penggunaan ini, tetapi masih harus dilihat seberapa efektif hal ini.
Jarak pandang: vegetasi
Meskipun peta bayangan tidak berfungsi dengan sangat baik dengan tembus cahaya, peta bayangan dapat menunjukkan detail halus pada objek (seperti vegetasi), baik dimodelkan dengan geometri atau tekstur. Voxel tidak cukup kecil untuk melayani kasus penggunaan ini. Selain itu, dalam hal ini akses informasi mengenai tekstur tidak mudah, karena memerlukan pemodelan permukaan mesh yang akurat, bukan volumenya. Sangat diragukan bahwa akan mungkin untuk mendapatkan bayangan indah dari vegetasi menggunakan voxel, sedangkan peta bayangan dapat menyediakan ini bahkan dengan konten yang sudah ada, seperti yang ditunjukkan pada tangkapan layar ini:
Visibilitas: iluminasi diri
Karena cara voxel diimplementasikan, relatif mudah untuk menyuntikkan lampu dengan bentuk dan kuantitas yang berubah-ubah ke dalam jaring tanpa mempengaruhi kinerja bagian lain dari pipa. Namun, saat Anda menambahkan banyak cahaya ke peta bayangan, membuat cahaya dengan bentuk tidak beraturan memiliki beberapa masalah arsitektur dan kinerja. Secara khusus, jauh lebih mudah untuk mewujudkan self-luminosity dengan voxel: bahan neon saat ini digunakan untuk "memancarkan cahaya", tetapi tidak benar-benar memancarkan cahaya ke objek lain di dekatnya.
Ya, Anda dapat menambahkan lampu tambahan, tetapi alangkah baiknya jika semuanya dilakukan secara otomatis. Peta bayangan tidak terlalu berguna untuk ini, tetapi voxel mendukung voxelisasi dalam bentuk apa pun karena kebutuhan, dan dengan demikian mendukung emisi cahaya dari objek yang bercahaya sendiri cukup sederhana dengannya.
Visibilitas: iluminasi global
Iluminasi global (GI) mengacu pada perhitungan efek pencahayaan sekunder, seperti cahaya dari lampu yang memantul dua kali dari dinding untuk memberikan penerangan tambahan di area di mana sinar cahaya langsung tidak dapat dijangkau.
GI di Roblox sangat kompleks, dan sebagian besar keputusan terkait GI harus mengorbankan sesuatu dari pencahayaan dinamis, geometri dinamis, kinerja, pemandangan berskala besar. Semua pengorbanan ini tidak diperbolehkan.
Tidak jelas solusi GI mana yang akan praktis karena kendala konten yang ketat. Sejauh ini, GI berbasis voxel tampaknya lebih menjanjikan daripada pendekatan lain.
Tentu saja, memiliki GI berbasis voxel tidak berarti iluminasi langsung dihitung menggunakan mereka: kebanyakan riset GI berbasis voxel saat ini melibatkan penggunaan peta bayangan untuk menghitung cahaya langsung dan meningkatkan hasil dengan voxel.
Ringkasan
Berdasarkan analisis di atas, kami akan menyusun tabel ringkasan efektivitas kedua solusi. Sel-sel yang dicetak miring menunjukkan bahwa penelitian lebih lanjut dapat memperbaiki area ini. Pemeringkatan dalam tabel adalah sebagai berikut: Sangat Buruk <Buruk <Normal <Baik <Sangat Baik.
Jadi, voxel sangat bagus untuk memodelkan pencahayaan tidak langsung, tetapi tidak terlalu bagus untuk pencahayaan langsung. Pada saat yang sama, mereka sangat intensif sumber daya, yang berkorelasi buruk dengan tugas memelihara kumpulan perangkat yang luas.
Hal ini menyebabkan keputusan untuk membuat sistem peta bayangan untuk penerangan langsung. Solusi untuk masalah langit-langit dan iluminasi global belum benar-benar ditemukan, tetapi kemungkinan besar, ini akan menjadi semacam hibrida dari kedua sistem.