Minecraft adalah gim yang sebagian besar didasarkan pada peta ketinggian dan menggunakan informasi heigtmap itu untuk membanjiri dunia dengan cahaya. Dari pemahaman saya, titik tertinggi dalam peta ketinggian adalah akhir area yang dipengaruhi sinar matahari. Segala sesuatu di atas yang diterangi oleh sinar matahari, segala yang di bawah itu hanya dipengaruhi oleh cahaya di dekatnya dalam radius 8 blok.
Jadi, jika Anda memiliki pulau terapung di atas dunia Anda, semua yang ada di bawah ini pada dasarnya akan dianggap sebagai gua. Ketika dua lampu memengaruhi titik yang sama, cahaya yang lebih terang menang (tidak yakin tentang itu).
Apa pun yang terjadi, ada beberapa masalah dengan model pencahayaan minecrafts: pertama-tama, jika dunia Anda tidak memiliki peta ketinggian, menjadi lebih sulit untuk mencari tahu apa yang seharusnya memancarkan sinar matahari dan apa yang tidak. Cara sederhana adalah dengan mengasumsikan bahwa dunia (dalam kasus saya) adalah batu apung dan kemudian lintasi setiap sumbu dari kedua arah dan mencari tahu di mana batu itu mulai dan berakhir. Tapi ini tidak sepenuhnya menghilangkan masalah karena penyok di batu tidak seharusnya dalam kegelapan.
Minecraft sendiri akan menyimpan informasi ringan dalam bongkahannya bersama dengan informasi tentang bahan blok. Jadi hanya jika dunia diubah pencahayaan harus diperbarui. Sayangnya proses itu masih sangat lambat pada pembaruan dan perubahan cahaya cepat orang dapat melihat pencahayaan yang tertinggal. Itu terutama benar jika banyak blok berubah (TNT, sunset dll.) Dan Anda tidak menjalankan komputer tercepat (Atau Java pada Mac).
Dari pemahaman saya yang masih terbatas tentang pencahayaan grafis 3D, dunia seperti minecraft seharusnya tidak menjadi masalah terbesar. Bagaimana Anda mengatasi masalah tersebut?
Saya pikir persyaratan dasar untuk pencahayaan di dunia voxel adalah
- pembaruan cukup cepat sehingga bisa terjadi dalam satu frame. Seseorang mungkin dapat melakukan pencahayaan di perangkat grafis dan mengunduh informasi cahaya yang diubah ke RAM utama.
- informasi cahaya harus cepat tersedia untuk logika permainan utama sehingga tidak sepenuhnya berdasarkan pada perangkat grafis: alasan: cahaya mempengaruhi pertumbuhan rumput, pemijahan monster dll.
- pembaruan ringan harus bersifat lokal ke bongkahan atau memiliki batas lain sehingga orang tidak harus menyalakan kembali seluruh dunia yang mungkin sangat besar ukurannya.
Gagasan utamanya adalah membuat pembaruan ringan cepat, belum tentu lebih indah. Untuk peningkatan kinerja rendering ringan secara umum, seseorang dapat dengan mudah menambahkan SSAO selain yang seharusnya menghasilkan dunia yang jauh lebih baik.
Tidak bisakah Anda menggunakan GPU Render untuk Tekstur & menggandakan buffer hasil Anda sehingga Anda selalu memiliki informasi pencahayaan yang tersedia untuk membaca kembali setiap frame?
Bagaimana Anda mengatur data ini untuk penerangan sepenuhnya terserah Anda, tetapi saya tidak melihat mengapa ini seharusnya tidak menjadi pilihan pertama untuk penyelidikan jika yang ingin Anda lakukan adalah meningkatkan kecepatan algoritma pencahayaan Anda ..?
sumber
Orang rendering waktu-nyata tampaknya memiliki sedikit hubungan asmara dengan Minecraft. Ada komentar tentang bagaimana mereka belum mengetahui pencahayaannya .. tetapi Anda mungkin ingin tetap mengikuti perkembangan / tautan selanjutnya.
http://www.realtimerendering.com/blog/?s=minecraft
sumber