사람들은 종종 복셀이 많은 저장 공간을 차지한다고 생각합니다. 평탄한 지형을 비교해 보겠습니다. 높이 맵과 복셀을 비교해 보겠습니다. 높이 맵: 16비트, 8192x8192 = 128MB 복셀: 4x4x4 브릭 = uin64 = 8바이트. 8k^2 지형 표면(32MB)을 덮으려면 2048x2048 브릭이 필요합니다. SVO/DAG 상위 레벨은 10% 미만을 추가합니다.
위의 추정치는 낙관적입니다. 지형이 험준한 경우 대부분 두 개의 벽돌이 겹쳐 쌓이게 됩니다. 따라서 64MB의 리프 벽돌이 생성됩니다. SVO/DAG 상위 레벨은 공유 자식 포인터를 사용하므로 크게 증가하지 않습니다. 총 크기는 70MB 미만입니다. 그래도 이득입니다.
각 브릭은 uint64 복셀 마스크(4x4x4)와 32비트 공유 자식 데이터 포인터(4바이트 정렬로 16GB의 복셀 데이터를 처리할 수 있음)를 갖습니다. 표준 브릭은 12바이트입니다. 리프 브릭은 8바이트에 불과하며, 자식 포인터가 없습니다(후위 처리가 SIMD 일관성을 저해하지 않음).
흥미로운 점은 옥트트리가 트리 레벨에 비트를 재귀적으로 저장한다는 것입니다. 각 레벨에 4x4x4 브릭을 저장하면 레벨당 2비트의 정밀도를 얻게 됩니다. 따라서 8레벨은 높이 기준으로 16비트의 정밀도를 갖게 됩니다. 하지만 상위 비트는 여러 복셀 간에 공유됩니다.
정정: 여기서는 2x2x2(옥타브) 트리가 아니라 4x4x4 트리에 대해 이야기하고 있습니다. 물론 표준 옥타브 트리는 각 영역을 각 축에서 두 개로 나누어 각 좌표에 대해 1비트의 정밀도를 더합니다.