沉浸光与影的世界:剖析光线追踪技术
技术空间
在电脑的图形领域,一直将最真实的效果作为发展的主要方向,众多机构和公司正为在3D游戏或影视的虚拟世界中实现更逼真的光影效果而努力。其中,光线追踪被看作是虚拟世界走向真实、游戏达到电影级效果的关键技术之一,然而它对硬件性能的要求比较高,因此应用还未得到普及。
前不久,美国Caustic Graphics公司宣布,他们已经在光线追踪(Ray Tracing)方面取得了重大突破,其研发的第二代光线追踪技术基于标准化平台“CausticRT”,由CausticOne硬件加速卡和CausticGL软件开发接口组成,在速度方面能达到目前顶级桌面显卡的200倍,这条消息引起了业界的高度关注,也让我们看见了实时光线追踪技术得到普及的希望。
一、光线追踪技术解析
1.具有真实的物理效果
追溯原理,光线追踪是一种计算密集型的绘图方法,基于光线与物体的交互作用,可使用计算来模拟3D场景中的光线。自然界真实的光是很复杂的,当光线从光源被抛射出来,在它们经过物体表面时,光线追踪技术采用种种符合物理光学定律的变换,能够对光线反射、折射以及进入人眼的光线视角和强度这些数据进行分析,将使得游戏呈现的画面更为符合自然界的形态和光线运行规律,从而让用户能在电脑中看到和现实中一样的光影感觉。
光线经过物体表面可以产生反射和漫反射,而透过物体则可以产生折射和散射。又如很多物体表面并不是单一属性的,可能由光照射而引起不同的光亮效果,同时也有来自环境中其他景物的反射光在物体表面产生的镜面效果等。而光线追踪技术能更真实地反映出光的传播过程,而不仅仅是贴图。所以,光线追踪技术对于光线的反射或折射有更准确的模拟效果,且效率更高,对于追求高质量图像效果的用户而言,光线追踪是最适合的实现方式。

2.游戏中的反射效果
其实光线追踪技术并非新出现的技术,早在几年前便已应用在了电影如《指环王》、《变形金刚》中,并为Quake 3和Quake 4光线追踪特别版游戏带来了翻天覆地的变化。在Intel积极推行这项技术后,它还被引入到新款游戏《敌占区:雷神战争》中。在Quake4中,光线追踪可以实现光线的碰撞预测,这个算法和游戏中的射击效果联系起来,通过武器射出光线后就可以交由光线追踪程序来处理以后的事情,它通过光线做碰撞来获取渲染所需的颜色值。

光线追踪还体现在游戏中的水面细节渲染特效上,因为自然界的水面可以反射周围环境事物的光线,所以我们可以通过水面看到岸边物体的倒影。在Quake4的许多地图中使用了一些动态的设置去模仿水面波浪的高低不同。一些光线用来处理水面的倒影,再用一些光线处理水面的折射,这样就可以在有倒影的基础上还让它随水面而波动起伏,这样的处理让游戏场景看起来更加真实。

二、 目前实现光影方法的对比
众所周知,无论是游戏还是影视场景,要想达到更逼真的效果,不仅依靠其中物体的建模数量,更取决于光影效果的应用。目前一般采用光栅化渲染、光线投射、扫描线渲染等技术实现光影效果。
1.光栅化渲染
√:渲染速度快,被游戏广泛应用
×:分辨率低、细节失真、缺少动态效果
光栅化渲染(Rasterization)是常见的技术之一,目前绝大多数大型3D游戏使用了它。它可在3D渲染过程中,将顶点渲染单元所生成的大量数据送到像素渲染单元作像素级别的渲染。在运算过程中,将顶点数据分组成为三角形进行光栅化,以达到更逼真的效果。作为一种将3D模型以及色彩信息转换为像素的技术,光栅化渲染是目前的主流技术。而显卡GPU的升级就是重新设计了三角形处理的算法,让其处理过程大大加速,与像素渲染步骤的衔接也得到同步强化,让处理能力更高效,效果更出色。
虽然光棚化渲染的速度比光线追踪快得多,但它存在的弊端也是显而易见的。在采用光栅化渲染的《孤岛惊魂》游戏中,水面的图像中可以看到岸边山脉的倒影,而其他如树木、岩石、船骸和小屋等物体的倒影则完全没有。同时把游戏中的水面倒影放大来看,可以发现它的分辨率非常低,细节严重失真,并且最遗憾的是它还是静止的贴图。这种现象在目前游戏中十分普遍,即使是目前画质最精细的《孤岛危机》,它的海面仍然无法完全显示出周围事物的倒影。
2.光线投射与扫描线渲染
√:对硬件要求不高,适合多线程处理,被3D软件广泛采用
×:软件渲染,静态贴图,算法较老
光线投射(Segment-based Ray Casting)和扫描线渲染(Scanline Rendering)是3D软件常用的图形技术。其中光线投射利用物体数据的一致性,将连续的具有相似属性的重采样点合并成一个片段进行融合,从而减少融合操作的次数和时间。通过软件实现的光线投射算法可使性能提高约30%,并且它对GPU的要求不高。它被应用在3D软件中渲染地形、建筑物等模型上,适合影视演示。

