Ray Tracing 光线追踪,一种框架与光栅化渲染并列
光栅化渲染:将一个场景的渲染任务按照以下层次拆解:物体=》三角面=》像素。这种拆解方式会导致全局信息丢失,因此全局效果的精确实现上存在瓶颈,比如软阴影、间接光照等。
光线追踪:从相机出发,对每个像素点,向场景投影光线,直到光线与场景中第一个物体相交,在交点处根据物体性质,光源属性和光照模型等计算这个交点的颜色。
光线追踪将一个场景的渲染任务按照光线拆解。这些光线之间也是并行的。光线追踪可以获取一个场景的全局信息。
Arthur Appel公认的最初模型:

Turner Whitted三种光线:反射光线、折射光线和阴影光线


可以看到上述方法都需要计算光线与物体的交点:
Path Tracing 路径追踪
在光线遇到表面需要反射时,以表面法线为中心做一个半球,向半球上的若干方向引出一束射线,再递归计算这束光线中,每条光线对该表面点的光照贡献。
Kajiya渲染方程:



最终观察到的颜色由两个部分组成:自发光和反射光部分。
问题1:定积分的求解
解决方法:蒙特卡洛积分法
问题2:需要采样的光线太多,指数爆炸
解决方法:朝一个像素块发射多条光线,每条光线只反射一次。


问题3:光线迭代中止条件
解决方法:每次迭代产生随机数,根据随机数决定是否继续迭代
问题4:当光源面积较小时,从相机发射的光线到达光源的概率变小,很多光线无法到达光源被浪费,形成大量噪点。
解决方法:直接在光源上采样。

Volume Ray Casting 体积光线投射,一种体绘制(Volume Rendering)技术。
从体纹理表面的像素开始,沿固定方向(通常是视线方向),发射一条光线,光线穿越整个体纹理(或图像序列),并在整个过程中,对体纹理进行CIA杨获取颜色信息,同时按照一定规则将颜色值进行混合累加,直至光线穿越整个体纹理,最后得到的颜色值就是渲染图像的颜色。

注意此处光线投射与Arthur Appel提出的光线投射不同:
Ray Marching光线步进
一种通用的方法,该方法描述的是这样一个过程:光线从起点出发,一步步前进,每到达一步,光线就停下来做一次计算,然后继续前进,直到逼近终点。
在不同的应用场景中光线步进的起点、终点和方向具体指代的内容不同。

递归光线追踪方法中(Whitted),视点向每个像素投射一条光线,路径追踪方法中,视点向每个像素投射多条光线。他们的共同点都是把场景的渲染任务以光线形式拆解,并涉及到光线的递归。
递归光线追踪和路径追踪通常需要对视线和表面求交,得到交点后,光线继续产生反射光线或折射光线;体积光线不需要求交,一般情况已知。
光线追踪、路径追踪和光线步进都涉及到光线与表面求交。光线步进指代一种方法类型,在不同算法中有不同应用;光线追踪和路径追踪有多种求交点的方式,交点处的性质会用于后续的迭代计算,更关注求交点的结果。理论上也可以将光线步进运用于光线追踪和路径追踪。
体积光线投射中也包含光线步进的思想。
光线追踪和路径追踪的起点都是视点,终点都是视线与物体表面的交点;
体积光线投射真正的起点是体纹理表现的像素点,终点是光线穿出体纹理的交点。但是需要从视点方向引出射线。