一句话:通过虚拟化 treelet 队列、光线虚拟化、动态队列切换与 warp 重打包,显著提升 GPU 光线追踪性能。
实时渲染中光线追踪常因帧率下降而受限。已有工作将 BVH 划分为较小 treelet,并集中遍历访问同一 treelet 的光线,从而在专用加速器上减少内存流量,但直接应用于 GPU 效果不佳。本文提出 Virtualized Treelet Queues:光线虚拟化终止已发射 trace ray 的 raygen shader,增加并发光线数量与缓存复用机会,并回收 CUDA core 以运行更多 raygen shader;动态 treelet 队列在遍历模式间切换以提高效率;warp 重打包提升 RT 单元的 SIMT 效率。仿真显示,在 LumiBench 全部场景上用路径追踪、每像素一个样本、每光线最多三次反弹时,相比带光线追踪加速的基线 GPU 平均获得 95% 加速。
Despite advances in hardware acceleration, ray tracing use in real-time rendering is limited and often lowers frame rates, leading users such as video game players to disable the feature entirely. Prior work has shown that dividing the BVH tree into smaller subtrees (treelets) and traversing all rays that visit a treelet before switching treelets can significantly reduce memory traffic on a specialized accelerator, but there are many challenges to applying treelets to GPUs. We find that a naive treelet implementation is ineffective and propose optimizations to improve performance. Virtualized Treelet Queues consist of two main components. Ray virtualization increases the number of concurrent rays in flight to create more cache reuse opportunities by terminating raygen shaders that have already issued their trace ray instruction, reclaiming CUDA cores and allowing more raygen shaders to be executed. To take advantage of the increased concurrent rays, we propose a dynamic treelet queue architecture that dynamically switches between traversal modes to increase efficiency. We also find that performing warp repacking boosts SIMT efficiency of warps in the RT unit which is crucial to achieving good traversal performance with treelet queues. Our simulations show virtualized treelet queues achieve on average 95% speedup compared to a baseline GPU with ray tracing acceleration across all scenes in LumiBench rendered with path tracing at one sample per pixel with three max bounces per ray.