Điều đó phụ thuộc vào phương pháp phân chia không gian mà bạn sử dụng, mặc dù tất cả các phương pháp phân chia (giống như bất kỳ phương pháp nén nào) cuối cùng đều không thể nén được nữa, do chi phí cấu trúc dữ liệu và các yếu tố logic / toán học khác. Một ví dụ có thể được tìm thấy trong octrees. Đối với mỗi nút trong octree, một con trỏ phải được giữ cho cha mẹ và / hoặc con cái (tùy thuộc vào cách bạn đi về kiến trúc cấu trúc dữ liệu của bạn), để cho phép truyền tải có ý nghĩa. Bất kỳ cấu trúc cây có thể chứa n trẻ em. Tỷ lệ 1: n càng thấp, bạn sử dụng không gian càng hiệu quả và do đó, tổng chi phí trong giao dịch cây càng lớn vì bạn phải có nhiều nút tổ tiên hơn để chứa cùng số lượng voxels lá (trong trường hợp của bạn, khoảng 510 nghìn tỷ trong số này đại diện cho diện tích bề mặt).
Xem xét rằng trong trường hợp của bạn, các vấn đề chính là chi phí lưu trữ và khiến toàn bộ hành tinh (hoặc các bộ phận của chúng) từ một khoảng cách hợp lý, không có cấu trúc dữ liệu nào tôi muốn giới thiệu trong một quãng tám. Mipmapping là một điều cần thiết: đường kính 12,8 triệu mét ở công suất cao nhất gần nhất là 2 ^ 24 = 16,8 triệu. 24 cấp độ tám để đi qua sẽ tương đương với số lượng phân nhánh khổng lồ - rất tốn kém cho GPU và CPU như nhau. Nhưng với điều kiện bạn làm đúng, bạn sẽ chỉ cần vượt qua một vài cấp độ tại một thời điểm. Tuy nhiên, với số lượng không gian cần thiết, các lựa chọn thay thế là rất ít và xa (xem bên dưới).
Khả năng mipmapping của octrees là những gì làm cho nó trở thành một công cụ vô cùng mạnh mẽ cho khối lượng lớn như bạn mô tả. Không giống như tất cả các phương pháp phân chia đã biết khác (ngoại trừ cây KD), octree giữ phân chia theo cấp độ tối thiểu, có nghĩa là sự khác biệt về thị giác và vật lý giữa các cấp độ mipmap cũng được giữ ở mức tối thiểu, có nghĩa là các vùng đồng bằng mịn hơn khi bạn đi lên và xuống cây.
Mặt khác, nếu bạn muốn tạo ra một thế giới nơi truyền tải lưới phân cấp được giữ ở mức tối thiểu, thì bạn sẽ cần phải đánh đổi không gian để tăng tốc độ.
Nói về tỷ lệ 1: n lý tưởng, không có cấu trúc tốt hơn cây kd về mặt này. Trong đó octree chia làm 2 cho mỗi trục, dẫn đến 2 ^ 3 = 8 ô con riêng lẻ, cây kd phân chia chính xác một lần cho mỗi cấp độ phân chia. Vấn đề với điều này là bạn phải chọn một siêu phẳng để phân chia và siêu phẳng này có thể được chọn xung quanh bất kỳ trong số 3 trục. Mặc dù tối ưu về mặt không gian, nhưng nó tạo ra các đường ngang 3D (chẳng hạn như trong raymarches, op cơ bản khi sử dụng octrees cho vật lý hoặc kết xuất) khó khăn hơn nhiều so với trong một octree, vì cấu trúc kiểu cổng động phải được lưu giữ để ghi lại giao diện giữa các nút kd-cây riêng lẻ.
RLE là một cách tiếp cận khác để nén, nhưng theo nhiều cách khó hơn để áp dụng cho một vấn đề như thế này (trong đó cơ sở hoạt động là hình cầu), vì nén RLE là một chiều và bạn phải chọn trục mà nó hoạt động. hành tinh, người ta có thể chọn trục cực, nhưng bất kỳ lựa chọn trục đơn nào cũng sẽ đưa ra một số vấn đề nhất định với các đường ngang để kết xuất và vật lý khi hành động từ các góc không tối ưu nhất định. Tất nhiên, bạn cũng có thể chạy RLE theo 3 trục đồng thời, tăng gấp ba chi phí lưu trữ hoặc trong 6 trục (-x, + x, -y, + y, -z, + z) để tối ưu hóa thêm.
Vì vậy, để trả lời câu hỏi của bạn (hoặc không!)
Tôi sẽ không đi thẳng vào việc trả lời loại phần cứng nào, nhưng tôi nghĩ rằng việc nhìn nó từ góc độ tám phần bắt đầu cho bạn ý tưởng về những gì thực tế có thể có trên loại phần cứng nào. Tôi sẽ khuyến khích bạn đi theo con đường này, nếu bạn thực sự muốn biết, có thể dễ dàng nhất để thực hiện một quãng tám thưa thớt đơn giản(xem bài viết của Laine trong tài liệu tham khảo) và đặt một lớp vỏ hình cầu của các voxels bề mặt vào đó, và xem việc sử dụng không gian kết quả là như thế nào. Bước lên từ đó. Xem khoảng cách bạn có thể nhận được trước khi bộ nhớ hệ thống của bạn bắt đầu phát hành. Điều này không yêu cầu bạn phải viết trình kết xuất trừ khi bạn muốn trực quan hóa. Cũng nên nhớ rằng điều này được thực hiện tốt nhất trên CPU - GPU và lớn không có dung lượng bộ nhớ để xử lý các vấn đề ở quy mô này. Đây là một trong những lý do Intel đang hướng tới việc chuyển sang các bộ xử lý song song ồ ạt: những lợi ích của GPGPU, tốt hơn ở loại này, có thể được áp dụng cho một không gian bộ nhớ xa hơn mà không bị tắc nghẽn hệ thống. Có lẽ có những người khác ở đây, hoặc trên math.stackexchange.com,
Về mặt yêu cầu khoảng cách xem vô hạn của bạn, chắc chắn, nhưng câu hỏi luôn luôn đi đến, "bao nhiêu chi tiết ở khoảng cách nào". Kết xuất chi tiết vô hạn sẽ yêu cầu tài nguyên vô hạn. Đó là nơi mà mipmapping biến đổi theo cảnh diễn ra. Cũng nên nhớ rằng tất cả các cấu trúc dữ liệu thể hiện một số sự đánh đổi tốc độ cho không gian hoặc ngược lại. Điều đó có nghĩa là kết xuất ít hơn / chậm hơn, nếu bạn muốn một thế giới rộng lớn hơn cho cùng một nỗ lực kỹ thuật.