当前位置:首页 > 新闻资讯 > 科技生活 > 新闻
唱了多年的光线追踪,咋还普及不起来?
  • 2015/5/5 15:12:28
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:电脑报
  • 作者:
【电脑报在线】早在十多年前,业界基本就肯定了光线追踪这项技术对于3D图像质量的意义,但是到了2015年,也没有一款游戏真正使用了光线追踪。

早在十多年前,业界基本就肯定了光线追踪这项技术对于3D图像质量的意义,但是到了2015年,也没有一款游戏真正使用了光线追踪。事实上,自21世纪以来,无数厂商包括英特尔、NVIDIA都在不同场合演示了游戏中使用光线追踪的效果,阿卡酋长自己也早在2008年上海IDF上,亲眼看到Quake3使用光线追踪后的演示。那么为何到了现在,光线追踪这个技术还是难以在游戏中普及呢?

 

光线追踪,另一个3D世界

可能很多人对光线追踪还没有一个明确的概念,不过毫无疑问的是,要实现最为逼真的3D图像,那么采用光线追踪技术是最好的方法。事实上,我们在很多电影中,特别是好莱坞大片中,明知道一些场景是电脑CG计算,却难以分辨真假,这里面很大的功劳就是光线追踪技术。最为直观的就是,使用光线追踪的场景,在玻璃材质、液体的渲染效果上远超目前效果最华丽的3D游戏。


NVIDIA曾经演示的使用光线追踪的DEMO,几可乱真……

 

那么什么是光线追踪呢?光线追踪技术是由几何光学通用技术衍生而来,它通过追踪光线与物体表面发生的交互作用,得到光线经过路径的模型。简单而言,3D技术里的光线追踪算法,就是先假设屏幕内的世界是真实的,而在这个“真实的世界里”,对所有存在的光源产生的光线进行追踪,真实地反映出各种物体的光线折射、反射,反映投射、衍射等光线真实表现效果,从而构建出寂静真实的3D画面。你可以直观地想象:为什么你看得出来某些画面是CG而不是真实的呢?因为它没能真实地反映画面里的物体表现的真实光线反应。如果水面、汽车表面的所有光线反应都被真实地表现出来了,那么这个画面基本就达到照片效果,可以以假乱真了。

当然,具体地实现原理肯定要复杂很多,这里我们就不解释了。

 

 

无限逼真,光线追踪的优势

或许有人会问了,那么我们现在大型3D游戏中的特效和渲染已经很出色了,和光线追踪相比有什么区别呢?简而言之,我们现在3D游戏中的构造基础是基于光栅化技术,光栅化的目的是找出一个几何单元所覆盖的像素,我们所有的图形信息,包括各种特效都可以说是光栅化的应用。

 

如果简单对比光栅化和光线追踪两种方案,两者之间最大的区别可以说是实现规则。光线追踪的技术原理完全符合真实物理规则,而光栅化的各种方式则基于事先计算和预设。在大多数游戏中,光源的反射都是由贴图技术来完成,普通的环境贴图只不过是对一张静态图片进行处理,通过预设的效果来欺骗玩家的眼睛。即使是很多3D游戏中使用的动态立体贴图,也不过是多了一道渲染的工序,只能在小范围内体现反射和光源效果,无法做到现实世界的多次反射和漫反射等效果。


HALO4的效果,看似华丽但完全不真实

事实上,我们在玩游戏或者看一些DEMO演示的时候,都会有这样的感觉,一些贴图技术一般的游戏,放大了就会出现光源反射的问题;即使是一些效果很出众的作品,看起来很真实,但是一些光源效果和反射违背物理规则,或者反射效果局限性很大,比如一些该反射的地方不反射。究其原因,还是因为这些渲染技术不是基于真实物理规则,而是人为计算和预设的。


水反射出了船只,但是船只却没有合理反射出水的光线交互效果

 

所以从画质而言,目前游戏所采用光栅化,是无法和光线追踪相比的,如果就游戏的渲染技术要达到光线追踪的效果,那么设计人员都要按照真实物理规则去计算场景的反射和折射效果,这种工作量几乎是不可能完成的,对开发者而言实在不科学。那么用光线追踪来实现各种游戏反射效果会如何呢?光线追踪技术可以用算法控制整个3D场景中的所有反射效果。在光线追踪计算中,所有的反射效果都能被计算在内,就连漫反射和多次反射都不会漏掉。这样在画质上,光线追踪就能轻易秒杀目前游戏所使用的渲染技术。


采用光线追踪,台球的反射完全符合真实物理规则

光线追踪的死穴:超高的性能需求

那么新的疑问又出现了,既然光线追踪这么牛X,为什么游戏中不采用呢?这个答案很简单,因为光线追踪的性能要求实在太变态了!

 

事实上别说光线追踪,就是我们游戏中的各种贴图效果,要达到比较真实的水准,都需要大量复杂的运算,需要消耗显卡很多资源,这也是为什么游戏效果越出色,越逼真,对显卡要求越高的原因。

 

而要实现光线追踪,需要更为惊人的计算量。根据Intel的说法,要用光线追踪渲染出达到现代游戏的画面质量,同时跑出可流畅运行的帧数,每秒需要计算大概10亿束光线。这个数字包括每帧每像素需要大概30束不同的光线,分别用来计算着色、光照跟其它各种特效,按照这个公式,在1024×768这样的入门级分辨率下,一共有786432个像素,乘以每像素30束光线以及每秒60帧,我们就需要每秒能运算141.5亿束光线的硬件,而Intel两个并行的四核处理器每秒也不过只能处理大约800万束的光线。


目前售价在2000美元以上的光线追踪卡

此外,现代的游戏处理贴图时,很多时候是把预设的数据寄存在显存中,在需要的时候在拿出来即可。但光线追踪不同,由于基本和真实物理规则相同,所以计算光线时,每条光线基本没有关联性,无法在实时渲染时预设,这就需要直接读取内存或者显存,这么大的计算量对内存/显存的位宽和延迟都提出了巨大的要求。即使到了2015年,显卡的显存延迟应付光线追踪依然不够用。

 

在我们看到的大多数光线追踪演示中,无论是Intel早期用Larrabee跑Quake3,还是NVIDIA自己用顶级显卡做的演示DEMO,场景都非常小,而且帧速都不高。如果应用在大型游戏中,现在的顶级PC恐怕要跑到5fps都很吃力。

 

观点

游戏实现光线追踪还需漫长等待

现在回到我们文章初始的疑问,光线追踪无法普及完全是因为性能要求过高的原因。一方面它的确拥有最为真实且令人震撼的画质表现,但另一方面它的计算量又的确让家用硬件难以负荷。实际上,前几年还有公司专门研发光线追踪卡,但是这么几年下来,性能虽然比处理器和GPU都强,但在性能和成本上还是难应用于民用市场。Intel之前曾希望用Larrabee来实现光线追踪,结果这货难产……至于民用显卡市场,新一代的堆叠式显存或许可以解决性能和延迟的问题,但GPU核心依然很难达到光线追踪的性能需求(其实差得还很远很远)。至少在目前,我们还看不到主流游戏布局光线追踪技术的可能,我们能做的也只有等待——而且,这一等待将会是很漫长的! 
本文出自2015-05-04出版的《电脑报》2015年第17期 A.新闻周刊
(网站编辑:shixi01)


我来说两句(0人参与讨论)
发表给力评论!看新闻,说两句。
匿名 ctrl+enter快捷提交
读者活动
48小时点击排行
论坛热帖