Isso depende do método de subdivisão espacial que você usa, embora todos os métodos de subdivisão (como qualquer método de compactação) acabem se desenvolvendo onde nenhuma compactação adicional pode ocorrer, devido às despesas gerais da estrutura de dados e outros fatores lógicos / matemáticos. Um exemplo pode ser encontrado em octrees. Para cada nó na octree, um ponteiro deve ser mantido para seu pai e / ou filhos (dependendo de como você executa a arquitetura da estrutura de dados), para permitir uma travessia significativa. Qualquer estrutura de árvore pode conter n filhos. Quanto menor a proporção 1: n, o uso mais eficiente do espaço que você ganha e, consequentemente, maiores as despesas gerais no deslocamento de árvores, pois você deve ter mais nós ancestrais para conter o mesmo número de voxels de folhas (no seu caso, aproximadamente 510 trilhões) destes representando a área da superfície).
Considerando que, no seu caso, os principais problemas são o custo de armazenamento e a renderização de todo o planeta (ou partes dele) a uma distância justa, não há uma estrutura de dados que eu recomendaria em uma octree. O mipmapping é uma necessidade: 12,8 milhões de metros de diâmetro na potência mais alta mais próxima de 2 é 2 ^ 24 = 16,8 milhões. O deslocamento de 24 níveis de octree equivaleria a uma quantidade enorme de ramificações - muito caro para GPUs e CPUs. Mas desde que você faça as coisas certas, você só precisará atravessar alguns níveis de cada vez. Dada a quantidade de espaço necessária, porém, as alternativas são poucas e distantes (veja abaixo).
Os recursos de mipmapping dos octrees são o que o torna uma ferramenta incrivelmente poderosa para grandes volumes, como você descreve. Diferente de todos os outros métodos de subdivisão conhecidos (com exceção das árvores KD), a octree mantém a subdivisão por nível mínima, o que significa que as diferenças visuais e físicas entre os níveis do mipmap também são mínimas, o que significa deltas muito mais finos na granularidade à medida que você caminha e sobe. abaixo da árvore.
Se, por outro lado, você deseja gerar um mundo em que a passagem hierárquica da grade é mantida no mínimo, precisará trocar espaço para aumentar a velocidade.
Falando da proporção ideal de 1: n, não existe uma estrutura mais refinada do que a árvore kd a esse respeito. Onde a octree se divide em 2 para cada eixo, resultando em 2 ^ 3 = 8 células filho individuais, a árvore kd se divide exatamente uma vez por nível de subdivisão. O problema é que você deve escolher um hiperplano para dividir, e esse hiperplano pode ser escolhido em qualquer um dos três eixos. Embora seja ideal em termos de espaço, torna as travessias 3D (como durante raymarches, uma operação fundamental ao usar octrees para física ou renderização) muito mais difíceis do que em uma octree, uma vez que uma estrutura dinâmica de portal deve ser mantida para registrar interfaces entre nós individuais da árvore kd.
O RLE é outra abordagem da compactação, mas é, de muitas maneiras, mais difícil de aplicar a um problema como este (onde a base de operações é esférica), pois a compactação do RLE é unidimensional e você deve escolher o eixo em que opera. planeta, pode-se escolher o eixo polar, mas qualquer opção de eixo único introduziria certos problemas nas travessias para renderização e física ao atuar a partir de determinados ângulos não ideais. Obviamente, você também pode executar o RLE em 3 eixos simultaneamente, triplicando o custo de armazenamento ou em 6 eixos (-x, + x, -y, + y, -z, + z) como uma otimização adicional.
Então, para responder à sua pergunta (ou não!)
Não vou responder diretamente a que tipo de hardware, mas acho que olhar de uma perspectiva octree começa a dar uma idéia do que é de fato possível em que tipo de hardware. Gostaria de encorajá-lo a seguir esse caminho. Se você realmente quiser saber, talvez seja mais fácil implementar uma simples octree esparsa(veja o artigo de Laine nas referências) e coloque uma casca esférica de voxels de superfície nele e veja como é o uso resultante do espaço. Intensifique a partir daí. Veja até onde você pode chegar antes que a memória do sistema comece a se esgotar. Isso não exige que você escreva um renderizador, a menos que deseje visualização. Lembre-se também de que isso é melhor feito na CPU - as GPUs, em geral, não têm capacidade de memória para lidar com problemas dessa escala. Essa é uma das razões pelas quais a Intel está buscando avançar para processadores massivamente paralelos: os benefícios da GPGPU, que é melhor nesse tipo de coisa, podem ser aplicados a um espaço de memória muito mais vasto, sem gargalos no barramento do sistema. Provavelmente existem outros aqui, ou em mathematics.stackexchange.com,
Em termos de seu requisito de distância de visualização infinita, claro, mas a questão sempre se resume a "quantos detalhes a que distância". A renderização de detalhes infinitos exigiria recursos infinitos. É aí que entra em cena o mipmap de variável por cena. Também tenha em mente que todas as estruturas de dados incorporam alguma troca de velocidade por espaço ou vice-versa. Isso significa renderização menos / mais lenta, se você deseja um mundo maior para a mesma quantidade de esforço de engenharia.