onimatrix wrote:
I haven't follow the "volume divided in chunks" path, but instead the -IMO much easier and intuitive- "one volume = one chunk" with a layer on top of all chunks coordinating PutVoxel/GetVoxel/Save/Load/Generate operations into all volumes seamlessly.
I'm not saying this is bad, but it is a bit redundant. You are talking about about storing several volumes and then providing a coordinating layer for getVoxel(), etc. But this is what PolyVox already provides, in that a volume is stored as a number of Block objects (each with a getVoxel() function), and then the volume's getVoxel() function calls through to the one in the appropriate block.
The reason that bezyend is using multiple volumes is in order to page them from disk on demand in order to create infinite terrain. There might be other reasons - if for example you had a space scene where each volume was an asteroid and there were large gaps between them. But generally it not how I anticipated PolyVox being used (though sometimes it's good to think outside the box

).