New PolyVox snapshot available

I’ve just uploaded a new snapshot of PolyVox. It’s been a while since the last one, and we’ve had a couple of cases recently of bugs being reported which have already been fixed in the Git version. So it seemed to be time to bring everyone up to date. Also we should be announcing our game in the next few days, and if this generates any more PolyVox users then we would like them to be up to date as well.

This snapshot does contain some new features but be aware that most of them are work-in-progress. The most interesting changes are:

  • VolumeResampler (WIP): This provides the ability to copy data from one volume to another, where the source and destination do not have to be the same size. That is, you can use this class to change the resolution of your volume data, and interpolation is performed where necessary. There is an example in PolyVox (SmoothLODExample) showing how this can be used to perform level of detail by changing the resolution of the volume rather than by decimating the resulting mesh. Another application would be to reduce the size of your volume before performing ambient occlusion calculations.
  • LowPassFilter (WIP): This essentially performs a blurring operation on the volume data. I’m currently using this as an approximation to ambient occlusion (to be presented in another blog post), and another application may be to smooth your volume data. Along with the VolumeResampler above, I believe we have the start of an image-processing pipeline for volume data and I expect more will be added to this in the future.
  • RawVolume: This is a new volume type which stores all its data as continuous memory rather than breaking it up into blocks. As such it should only be used for small volumes. I am using it as the output of ambient occlusion calculations as it can be copied directly to the GPU, and it may also be useful to people implementing their own paging system.
  • Volume Refactor (WIP): All volumes now derive from a common class called BaseVolume. This holds some common functionality  but there is no use of virtual functions. There is also some refactoring of the way the volume samplers are implemented. I hope these changes will be transparent to most users but they may affect those users who have defined their own volume type. If you fall into this category then have a look at the other volume classes and ‘VolumeSubclass’ in ‘TestVolumeSubclass.cpp’ for examples of how the volumes should now look.

You can download the snapshot from here. If you have any problems with this release then feel free to ask in the forums.

Share
This entry was posted in Uncategorized and tagged by David Williams. Bookmark the permalink.

About David Williams

David is a post-doctorate researcher at the University of Groningen, The Netherlands, where he is investigating GPU computing. Prior to this he worked in the games industry and wrote graphics/engine code for a number of PC/PS3/XBox titles. As well as making games he occasionally enjoys playing them, and also sometimes gets outside to do some photography.

Leave a Reply

Your email address will not be published.