无偏差(Unbiased)光传播方法
无偏差的蒙特卡洛方法不会造成任何系统误差。其求出的期望值永远会是正确的值,无论有多少采样点。
双向路径追踪(Bidirectional Path Tracing, BDPT)
即通过从相机和光同时发出光线,然后让其在某一表面相遇的办法。
如果光源发出的光传播很复杂,比如一束光直接达到天花板来照亮整个环境。那么双向的效果会比单向的好。
问题在于实现困难和速度较慢。
Metropolis光传播(MLT)
在蒙特卡洛积分中使用马尔科夫链。从当前样本估计周围的样本。
给一条路径可以生成很多相似的路径。以处理局部光路复杂的情况。例如镜面反射-漫反射-镜面反射的情况。
问题在于:难以估计收敛速度;每个像素的收敛速度不同,导致图面比较脏;不适合用于动画渲染。
有偏差(Biased)光传播方法
有偏差的蒙特卡洛方法,其期望值随着采样点的增加会趋向正确的值。
光子映射
特别适合处理镜面反射-漫反射-镜面反射的情况,以及生成焦散线(Caustics),或者说由于聚焦作用形成的各种图案。
有众多实现办法,其中一种:
- 从光源处射出光子,经过各种反射、折射,直到打到漫反射材料,并记录。
- 从摄像机射出路径,经过各种反射、折射,直到打到漫反射材料,并记录。
- 对第二次打到的点,取周围的最近的\(n\)个光子,算其密度,来计算亮度。
其有偏的原因是
\[\frac{dN}{dA}\neq\frac{\Delta N}{\Delta A} \]
当光子趋近于无限时,上式趋于相等。
\(N\)比较小时,图片有很多噪声。\(N\)比较大时,图片比较模糊。如果足够多,就可以收敛到不模糊的结果。
Vertex Connection and Merging
其实就是双向路径追踪和光子映射的结合。
实时辐射度
有时也叫做多光源方法。
光源发出来的光线,打到某些地方,则把这些地方看做新的光源。
渲染场景时将这些虚拟光源看作是光源。
好处是:速度快,并且对于漫反射处理比较好。
问题是:有些地方莫名的会发光;不 能做金属材质(Glossy)的渲染。