由于技术的迅猛发展,使得手机硬件性能大幅提升,所以现在手机游戏基本上普遍进入到了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是在前面二者的基础上发展起来的“高级产物”。