This task concerns the implementation of a compression technique for large sparse datasets (e.g. Volumes). This is done by subdividing the dataset into smaller grids, and discarding the ones that do not hold any meaningful data.
This task is part 1 of my GSoC 2018 project.
- Make this compatible with the Mesh Volume speedup. Because of they are currently mutually exclusive, using this implemntation will actually slow down rendering.
- Modify sparse tiles to support generic types (currently only supports float4, should be fine as long they have a > operator overloaded).
- Add support for all Volume attributes (currently only supports color).
- Change detection method for calling sparse grid creation (currently, a new ImageDataType was created, but will probably change this to a bool member of Image).
- Add support for CUDA and OpenCL.
- Implement lookup for tricubic interpolation (currently just throws an assert if a compressed texture tries to call it).
- Remove the SparseTile struct altogether and just treat tiles abstractly.
- Create a wrapper class for device_memory's of SparseTiles?
- Support 2D tiling and sampling?
- Make threshold value a user-inputted value?