Itu tergantung pada metode pembagian ruang yang Anda gunakan, meskipun semua metode pembagian (seperti metode kompresi apa pun) akhirnya berjalan di mana tidak ada kompresi lebih lanjut dapat terjadi, karena overhead struktur data dan faktor logis / matematika lainnya. Contohnya dapat ditemukan di octrees. Untuk setiap node dalam octree, pointer harus disimpan untuk orang tua dan / atau anak-anak (tergantung pada bagaimana Anda pergi tentang arsitektur struktur data Anda), untuk memungkinkan traversal yang bermakna. Setiap struktur pohon dapat berisi n anak-anak. Semakin rendah rasio 1: n, semakin efisien penggunaan ruang yang Anda peroleh, dan akibatnya semakin besar overhead dalam traversal pohon karena Anda harus memiliki lebih banyak node leluhur yang mengandung jumlah voxel daun yang sama (dalam kasus Anda, sekitar 510 triliun ini mewakili area permukaan).
Mempertimbangkan bahwa dalam contoh Anda, masalah utama adalah biaya penyimpanan dan membuat seluruh planet (atau bagiannya) dari jarak yang adil, tidak ada struktur data yang saya sarankan lebih dari satu Oktober. Pemetaan adalah suatu keharusan: diameter 12,8 juta meter pada daya terdekat 2 tertinggi adalah 2 ^ 24 = 16,8 juta. Level 24 octree untuk dilalui akan berjumlah sejumlah besar percabangan - sangat mahal untuk GPU dan CPU. Tetapi jika Anda melakukan hal-hal yang benar, Anda hanya perlu melintasi beberapa level pada satu waktu. Namun, mengingat jumlah ruang yang dibutuhkan, alternatifnya sedikit dan jarang (lihat di bawah).
Kemampuan pemetaan oktaf adalah apa yang membuatnya menjadi alat yang sangat kuat untuk volume besar seperti yang Anda gambarkan. Tidak seperti semua metode pembagian lainnya yang diketahui (dengan pengecualian KD-tree), octree membuat pembagian tetap minimal, artinya perbedaan visual dan fisik antara tingkat mipmap juga dijaga tetap minimal, yang berarti banyak delta yang lebih halus dalam granularitas saat Anda berjalan dan turun pohon.
Jika, di sisi lain, Anda ingin menghasilkan dunia di mana traversal kisi hierarkis dijaga seminimal mungkin, maka Anda perlu menukar ruang untuk menambah kecepatan.
Berbicara tentang rasio 1: n yang ideal, tidak ada struktur yang lebih baik daripada kd-tree dalam hal ini. Di mana octree terbagi menjadi 2 untuk setiap sumbu, menghasilkan 2 ^ 3 = 8 sel anak individual, pohon kd membelah tepat satu kali per tingkat pembagian. Masalahnya adalah Anda harus memilih hyperplane untuk dibelah, dan hyperplane ini dapat dipilih di sekitar salah satu dari 3 sumbu. Meskipun optimal dalam hal ruang, itu membuat traversal 3D (seperti selama raymarch, operasi fundamental ketika menggunakan octrees untuk fisika atau rendering) jauh lebih sulit daripada dalam satu octree, karena struktur tipe portal yang dinamis harus disimpan untuk merekam antarmuka antara masing-masing node kd-tree.
RLE adalah pendekatan lain untuk kompresi, tetapi dalam banyak hal lebih sulit untuk diterapkan pada masalah seperti ini (di mana basis operasi berbentuk bola), karena kompresi RLE adalah satu dimensi, dan Anda harus memilih sumbu tempat operasinya. Untuk planet, seseorang mungkin memilih sumbu kutub, tetapi setiap pilihan sumbu tunggal akan memperkenalkan masalah tertentu dengan traversal untuk rendering dan fisika ketika bertindak dari sudut-sudut tertentu yang tidak optimal. Tentu saja, Anda juga dapat menjalankan RLE dalam 3 sumbu secara bersamaan, tiga kali lipat biaya penyimpanan, atau dalam 6 sumbu (-x, + x, -y, + y, -z, + z) sebagai optimasi lebih lanjut.
Jadi untuk menjawab pertanyaan Anda (atau tidak!)
Saya tidak akan langsung menjawab apa jenis perangkat kerasnya, tetapi saya pikir melihatnya dari sudut pandang oktree mulai memberi Anda gambaran tentang apa yang sebenarnya mungkin terjadi pada perangkat keras jenis apa. Saya akan mendorong Anda untuk turun rute ini, jika Anda benar-benar ingin tahu, mungkin paling mudah untuk benar-benar menerapkan octree jarang sederhana(lihat kertas Laine di referensi) dan letakkan cangkang bulat berisi voxel permukaan ke dalamnya, dan lihat seperti apa penggunaan ruang yang dihasilkan. Melangkah dari sana. Lihat seberapa jauh Anda bisa mendapatkan sebelum memori sistem Anda mulai memberi. Ini tidak mengharuskan Anda untuk menulis renderer kecuali Anda ingin visualisasi. Juga ingat bahwa ini paling baik dilakukan pada CPU - GPU pada umumnya tidak memiliki kapasitas memori untuk menangani masalah skala ini. Ini adalah salah satu alasan Intel melihat bergerak ke arah prosesor paralel masif: manfaat GPGPU, yang lebih baik dalam hal semacam ini, dapat diterapkan pada ruang memori yang jauh lebih luas tanpa hambatan sistem bus untuk bersaing. Mungkin ada orang lain di sini, atau di mathem.stackexchange.com,
Dalam hal persyaratan jarak pandang tak terbatas Anda, tentu saja, tetapi pertanyaannya selalu sampai pada, "berapa banyak detail pada jarak berapa". Memberikan detail tanpa batas akan membutuhkan sumber daya yang tak terbatas. Di situlah pemetaan variabel-per-adegan ikut berperan. Juga ingat bahwa semua struktur data mewujudkan pertukaran kecepatan untuk ruang atau sebaliknya. Itu berarti rendering lebih sedikit / lebih lambat, jika Anda menginginkan dunia yang lebih besar untuk jumlah upaya rekayasa yang sama.