Bounding Volume Hierarchies (BVHs) are an important element in ray-based rendering procedures (e.g., path tracing). They accelerate spatial queries and cut the time for rendering images immensely. Unfortunately, a direct implementation of a BVH can require a considerable amount of memory. If it has to be kept on the GPU, it takes up space that could otherwise be used for actual content, limiting the amount of data that can reside on the GPU at any given time.
BVHs can be stored with different techniques to minimize required memory, but most of these techniques focus on lossless compression. Lossy compression, as we know it e.g. from the JPG format, can achieve much better compression rates and keep the differences to the original at a limit. Based on these properties, we want to investigate opportunities for lossy compression of BVHs for rendering.
You should first establish background knowledge on lossy compression methods in computer graphics (using spherical harmonics, wavelets and similar methods). After that, you should consider, devise and test different methods to apply lossy compression to BVHs. Perhaps you also want to investigate a different acceleration structure that is isomorph to a BVH instead, such as a dual-split tree. You should prepare an exhaustive test suite of representative scenes in which you can evaluate how much memory can be saved with your compression technique, how it affects performance and precision.
- Knowledge of English language (source code comments and final report should be in English)
- Knowledge of spatial acceleration structures and their application in rendering (path tracing)
- Knowledge of C++ and Qt is advantageous, but not necessary
- Ideally, previous knowledge of relevant compression methods
- More knowledge is always advantageous
The project should be implemented as a standalone test-suite, which allows to compare performance and memory consumption.