摘要:基于GPU的光线跟踪算法是当前图形学研究的一个暖门,也是将来用于广告、片子、游戏等娱乐工业的枢纽技术。本文论述了如何对基于GPU的光线跟踪算法入行实现,以及利用各种加速结构,加速算法实现,入步算法执行效率,并对各种加速结构的效果入行了比较研究。
枢纽词:GPGPU 光线跟踪 BVH KD-Tree
本文来源于免费范文网 ,提供精品范文计算机网路 ,计算机应用论文。1.引言
近年来,CPU无论在运算能力,仍是在可编程性上都得到了大幅的入步,GPU已经在需要大量运算的密集运算领域施铺了举足轻重的作用。各种基于CPU的密集运算被移植到GPU上,以利用GPU巨大的运算能力,加速整个算法的运算过程。光线跟踪算法是天生真实感图形的一种非常重要的方法,在片子、游戏、广告等工业,获得广泛的应用,而光线跟踪算法也是典型的密集运算算法,利用原始的基于CPU的光线跟踪渲染一幅图片长短常耗时的操纵。因此,假如能够将CPU上的光线跟踪算法,映射到CPU上,加速光线跟踪算法的执行时间,将会带来巨大的经济效益。因此,基于CPU的光线跟踪算法已成为海内外科研职员的研究暖门。
2.基于GPU的光线跟踪
本文来源于免费范文网 ,提供精品范文计算机网路 ,计算机应用论文。2.1 相关工作
当前,主要由两种方法利用CPU来加速光线跟踪算法。第一种是Carr等人提出来的,将CPU转换为一个蛮力的执行光线一三角形求交的计算器,而将任何的光线天生以及着色过程在CPU上完成。这就需要CPU依然执行尽大部门的渲染工作。C arr等人指出,在ATI Radeon 8500上,每秒最快能够执行1亿2千万次的光线一三角形求交。同时,作者也指出,因为GPU的单精度浮点的限制,图片上依然存在一些不太真实的地方。
第二种方法由Purcell等人提出的,改种方法将整个光线跟踪器都移植到CPU长入行实现。从光线的产生,加速结构的遍历,到最后的着色过程都在GPU上执行。此后,有良多相同的项目都是基于Purcell的模型长入行的。
本文来源于免费范文网 ,提供精品范文计算机网路 ,计算机应用论文。2.2 GPU上的光线跟踪算法的映射方式
将传统的CPU上执行的光线跟踪算法,映射成为一个GPU协助的,或者基于GPU的光线跟踪器有众多方法。下面重点先容Purcell提出的映射模型,以及在本文的实现中提出的一个基于CPU的Whitted模型的光线跟踪器。该光线跟踪器的布局如图2.1所示:
本文来源于免费范文网 ,提供精品范文计算机网路 ,计算机应用论文。在Purcell的论文中,它将光线一三角形求交,以及遍历过程分离成两个独立的遍历内核和求交内核。本文的实现中,也按照上述模型图,将光线跟踪算法分解成光线天生,光线一三角形求交,着色这三个步骤。
在对光线入行跟踪之前,需要天生从视点指向屏幕的原始光线( primary ray)。在一个GPU上,能够使用光栅器的插值的能力,在一个单一的内核调用中,产生所有的原始光线。
本文来源于免费范文网 ,提供精品范文计算机网路 ,计算机应用论文。给定观察矩形(被采样用于产生图片的投影平面的一部门)的四个角,以及视点,首先计算出这个视锥体的四条边线。假如让光栅器在这4条光线之间,按照512×512规格,在这四条光线之间按照方向入行插值,终极就可以获得能够产生一幅512×512图片(一个像素一个采样点)的所有原始光线的方向。同时能够将这些方向存储在一个纹理里,并把它作为求交内核的输进。所有的原始光线具有相同的起始点,但是仍旧把它存储在一个同方向纹理具有相同维度的纹理内。由于当天生暗影光线或者反射光线的时候,光线的原点会发生改变。
求交内核把光线的原点,方向,以及场景的描述作为输进数据。在内核被调用数次之后,我们对于每一个像素输出一个击中记实。假如一条光线击中了场景中的某个三角形,返归击中点的3个重心坐标,以及相关的被击中的三角形。此外,还将输出被发现的交点沿光线的间隔,以及被击中三角形的材质。这就需要使用5个浮点数值组成一个击中记实。纹理只能够支持4个颜色通道( RCBA),所以,假如能把击中记实裁减到4个值,那么将长短常有益的。