GLSL shader特效系列-高级篇:ray tracing(上)

得益于手机硬件的提升,目前手机游戏基本上进入3D的时代。
为了跟随潮流,让小伙伴们更好的理解3D渲染的原理,今天进入GLSL特效系列的高级篇:ray tracing

ray tracing和3D渲染有何关系?

在现实中,人的眼睛是如何观察世界的:
1.首先,要明白人的眼睛之所以能够看到物体,是因为有光线在物体的表面发生了反射并进入人的眼睛。(光照)
2.其次,物体之所呈现不同的颜色,是因为不同的物体其BRDF的属性不一样,通俗一点就是物体的材质不一致导致的。

所以人的眼睛对光线的明暗最为敏感,其次才是颜色。
例如在光线较暗的场景,人的眼睛很难分辨物体的颜色,但可以看到那里有个物体。

因此,光照处理方法和计算模型,是一个渲染引擎的核心,它对渲染的效果有着根本性的影响。

当有光线从物体的表面反射并进入人的眼睛的时候,那么这个物体就被人“发现了”。
那么逆过程便是,从人的眼睛发出一束光线,当这束光线刚好和物体相交的时候,这个物体就被“发现了”,
这个逆过程便是今天要说的话题:ray tracing,即光线追踪。
之所以是跟踪,一是光线是从观察点射出(上述逆过程),二是跟踪光线的路径,即折射和反射(BRDF)。
因此,ray tracing包括2点:逆向+跟踪。
由于ray tracing的计算模型和人眼睛的工作原理非常相似,所以它能渲染出非常逼真的效果。这也是ray tracing技术成为
图形渲染技术发展的主要方向的原因。POV-ray是目前ray tracing技术发展的标杆。(小伙伴们可以到POV ray官网上看下渲染出来

的效果,简直是“以假乱真”)

由于ray tracing要跟踪光线的路径,使得计算量大大增加,导致ray tracing对GPU的硬件要求较高。
因此在游戏引擎中,很少使用,不过在PC上跑还是无压力的。既然游戏引擎中很少使用,为什么还要讲
ray tracing呢?
原因在于ray tracing能够很好的帮助入门者理解3D引擎的渲染过程和原理,尤其是光照部分的计算和相机的工作、透视矩阵的变换。

ray tracing的发展历史:
ray casting,ray marching,ray tracing:
ray casting的代表便是3D游戏中的ray picking,通过2D屏幕的坐标,计算出对应3D世界的坐标;
ray marching,重点在于marching,强调光线的前进过程,当光线在前进的过程中碰到物体,便停止前进。再根据碰撞点和前进的
距离计算物体的光照模型。
ray tracing,强调tracing,碰到物体之后,不会立即停止,而是根据物体的BRDF继续跟踪光线的运动路径,包括折射、反射、吸
收率、强度衰减,跟踪迭代的次数越多,计算量越大。
ray tracing是在前面二者的基础上发展起来的“高级产物”。

好的,今天姑且到处

好短…:9:

很高级!!!!

讲得还真不错:14: