Ray Reordering Techniques for GPU Ray-Cast Ambient Occlusion
Global illumination techniques, such as ambient occlusion, can be performed in a physically accurate way via ray casting. However ambient occlusion rays are incoherent. This means their computation is divergent causing a degradation of rendering performance. This problem is particularly acute on the GPU stream computing architectures which have performance issues with thread divergence. We reorder the rays, prior to the rendering step, to reduce this thread divergence issue. Rays which traverse
... Rays which traverse the same region of space are reordered in bundles in order to increase memory coherency. We demonstrate that ray reordering techniques enhance performance while rendering scenes with ambient occlusion rays. The question is how to best perform this ray reordering. Ray reordering for ambient occlusion requires the classification of millions of rays. Spending too much time reordering these rays can negate any rendering performance benefits. Our work surveys and tests several techniques for ray reordering. We achieved the best performance results using a compress-sort-decompress technique, which sorts hashed rays, where the hash key has 32 bits of size.