论文部分内容阅读
随着计算机图形学的快速发展,真实感图形学已经成为计算机图形学的核心内容之一。全局光照计算是场景绘制迈向真实感的一个必要手段,如何实现更好的全局光照算法,在更短的时间内生成高质量的图像是需要我们不断努力的研究方向。
光子映射是一种简单、灵活、功能强大的全局光照渲染算法,有效地解决了经典的光线跟踪算法不能模拟的辉映和焦散等特殊的光学现象,和辐射度方法比较,光子映射的优势是不需要将场景进行预先剖分而且能处理非漫反射表面。
近几年,由于可编程图形硬件的快速发展,基于GPU的全局光照算法成为真实感绘制的研究热点。CUDA首次为程序开发人员带来了类似C语言的GPGPU程序开发环境,使程序开发更加灵活高效。
本文主要的研究工作如下:
1、研究了在CPU上实现光子映射算法的具体过程,主要有发射光子、追踪光子、存储光子、光强估计和渲染,并对每个过程中用到的技术和方法进行了详细地介绍。
2、研究了CUDA的编程模型,并分析了CUDA编程难点。在CUDA上实现光子映射算法的过程和在CPU上基本相同,不同点主要包括:并行发射光子、伪随机数的生成、用循环实现追踪光子的递归过程、用栈构建平衡kd-tree。通过对同一场景进行渲染测试,光子映射在GPU上的渲染速度比CPU上快6至8倍。
3、辐照度缓存算法是一种用来加速漫反射面的间接光照计算的全局光照算法,近两年成为全局光照算法新的研究热点之一。本文对实现辐照度缓存算法的关键步骤进行了详细地说明。
4、利用光子映射和辐照度缓存的各自优势,对原有的辐照度缓存算法进行改进:通过对全局光子图中光子的位置来生成光照缓存记录,实现视点无关的辐照度缓存算法;另外,通过对全局光子图中的光子进行辐照度的预计算,进一步优化算法。通过对同一场景进行渲染测试,当光子数目较大时,本文的改进算法相对光子映射有速度上的优势;当光子数目较小时,本文算法无论在速度上,还是在渲染的结果上,相对辐照度缓存算法更具优势。