Eso depende del método de subdivisión espacial que use, aunque todos los métodos de subdivisión (como cualquier método de compresión) eventualmente se despliegan donde no puede producirse más compresión, debido a los gastos generales de la estructura de datos y otros factores lógicos / matemáticos. Un ejemplo se puede encontrar en octrees. Para cada nodo en el octree, se debe mantener un puntero a sus padres y / o hijos (dependiendo de cómo se realice la arquitectura de la estructura de datos), para permitir un recorrido significativo. Cualquier estructura de árbol puede contener n hijos. Cuanto menor sea la relación 1: n, más eficiente será el uso del espacio que gane, y en consecuencia mayores serán los gastos generales en el recorrido del árbol, ya que debe tener más nodos ancestrales para contener la misma cantidad de vóxeles de hojas (en su caso, aproximadamente 510 billones de estos representando el área de superficie).
Teniendo en cuenta que, en su caso, los problemas principales son el costo de almacenamiento y la representación de todo el planeta (o partes del mismo) desde una distancia considerable, no hay una estructura de datos que recomendaría en un día. Mipmapping es una necesidad: 12.8 millones de metros de diámetro a la potencia más alta más cercana de 2 es 2 ^ 24 = 16.8 millones. Los niveles de 24 octree para recorrer equivaldrían a una enorme cantidad de ramificaciones, muy costoso para GPU y CPU por igual. Pero siempre que haga las cosas bien, solo tendrá que atravesar algunos niveles a la vez. Sin embargo, dada la cantidad de espacio requerido, las alternativas son pocas y distantes entre sí (ver más abajo).
Las capacidades de mipmapping de los octrees son las que lo convierten en una herramienta increíblemente poderosa para grandes volúmenes como el que usted describe. A diferencia de todos los demás métodos de subdivisión conocidos (con la excepción de los árboles KD), el octree mantiene la subdivisión por nivel mínimo, lo que significa que las diferencias visuales y físicas entre los niveles de mipmap también se mantienen mínimas, lo que significa deltas mucho más finos en granularidad a medida que avanza y Abajo del árbol.
Si, por otro lado, desea generar un mundo donde el recorrido jerárquico de la cuadrícula se mantenga al mínimo, entonces deberá intercambiar espacio para aumentar la velocidad.
Hablando de la relación ideal 1: n, no hay una estructura más fina que el árbol kd a este respecto. Donde el octree se divide en 2 para cada eje, dando como resultado 2 ^ 3 = 8 celdas secundarias individuales, el árbol kd se divide exactamente una vez por nivel de subdivisión. El problema con esto es que debe elegir un hiperplano para dividirlo, y este hiperplano podría elegirse alrededor de cualquiera de los 3 ejes. Si bien es óptimo en términos de espacio, hace que los recorridos en 3D (como durante las marcas de rayos, una operación fundamental cuando se usan octrees para física o renderización) sean mucho más difíciles que en un octree, ya que se debe mantener una estructura dinámica de tipo portal. interfaces entre nodos de árbol kd individuales.
RLE es otro enfoque de la compresión, pero en muchos sentidos es más difícil de aplicar a un problema como este (donde la base de operaciones es esférica), ya que la compresión RLE es unidimensional y debe elegir el eje en el que opera. planeta, uno podría elegir el eje polar, pero cualquier elección de un solo eje introduciría ciertos problemas con los recorridos para el renderizado y la física al actuar desde ciertos ángulos no óptimos. Por supuesto, también podría ejecutar RLE en 3 ejes simultáneamente, triplicando el costo de almacenamiento, o en 6 ejes (-x, + x, -y, + y, -z, + z) como una optimización adicional.
Entonces, para responder a tu pregunta (¡o no!)
No voy a ir directamente a responder qué tipo de hardware, pero creo que mirarlo desde una perspectiva de diez años comienza a darle una idea de lo que de hecho es posible en qué tipo de hardware. Te animo a que sigas por esta ruta, si realmente quieres saber, podría ser más fácil implementar un simple y escaso octree(vea el documento de Laine en las referencias) y coloque una capa esférica de vóxeles de superficie en él, y vea cómo es el uso del espacio resultante. Avanza desde allí. Vea hasta dónde puede llegar antes de que la memoria de su sistema comience a agotarse. Esto no requiere que escriba un renderizador a menos que desee visualización. También tenga en cuenta que esto se hace mejor en la CPU: las GPU en general no tienen la capacidad de memoria para lidiar con problemas de esta escala. Esta es una de las razones por las que Intel está buscando avanzar hacia procesadores masivamente paralelos: los beneficios de GPGPU, que es mejor en este tipo de cosas, se pueden aplicar a un espacio de memoria mucho más amplio sin cuellos de botella del bus del sistema con los que lidiar. Probablemente hay otros aquí, o en matemáticas.stackexchange.com,
En términos de su requisito de distancia de vista infinita, claro, pero la pregunta siempre se reduce a "cuántos detalles a qué distancia". Representar detalles infinitos requeriría recursos infinitos. Ahí es donde entra en juego el mipmapping variable por escena. También tenga en cuenta que todas las estructuras de datos incorporan cierta compensación de velocidad por espacio o viceversa. Eso significa una representación menos / más lenta, si desea un mundo más grande para la misma cantidad de esfuerzo de ingeniería.