论文部分内容阅读
近几年来,随着GPU运算能力和可编程性的大幅提高,GPU已经在需要大量运算的密集运算领域发挥了重要的作用。越来越多的研究人员开始把各种基于CPU的密集运算引入到GPU上,从而利用GPU巨大的运算能力,加速整个算法的运算过程。光线跟踪算法是生成真实感图形的一种重要方法,在电影,游戏等娱乐产业,获得广泛的应用,而光线跟踪算法也是典型的密集运算算法,利用原始的基于CPU的光线跟踪渲染一幅图片需要大量的时间。因此,如果能够将CPU上的光线跟踪算法,映射到GPU上,加速光线跟踪算法的执行时间,将会带来巨大的经济效益。因此,基于GPU的光线跟踪算法成为国内外科研人员的研究热点。本文将着重探讨如何将基于CPU的光线跟踪算法映射到GPU上。由于早期的GPU主要用来进行图形处理,从而利用GPU来做通用计算,需要一定的转换过程。当前的GPU已经具有了强大的可编程性,可以将GPU视为一个可并行执行的流处理器,基于这种流处理模式,利用片段着色程序,具体实现了GPU上的光线跟踪器,以及相对应的三种不同的加速结构。对于加速结构在GPU上的表示形式,以及遍历方法的实现本文给出了具体的解决方案。另外,本文还对于均匀栅格(Uniform Grid),KD-tree,包围体层次(BVH)这三种结构实际在GPU上的加速效果进行了试验比较,以此来确定哪种加速结构对于GPU而言更加适合。本文所作的主要研究和创新性体现在以下几个方面:1)设计并实现了一个基于GPU的光线跟踪器,将光线跟踪算法映射到GPU上。2)详细的讨论了均匀栅格(Uniform Grid),KD-tree,包围体层次(BVH)这三种不同的加速结构如何在GPU上进行表示,在纹理中以何种数据布局来表示它们。又由于GPU中不存在像CPU那样的堆栈结构,所以,本文也探讨了如何在GPU上,以非递归的形式来遍历KD-tree,包围体层次(BVH)这样的树形结构。3)对于GPU上的这三种加速结构,本文还以相同的场景对其进行加速效果上的测试,从而找出何种加速结构对于GPU而言更加的高效。此外,本文还对GPU上的各种加速结构进行了性能上的优化,在前人的研究基础上,通过充分应用现代GPU所提供的更加强大的功能,和更加灵活的编程方法,对其进行了优化改进,从而更进一步的加快了它们的处理速度。在对测试结果进行的分析的基础上,本文得出的结论是:对于GPU上的加速结构而言,BVH的加速效果最好,并且在创建和遍历上都相对简单,易于实现。