这取决于您使用的空间细分方法,尽管由于数据结构开销和其他逻辑/数学因素,所有细分方法(如任何压缩方法)最终都无法进行进一步的压缩。在八叉树中可以找到一个例子。对于八叉树中的每个节点,必须保留指向其父级和/或子级的指针(取决于您处理数据结构的方式),以实现有意义的遍历。任何树结构都可以包含n个孩子。1:n比率越低,您获得的空间使用效率就越高,因此树遍历的开销也越大,因为您必须有更多的祖先节点才能包含相同数量的叶体素(在您的情况下,约为510万亿)其中代表表面积)。
考虑到在您的实例中,主要问题是存储成本并以合理的距离绘制整个星球(或其部分),因此我不建议在八叉树上使用任何数据结构。必须进行Mipmapping:最接近2的较高幂的1280万米直径为2 ^ 24 = 1680万。要遍历24个八叉树,将导致大量分支-对于GPU和CPU而言都非常昂贵。但是,只要您做正确的事,您一次只需要遍历几个级别。但是,鉴于所需的空间量,替代方案很少而且相差很远(见下文)。
八叉树的mipmapping功能是使它成为如此庞大的工具(如您所描述的)的强大工具。与所有其他已知的细分方法(KD树除外)不同,八叉树使每个级别的细分保持最小,这意味着mipmap级别之间的视觉和物理差异也保持最小,这意味着在您向上行走时粒度上的细微差异要大得多。在树上。
另一方面,如果要生成一个层次结构网格遍历保持最小的世界,则需要权衡空间以提高速度。
说到理想的1:n比,在这方面没有比kd树更好的结构。在八叉树为每个轴划分为2的情况下,导致2 ^ 3 = 8个单独的子单元格,而kd树在每个细分级别精确地分裂一次。这样做的问题是,您必须选择一个要分割的超平面,并且可以围绕3个轴中的任何一个选择该超平面。尽管就空间而言它是最佳的,但它却使3D遍历(例如在raymarches期间,使用八叉树进行物理或渲染时的基本操作)比八叉树困难得多,因为必须保留动态门户类型的结构来进行记录各个kd树节点之间的接口。
RLE是另一种压缩方法,但是由于RLE压缩是一维的,因此您必须选择在其中运行的轴。行星,可能会选择极轴,但是任何单轴选择都将在从某些非最佳角度作用时为渲染和物理引入遍历问题。当然,您也可以同时在3个轴上运行RLE,使存储成本增加三倍,或者在6个轴(-x,+ x,-y,+ y,-z,+ z)上运行RLE,以进一步优化。
因此,回答您的问题(或不回答!)
我不会直接回答什么样的硬件,但我认为从八叉树的角度来看它会开始让您了解实际上在哪种硬件上可能会发生什么。我鼓励您走这条路,如果您真的想知道,实际上实现一个简单的稀疏八叉树可能是最容易的(请参阅参考资料中的莱恩的论文),然后在其中放置一个表面体素的球形外壳,并查看由此产生的空间使用情况。从那里站起来。看看在系统内存开始释放之前您能得到多少。除非您需要可视化,否则不需要编写渲染器。还请记住,最好在CPU上完成此操作-GPU大体上没有处理这种规模问题的内存容量。这就是英特尔希望转向大规模并行处理器的原因之一:GPGPU的优势(在这种情况下更胜一筹)可以应用到更广阔的内存空间,而无需应对系统总线瓶颈。在此或mathematics.stackexchange.com上可能还有其他内容,
当然,就无限远视距离的要求而言,但问题总是归结为“在什么距离下有多少细节”。渲染无限的细节将需要无限的资源。这就是每个场景可变mipmapping发挥作用的地方。还请记住,所有数据结构都体现了一定的空间速度权衡,反之亦然。如果您希望在相同的工程量下拥有更大的空间,则意味着更少/较慢的渲染。