これは、使用する空間サブディビジョンメソッドに依存しますが、すべてのサブディビジョンメソッド(任意の圧縮メソッドと同様)は、データ構造のオーバーヘッドやその他の論理的/数学的な要因により、最終的にはそれ以上圧縮できない場所でパンします。例はoctreesにあります。意味のあるトラバーサルを有効にするには、オクツリーの各ノードについて、その親または子(データ構造アーキテクチャの扱い方に応じて異なります)へのポインタを保持する必要があります。どのツリー構造にもn個の子を含めることができます。1:nの比率が低いほど、スペースをより効率的に使用できます。その結果、ツリートラバーサルのオーバーヘッドが大きくなります。これは、同じ数の葉のボクセル(この場合、約510兆)を含む祖先ノードが必要になるためです。これらの表面積を表す)。
インスタンスでの主な問題はストレージコストであり、惑星全体(またはその一部)をかなりの距離からレンダリングすることであることを考えると、八分木よりも推奨するデータ構造はありません。ミップマッピングは必要です。最も近い2の累乗での直径1280万メートルは2 ^ 24 = 1680万です。トラバースする24のオクツリーレベルは、膨大な量の分岐に相当します。GPUとCPUの両方にとって非常にコストがかかります。しかし、正しいことを行えば、一度にいくつかのレベルをトラバースするだけで済みます。ただし、必要なスペースの量を考えると、代替手段はほとんどなく、はるかに少ないです(以下を参照)。
octreesのミップマッピング機能は、あなたが説明するような大容量のボリュームに対して非常に強力なツールにするものです。他のすべての既知のサブディビジョン方式(KDツリーを除く)とは異なり、octreeはレベルごとのサブディビジョンを最小限に保ちます。つまり、ミップマップレベル間の視覚的および物理的な差異も最小限に保たれます。ツリーの下。
一方、階層的なグリッドトラバーサルが最小限に抑えられる世界を生成したい場合は、スペースを犠牲にして速度を上げる必要があります。
理想的な1:n比について言えば、この点でkdツリーよりも細かい構造はありません。octreeが各軸で2に分割され、2 ^ 3 = 8の個別の子セルが生成される場合、kdツリーはサブディビジョンレベルごとに1回だけ分割されます。この問題は、分割する超平面を選択する必要があり、この超平面は3つの軸のいずれかを中心に選択できることです。空間的には最適ですが、3Dトラバーサル(レイマーチ時、物理やレンダリングにオクツリーを使用する場合の基本的な操作など)は、オクツリーよりもはるかに難しくなります。動的なポータルタイプの構造を記録しておく必要があるためです。個々のkdツリーノード間のインターフェース。
RLEは圧縮への別のアプローチですが、RLE圧縮は1次元であり、それが動作する軸を選択する必要があるため、このような問題(操作のベースが球形である場合)に適用することは多くの点で困難です。惑星では、極軸を選択する場合がありますが、単一軸を選択すると、特定の最適でない角度から動作するときに、レンダリングと物理のトラバーサルに特定の問題が発生します。もちろん、さらに最適化するために、RLEを3軸で同時に実行してストレージコストを3倍にするか、6軸(-x、+ x、-y、+ y、-z、+ z)で実行することもできます。
だからあなたの質問に答える(またはしない!)
私は、どのようなハードウェアのに答えるに直接移動するつもりはないが、私は視点が八分木からそれを見て考えるから始まるあなたのハードウェアの種類に、実際に何ができるかのアイデアを与えるために。このルートをたどることをお勧めします。本当に知りたい場合は、単純なスパースオクツリーを実際に実装するのが最も簡単かもしれません。(参考文献のレインの論文を参照)、表面ボクセルの球形シェルをその中に配置し、結果として生じるスペースの使用法を確認します。そこからステップアップ。システムメモリが解放され始めるまでの距離を確認してください。これは、視覚化が必要でない限り、レンダラーを作成する必要はありません。また、これはCPUで行うのが最適です。GPUは、概して、この規模の問題に対処するためのメモリ容量を備えていません。これがIntelが超並列プロセッサへの移行を検討している理由の1つです。この種の点で優れているGPGPUの利点は、システムバスのボトルネックが対処しなくても、はるかに広いメモリ空間に適用できます。おそらく他にもここにあるか、mathematics.stackexchange.comにあります。
無限視距離の要件という点では確かですが、問題は常に「どのくらいの距離でどれだけ詳細に」かということになります。無限の詳細をレンダリングするには、無限のリソースが必要になります。そこで登場するのが、シーンごとに可変のミップマッピングです。また、すべてのデータ構造は、速度とスペースのトレードオフ、またはその逆を具体化していることに注意してください。同じ量のエンジニアリング作業でより大きな世界が必要な場合は、レンダリングが少ない/遅いことを意味します。