ボクセルは多くのストレージ容量を必要とするとよく思われがちです。滑らかな地形で比較してみましょう。高さマップとボクセル。高さマップ:16ビット 8192x8192 = 128MB ボクセル:4x4x4 ブリック = uin64 = 8バイト。8k^2の地形面をカバーするには2048x2048 ブリック = 32MBが必要です。SVO/DAGの上位レベルは10%未満増加します。
上記の見積もりは楽観的なものです。起伏のある地形では、ほとんどの場所で2つのブリックが重なり合うことになります。そのため、リーフブリックは64MBになります。SVO/DAGの上位レベルはそれほど増加しません(共有子ポインタを使用しているため)。合計は70MB未満です。それでも十分です。
各ブリックは、uint64 ボクセルマスク(4x4x4)と32ビットの共有子データポインタを持ちます(4バイトアライメントのため、16GBのボクセルデータをアドレス指定できます)。標準ブリックは12バイトです。リーフブリックは8バイトで、子データポインタを持ちません(ポストフィックスはSIMDコヒーレンスを損ないません)。
興味深いのは、オクトツリーがビットをツリーレベルに再帰的に格納するという点です。各レベルに4x4x4のブロックを格納すると、レベルごとに2ビットの精度が得られます。つまり、8レベル = 高さの精度は16ビットになります。ただし、上位ビットは多数のボクセル間で共有されます。
訂正:ここで私が話しているのは4x4x4のツリーであり、2x2x2(oct)ツリーではありません。標準的なoctツリーでは、当然のことながら、各領域を各軸で2つに分割し、各座標に1ビットの精度を追加します。