How good are the best voxel compression algorithms?

Started by
14 comments, last by owl 12 years, 10 months ago
Triangulation turns out to be a good compression scheme ;)
Advertisement
Look into Perfect Spatial Hashing. Works quite well for sparse volume data, and can be decompressed on the fly with O(1) complexity.
Latest project: Sideways Racing on the iPad
The answer is data streaming. You're not going to fit every voxel of your world into memory no matter how much you compress it. The highest levels of detail should only be in memory when they are needed. So this means your engine will be shifting stuff in and out of memory constantly which makes your biggest problem memory fragmentation. My engine allows a voxel model to be any size (bytes), by creating a static data pool which is constantly analyzed and shifted around to provide the most relavent data. The renderer renders whatever is in that data pool- since the lowest voxel LODs are small, they are always in memory and something is guaranteed to be rendered- the question is at what LOD.
Looking at all these responses and thinking about "Megageometry" as Carmack would term it, or even those silly "revolutionary" voxel engines, and I'm just not seeing the potential here. Take a reasonably high resolution for geometry, just for a terrain, of say 512x512 per meter. 30 gigabytes per square kilometer at 1 bit per voxel. That's nuts, compression schemes will need to get far, far better for today's gameworlds to even fit onto a bluray, not to mention digital distribution. At least assuming your storing pure voxel data.<br>

Edit- Making this sensible then, you couldn't store giant terrains at ultra high resolutions. Individual models though, say a ten million voxel character, even at 16bits per voxel, would be 20mb, and that's fine. I guess you'd have to store things like terrain at low resolution, and all the texture data would probably be stored in a separate megatexture. Maybe you could store displacement maps and raycast into them for extra detail when needed.
Take a reasonably high resolution for geometry, just for a terrain, of say 512x512 per meter. 30 gigabytes per square kilometer at 1 bit per voxel. That's nuts, compression schemes will need to get far, far better for today's gameworlds to even fit onto a bluray, not to mention digital distribution. At least assuming your storing pure voxel data.
There's a few current games that use voxels, which fit perfectly fine on regular DVDs once compressed......(to triangles) ;)
Fractals could be of some use here. You go generating the world procedurally and you just store the "changes" in it instead of storing the whole thing.
[size="2"]I like the Walrus best.
I'm not sure if it'll work yet but if it does, I'll be able to represent about 50k voxels with just 4 bytes. That's with color, position, and normals.

That would mean each voxel uses about 0.00064 bits.

This topic is closed to new replies.

Advertisement