论文部分内容阅读
光线跟踪算法是计算机图形学的一个核心算法,在真实感图形绘制中有着十分重要的地位。光线跟踪算法以其高度逼真的渲染效果已经在离线渲染领域得到广泛的应用,随着人们对交互系统中图形的真实感要求越来越高,越来越多的研究人员开始研究实时的光线跟踪渲染算法。但是,与高真实感图形相对应的,光线跟踪需要庞大的计算量和时间开销。通过使用加速结构并且利用GPU的并行计算能力来提高光线跟踪算法的速度是近年来的一个研究热点。光线跟踪算法中光线的并行性使它适合利用GPU硬件级别的并行提高速度。GPGPU技术的快速发展使基于GPU的编程变得比较容易,作为最新的GPGPU技术,DirectCompute的线程模型和内存模型使开发者可以直接控制线程的分配。NVIDIA显卡和AMD显卡对DirectX的支持使DirectCompute技术具有巨大的发展潜力。加速结构是提高光线跟踪算法速度的关键,它的核心是分割方法,在介绍均匀网格的分解度及KD-Tee和层次包围盒的SAH分割成本估算模型的基础上,基于PBRT中的算法,编程实现三种加速结构在CPU中的创建和在GPU中的遍历。针对CPU中的部分数据不能直接复制传递给GPU的问题,改进了相关的节点数据结构和对应的创建及遍历算法。根据光线跟踪的基本原理,将Whitted光线跟踪算法分为三个阶段:主要光线生成、求交和计算颜色。同时考虑场景模型的装载,整个光线跟踪渲染器包括:场景装载、创建加速结构、主要光线生成、求交和计算颜色五个部分。前两部分在CPU中实现,后三部分在GPU中实现。在此框架基础上,采用面向对象的编程方式,实现了一个完整的光线跟踪渲染器。光线跟踪渲染器的运行结果显示:采用均匀网格和层次包围体加速结构时,基于DirectCompute的光线跟踪算法可以实现对常见的图形学模型的实时渲染。此外,采用不同复杂度的场景模型测试和比较三种加速结构的性能,结果表明层次包围盒的加速效果最好。同时,层次包围盒的编程简单、能更好的适应图元分布不均匀的场景,因此,层次包围盒可作为基于GPU的光线跟踪算法首选的加速结构。