返回

计算机图形学基础学习笔记-高级光线传播

无偏差(Unbiased)光传播方法

无偏差的蒙特卡洛方法不会造成任何系统误差。其求出的期望值永远会是正确的值,无论有多少采样点。

双向路径追踪(Bidirectional Path Tracing, BDPT)

即通过从相机和光同时发出光线,然后让其在某一表面相遇的办法。

如果光源发出的光传播很复杂,比如一束光直接达到天花板来照亮整个环境。那么双向的效果会比单向的好。

问题在于实现困难和速度较慢。

Metropolis光传播(MLT)

在蒙特卡洛积分中使用马尔科夫链。从当前样本估计周围的样本。

给一条路径可以生成很多相似的路径。以处理局部光路复杂的情况。例如镜面反射-漫反射-镜面反射的情况。

问题在于:难以估计收敛速度;每个像素的收敛速度不同,导致图面比较脏;不适合用于动画渲染。

有偏差(Biased)光传播方法

有偏差的蒙特卡洛方法,其期望值随着采样点的增加会趋向正确的值。

光子映射

特别适合处理镜面反射-漫反射-镜面反射的情况,以及生成焦散线(Caustics),或者说由于聚焦作用形成的各种图案。

有众多实现办法,其中一种:

  1. 从光源处射出光子,经过各种反射、折射,直到打到漫反射材料,并记录。
  2. 从摄像机射出路径,经过各种反射、折射,直到打到漫反射材料,并记录。
  3. 对第二次打到的点,取周围的最近的\(n\)个光子,算其密度,来计算亮度。

其有偏的原因是

\[\frac{dN}{dA}\neq\frac{\Delta N}{\Delta A} \]

当光子趋近于无限时,上式趋于相等。

\(N\)比较小时,图片有很多噪声。\(N\)比较大时,图片比较模糊。如果足够多,就可以收敛到不模糊的结果。

Vertex Connection and Merging

其实就是双向路径追踪和光子映射的结合。

实时辐射度

有时也叫做多光源方法。

光源发出来的光线,打到某些地方,则把这些地方看做新的光源。

渲染场景时将这些虚拟光源看作是光源。

好处是:速度快,并且对于漫反射处理比较好。

问题是:有些地方莫名的会发光;不 能做金属材质(Glossy)的渲染。