论文部分内容阅读
作为一种计算机绘制方法,光线跟踪具有很多优点,可以比较真实、自然的模拟阴影、反射、折射等光照效果,但由于绘制速度较慢,一直没有在实时绘制中得到应用。不过,随着硬件水平的提高和算法的改进,实时光线跟踪逐渐可行。虽然光线跟踪通常使用CPU计算,不过GPU计算能力越来越强大,通用编程能力也越来越完善,尤其是CUDA通用编程模型的出现,因而使用GPU进行光线跟踪,得到了越来越多的关注。
在上述背景下,本文研究如何在CUDA架构下,使用最新体系结构的GPU,进行实时光线跟踪。最基本的实时光线跟踪系统,由生成加速结构和光线跟踪两部分组成。本文对使用CPU和GPU生成均匀网格都进行了尝试,结合使用GPU进行光线跟踪,实现了两个实时光线跟踪系统。
对于光线跟踪部分,权衡各种加速结构的利弊,选择均匀网格作为加速结构。针对CUDA的特点,提出了一个面向实时的光线跟踪框架,并优化了数据存储。鉴于光线一致性对遍历速度的重要性,分析了CUDA线程的划分对光线一致性的影响。
分析了均匀网格分辨率对均匀网格生成速度和光线跟踪速度的影响,在此基础上,使用CPU生成均匀网格,实现了一个基于CPU-GPU混合的实时光线跟踪系统。与基于kd树的实现相比,生成速度优势明显,但总体性能稍差。
现有的并行生成均匀网格的方法,无法直接应用于GPU。针对CUDA架构的特点,本文提出两个在GPU上并行生成均匀网格的算法,即sort-middle×sort-first生成算法和基数生成算法,与CPU的生成速度比,有很大优势。进而实现了一个完全基于GPU的实时光线跟踪系统。由于生成速度的巨大优势,测试中的大部分场景的绘制速度优于基于kd树的实现。