Whitted-style ray tracing
现在所称呼的Ray Tracing是指一系列的Ray Tracing技术,包括Path tracing、Photon mapping、Metropolis light transport等;
若将 Path tracing与Ray tracing进行区分 的话,此时Ray tracing指的是传统的Whitted-style ray tracing,此Ray tracing只能tracing光滑物体,像玻璃、镜子等;
首先进行Whitted-style ray tracing的介绍;
Ray Casting
投射光线是光线追踪的第一步,如何投射光线跟相机的模型有关;
- 常用的相机模型有针孔相机模型(透视相机)、环境相机模型、薄透镜相机模型;更具体的投射过程可参考基于摄影参数渲染;
- 采用薄透镜相机模型,可以很容易实现出真实相机所产生的的暗角、鱼眼、运动模糊、景深等各种相机效果;
Ray-Surface Intersection
投射出来的光线需要与场景进行相交检测,计算光线与场景的第一个交点;
此过程常伴随着加速结构的使用来加速相交检测的计算;常用的空间加速结构有Acceleration Grid、Oct-Tree、KD-Tree、BSP-Tree、Bounding Volume Hierarchy (BVH,最为常用)
Recursive Ray Tracing
相交点找到后,即可以根据相交点的属性,生成新的光线;
- 如果是相交点是镜子,只用生成反射光线;
- 如果是玻璃,则需要生成反射光线或折射光线;
- 如果是漫反射表面,则使用相交点的颜色作为最终颜色,并且停止反射;
对于镜子和玻璃后续新生成的光线,需要进行新的场景相交计算;
对于相交点处理进行反射光线计算,还需要进行Shadow ray来进行是否在投影中的计算;