|
一、光线追踪的定义和原理 到光线追踪,就不得不提光栅化。光栅化是指把景物模型的数学描述及其色彩信息转换至计算机屏幕上像素的过程。使用光栅化,我们可以将几何图形转化成屏幕上的像素。光栅规则定义了一套统一的法则来产生像素。光栅得到的像素一般会携带深度值,一个RGB Adiffuse颜色,一个RGB specular颜色,一个雾化系数和一组或者多组纹理坐标。这些值都会被传给流水线的下一个阶段像素的处理,然后注入到渲染目标。由于实时3D渲染程序要求对用户的即时操作做出迅速反应,因此通常要求每秒至少20帧以上的渲染速率,这也使得高效率的“光栅化”渲染技术成为当今最受青睐的3D即时成像技术。但是光栅化的缺点也很明显,那就是无法计算真实的光线,导致很多地方失真。如,大家在游戏中对水面之类的场景,它所生成的画面效果,好像永远都不那么真实,它的画面始终还是动画,这是因为,目前的游戏无一例外都是使用光栅化算法,而在一些“电影级别的画质”中则采用的是光线追踪算法现在的3DSMax、Maya、SoftimageXSI等软件中,也都无一例外地采用了这一算法。 光线追踪技术是由几何光学通用技术衍生而来。它通过追踪光线与物体表面发生的交互作用,得到光线经过路径的模型。简单地说,3D技术里的光线追踪算法,就是先假设屏幕内的世界是真实的,显示器是个透明的玻璃,只要找到屏幕内能透过人眼的光线,加以追踪就能构建出完整的3D画面。 追踪算法分为两种:正向追踪算法和反向追踪算法。 追踪算法是大自然的光线追踪方式,即由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼。 追踪算法正好相反,它是从观察者的角度出发,只追踪那些观察者所能看见的表面投射光。就目前而言,所有3D制作软件的光线追踪算法都是采用反向追踪法,原因是这种算法能够最大程度地节省计算机的系统资源,而且不会导致渲染质量的下降。
现实世界中射到物体表面上通常有三种情况:折射,反射,吸收。光线在经过反射到不同的地方,被选择性吸收,从而光谱发生改变,再多次反射与折射,最终进入我们自己的眼睛。而光线追踪技术要做的就是模拟这一过程。 在渲染中,光线追踪会赋予每一个像素几条甚至几十条光线,然后光在场景中传播,与场景中各个物体产生交汇,而场景中的物体在事先就已经被开发者设置好了属性,从而导致光束发生各种改变,最终聚集在屏幕上。从而被我们感知。 追踪方式则是计算最终射入我们眼睛的光线的反向光路,即眼睛—物体—光源的过程。因为这么做的话,可以省掉很多并不需要计算的光路,在光线追踪中,并不是每一束光都有用。有些光最终并没有射入我们自己的眼睛,但是如果依旧计算的话就会造成不必要的计算资源浪费。在光线追踪中,光同样也被分类,假设一条主光线是不可见的,那么系统则会抛弃掉整条光路,如果可见的话,那么辅助光线(反射,折射,阴影)的计算就开始了。在完成主光线的判别之后,辅助光线的其他属性(透明度,色彩)操作也已经基本完成了。 二、光线追踪在图形渲染中的应用 光线追踪目前多用于影视特效中做静帧渲染,但对大众最有影响的3D图形游戏领域显然还没有光线追踪的踪影,这是为什么呢? 光线追踪迟迟不能应用在游戏行业中的原因很简单——它那恐怖的计算量。即便是用了反向追踪算法之后也是如此。 根据Intel的说法,要用光线追踪渲染出达到现代游戏的画面质量,同时跑出可流畅运行的帧数,每秒需要计算大概10亿束光线。这个数字包括每帧每像素需要大概30束不同的光线,分别用来计算着色、光照跟其它各种特效,按照这个公式,在1024×768这样的入门级分辨率下,一共有786432个像素,乘以每像素30束光线以及每秒60帧,我们就需要每秒能运算141.5亿束光线的硬件。 而即便到了今天,顶级的Corei7每秒能处理的光线还不足千万条。而且这只是运算量上的差距,由于光线追踪的辅助光线每一条都没有任何相关性,这意味着包括各种缓存技术在内的“投机取巧”方式都没有用武之地,计算光线追踪辅助光线的所有的计算都将直接读取内存,这对于内存延迟和带宽来说都是惊人的考验。而且对于显存容量也是一个不小的挑战,十几甚至几十GB的显存会变的非常有必要。 虽然在游戏领域引入光线追踪是有极大挑战的事情,但这项技术一直有研究机构和图形处理器厂商在投入研究。光线追踪若想要应用到游戏中就需要做到实时渲染,就是大家所说的实时光线追踪(Real-time raytracing)。 三、光线追踪算法前面说过了,那什么样才是实时的? 所谓实时就是需要达到每秒渲染30帧以上,否则就达不到画面的流畅度要求,就没有实用价值。 6FPS左右就可以产生交互感,15FPS可称得上实时,30fps不太卡,60FPS感觉平滑流畅,72FPS再往上肉眼就已经分辨不出差别。 实时的光线追踪的难点就在于场景复杂度和需要的真实感渲染效果决定了遍历和相交检测的巨大计算量(场景分割数据结构的重构和光线与场景的相交测试是两项主要计算),这是渲染领域以及任何模拟计算领域里终极的矛盾:效率和质量的矛盾。 实时渲染视频级别的计算机三维图形是计算图形领域的终极目标,与现在普遍使用的光栅化渲染技术相比,光线追踪普遍被视为视觉技术的未来方向,可带来近乎真实的真正电影级图形和光影物理效果,光线追踪算法是达到这个目标的圣杯,经过几十年的努力,终于要接近这个理想了。 |






|手机版|搜索|焦点光学|光电工程师社区
( 鄂ICP备17021725号-1 鄂网安备42011102000821号 )
Copyright 2015 光电工程师社区 版权所有 All Rights Reserved.
申明:本站为非盈利性公益个人网站,已关闭注册功能,本站所有内容均为网络收集整理,不代表本站立场。如您对某些内容有质疑或不快,请及时联系我们处理!
© 2001-2022 光电工程师社区 网站备案号:鄂ICP备17021725号 网站公安备案号:鄂42011102000821号 Powered by Discuz! X3.2
GMT+8, 2025-12-25 00:15