Basically, RawVolume is just plain old 3D array of user data.
LargeVolume can be used for very, very good 3D-indexed containerm like std::map - and its BorderValue feature is making this container something perfect for this purpose.
I ended up using this for storing ordinary data, for example, data about chunk entities, players and so on, without even using polyvox surface extraction. My "Voxels" became pointers to classes with world paging data, and I hope that PagedVolume will still benefit from this kind of usage. Especially if we can manually serialize pages from PagedVolume. (This is feature that will greatly help everybody, but as of now, I ended up with my own paging implementation)
As for now, I do not use PolyVox containers at all. With only one exception.
In Crafterria, I keep my world in chunks of plain 1D arrays (with 3D indexing).
When I extract the surface, I copy the data from the World data to a PolyVox RawVolume...
Quote:
Very smart move - I still think that overlapping data causes more problems than it's worth.
...to a RawVolume slightly bigger than the requested chunk (taking 2 voxels for surrounding chunks) - because these voxels are required for normals. But then extract the mesh without this overlapping, so I solved my overlapping problems once, for a long time
And my chunk sections line up perfectly
And my lighting pass per chunk is now... 15ms
This is magic ;] ~1.2 seconds to light 8x8 world (64 chunks) - Faster than extracting their meshes, generating Splatting Index textures and generating the Light Texture itself
Soon, I will update the Crafterria post in Showcase -but I have a lot of work to do with it first.