Ciò dipende dal metodo di suddivisione spaziale che si utilizza, sebbene tutti i metodi di suddivisione (come qualsiasi metodo di compressione) finiscano per eseguire il pan in cui non può avvenire alcuna ulteriore compressione, a causa delle spese generali della struttura dei dati e di altri fattori logici / matematici. Un esempio può essere trovato in octrees. Per ciascun nodo nell'ottobre, è necessario mantenere un puntatore al suo genitore e / o figli (a seconda di come si procede nell'architettura della struttura dei dati), per consentire un attraversamento significativo. Qualsiasi struttura ad albero può contenere n bambini. Più basso è il rapporto 1: n, più efficiente sarà lo spazio che guadagni e, di conseguenza, maggiori saranno le spese generali nel passaggio degli alberi poiché devi avere più nodi antenati per contenere lo stesso numero di voxel delle foglie (nel tuo caso, circa 510 trilioni di questi rappresentano l'area).
Considerando che nel tuo caso i problemi principali sono i costi di archiviazione e il rendering dell'intero pianeta (o parti di esso) da una discreta distanza, non esiste una struttura di dati che consiglierei su un octree. Il mipmapping è una necessità: 12,8 milioni di metri di diametro alla potenza più vicina di 2 è 2 ^ 24 = 16,8 milioni. 24 livelli di ottetto da attraversare equivarrebbero a una quantità enorme di ramificazioni - molto costosa per GPU e CPU. Ma purché tu faccia le cose nel modo giusto, dovrai attraversare solo pochi livelli alla volta. Data la quantità di spazio richiesto, tuttavia, le alternative sono poche e lontane tra loro (vedi sotto).
Le capacità di mipmapping di ocre sono ciò che lo rende uno strumento incredibilmente potente per grandi volumi come quello che descrivi. A differenza di tutti gli altri metodi di suddivisione noti (ad eccezione degli alberi KD), l'octree mantiene la suddivisione per livello minimo, il che significa che anche le differenze visive e fisiche tra i livelli di mipmap sono minime, il che significa delta molto più fini nella granularità mentre cammini e giù per l'albero.
Se, d'altra parte, vuoi generare un mondo in cui l'attraversamento gerarchico della griglia è ridotto al minimo, dovrai scambiare spazio per aumentare la velocità.
Parlando del rapporto ideale 1: n, non esiste una struttura più fine dell'albero kd in questo senso. Laddove l'ottico si divide in 2 per ciascun asse, risultando in 2 ^ 3 = 8 singole celle figlio, l'albero kd si divide esattamente una volta per livello di suddivisione. Il problema è che devi scegliere un iperpiano da dividere, e questo iperpiano potrebbe essere scelto attorno a uno dei 3 assi. Sebbene sia ottimale in termini di spazio, rende gli attraversamenti 3D (come durante i raymarches, un'opzione fondamentale quando si usano gli oculari per la fisica o il rendering) molto più difficile rispetto a un octree, dal momento che una struttura di tipo portale dinamico deve essere mantenuta per registrare interfacce tra singoli nodi kd-tree.
RLE è un altro approccio alla compressione, ma è per molti versi più difficile da applicare a un problema come questo (in cui la base delle operazioni è sferica), poiché la compressione RLE è unidimensionale ed è necessario selezionare l'asse in cui opera. pianeta, si potrebbe scegliere l'asse polare, ma qualsiasi scelta a singolo asse introdurrebbe alcuni problemi con gli attraversamenti per il rendering e la fisica quando si agisce da determinati angoli non ottimali. Naturalmente, potresti anche eseguire RLE su 3 assi contemporaneamente, triplicando il costo di archiviazione o su 6 assi (-x, + x, -y, + y, -z, + z) come ulteriore ottimizzazione.
Quindi, per rispondere alla tua domanda (o no!)
Non ho intenzione di rispondere direttamente a quale tipo di hardware, ma penso che osservarlo da una prospettiva a otto inizia a darti un'idea di cosa sia effettivamente possibile su quale tipo di hardware. Ti incoraggio a percorrere questa strada, se vuoi davvero saperlo, potrebbe essere più semplice implementare effettivamente un semplice ottetto sparso(vedi la carta di Laine tra i riferimenti) e posiziona un guscio sferico di voxel di superficie, e vedi com'è l'utilizzo dello spazio risultante. Fai un passo avanti da lì. Guarda quanto lontano puoi arrivare prima che la memoria del tuo sistema inizi a cedere. Ciò non richiede di scrivere un renderer a meno che non si desideri visualizzare. Ricorda anche che è meglio farlo sulla CPU: le GPU in generale non hanno la capacità di memoria per affrontare i problemi di questa scala. Questo è uno dei motivi per cui Intel sta cercando di passare a processori estremamente paralleli: i vantaggi di GPGPU, che è meglio in questo genere di cose, possono essere applicati a uno spazio di memoria molto più vasto senza i colli di bottiglia del bus di sistema da affrontare. Probabilmente ce ne sono altri qui, o su matematics.stackexchange.com,
In termini di requisiti di distanza infinita per la vista, certo, ma la domanda si riduce sempre a "quanti dettagli a quale distanza". Il rendering di dettagli infiniti richiederebbe risorse infinite. È qui che entra in gioco il mipmapping variabile per scena. Inoltre, tieni presente che tutte le strutture di dati rappresentano un compromesso di velocità per lo spazio o viceversa. Ciò significa rendering meno / più lento, se si desidera un mondo più ampio per lo stesso sforzo ingegneristico.