A scheme for compressing
destructible voxel models is presented, along with a series of methods for
real-time rendering, collision detection and destruction. The presented compression
scheme uses run-length encoding to significantly reduce the memory required to
store voxel models, showing average compression ratios of 50:1. The data is
manipulated in real-time by the CPU and GPU, which each store a copy of the data
in a format most suited to their usage. The voxel models are rendered on the
GPU by passing the floating point 3D start position and the length of the
run-length segments to the geometry shader. The geometry shader then creates a
cuboid, using triangles to represent these voxels. Collisions are found on the
CPU by binary searching an array of integer 1-Dimensional start and end points
of the run-length segments. The voxel model is destroyed in real-time by updating
both the CPU and GPU versions of the data. The segments represented by these
copies of the voxel model are shrunk and/or split when voxels are removed. The
implemented application managed to achieve interactive frame rates but it was shown
to be fill rate bound. Under the correct conditions the methodology could
achieve real-time frame rates.
http://volumetricworlds.blogspot.co.uk/