扫描线渲染可以实现较好的光影效果,它使用一条或多条“扫描线”去渲染每一个图像,在多处理器系统中,不同的线条会被分开使用不同的CPU或GPU处理。但这种算法比较老,早在3DMAX6.0时就提供了扫描线渲染器Renderman,随着MentalRay、Brazil、FinalRender等渲染器在3DMAX、Maya等3D软件中的广泛应用,扫描线渲染已经走到了尽头。相比光线追踪,光线投射和扫描线渲染只是采用了贴图渲染的基本算法,不能更真实地模拟自然光线的运动轨迹,特别是反射和阴影等动态效果就更难实现了。
3.光线跟踪
√:效果真实,实时模拟光线物理形态
×:对硬件要求较高,耗时久
通过比较,我们已经可以看到光线跟踪比光线投射和扫描线渲染的效果更真实,优势更明显。那为什么这种技术没有在游戏中得到广泛应用呢?其实还是因为性能。扫描线等算法利用了数据的一致性从而在像素之间共享计算,但光线跟踪通常是将每条光线当作独立的光线,每次都要重新计算。由于实时光线追踪计算量较大,所以在3D游戏等领域,即使是目前最强劲的桌面硬件平台,要想绘制VGA以上分辨率的图像,不仅耗时漫长,而且也达不到每秒20帧以上的最低实时3D渲染的基本要求。这也是近几年来在3D渲染领域,光栅化渲染技术仍占主导地位的根本原因。

三、众多厂家推动发展
虽然从技术原理上来看,实现光线追踪并不复杂,但要想实现更逼真的实时光线追踪,需要对大量的光线进行多次与场景中物体的交叉计算,这对目前的硬件是个巨大考验。所以,硬件及软件算法都是这项技术走向普及应用的障碍。
Intel、AMD、NVIDIA等业内主要厂商虽都将光线追踪作为硬件未来突破的目标,但在未来的GPGPU中能否对光线追踪提供全面支持,目前各大厂商仍莫衷一是。为此,Saarland大学的图形小组开发出了OpenRT函数库,该技术包含一个高效的光线追踪处理核心和语法与目前OpenGL类似的OpenRT应用程序接口,让用户能在游戏场景设计中调用这些应用程序接口,实现实时的光线追踪效果。
一些厂家在此方面的努力也正逐步接近成功,如Intel曾声称“Intel希望借助Larrabee来推动其‘视觉计算’项目,可编程的显示计算通用架构芯片通过多个IA核心组成的GPU战胜NVIDIA和AMD,而光线跟踪技术也会成为当前光栅渲染技术的埋葬者”。也有厂家认为“把光线追踪技术加入到GPU芯片中实现即时渲染,起码还需要好几年的时间,如果你希望得到两倍性能的增加,你将最短在4~5年的时间内才能看到,GPU才会有强大的性能去渲染这样的实时渲染场景。”

小结
与现在普遍使用的光栅化渲染技术相比,实时光线追踪技术可带来更接近真实效果的电影级图形和光影物理效果,如果能突破硬件应用上的性能瓶颈,其成为未来主流的图形渲染技术指日可待。不管厂家对此技术是持乐观态度还是谨慎态度,可以肯定的一点就是,实时光线追踪技术逐步取代光栅化技术的时代即将到来,到那一天,让虚拟走向现实,让游戏实现更逼真的特效,不再是梦,而因此带来的硬件业变革也会让人为之惊叹。