Advanced Light Transport

有偏、无偏、一致性

之前提到的蒙特卡洛方法是一种光线追踪中常用的估计方法,具体来说,是在求解渲染方程时,以特定的pdf分布对被积函数进行采样,再用采样到的样本来估计积分值的一种方法,但那时我们并没有提及什么样的pdf采样是最好的,这就涉及有偏和无偏的概念

如果样本得到的期望值与总体的期望值相等,那么这种估计就被称为无偏的,反之则有偏

如果采样的样本数量趋近于无穷时,样本统计量的期望收敛于总体统计量的期望,则称这种估计是 一致的

Unbiased Path Tracing

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

之前所说的路径追踪利用了光路可逆性,通过形成相机到光源的单向路径来计算光照结果

而双向路径追踪,顾名思义,就是从光源和相机分别打出一些半路径,最后连接两条半路径的端点,形成整条路径

整个场景由两个聚光灯照亮,用传统路径追踪打出的路径第一个弹射点大概率是漫反射表面,反射路径弹向光源概率小,存在大量噪声。可以从光源采样,但是光源和着色点之间不一定直接相连,此处采用BDPT效果更好。

Metropolis Light Transport(MLT)

之前是均匀采样,现在采用马尔可夫链采样,即在样本周围生成新样本采样。

采用马尔可夫链采样方法得到的pdf可以和被积函数形状保持基本一致。

在蓝色路径加以扰动,在周围产生新样本

此方法适用于复杂光线传播情况,如水体(SDS路径,specular-diffuse-specular)

但是很难分析收敛速度,不同着色点收敛时机不同,不知道何时结束,图像看上去比较脏。

Biased Path Tracing

Photon Mapping 光子映射

  • 先从光源出发打出光子,让其在空间内传播散射,直到打到漫反射表面为止
  • 然后再从摄像机打出路径,进行着色计算,着色点的亮度取决于光子的密度

对每个着色点取周围N个光子,做密度估计

只要打的光子足够多就可以生成正确结果

Vertex Connection and Merging(VCM)

双向路径追踪会发生两条子路径端点非常接近的情况(在同一个局部面积内),这时候BDPT就认为这种路径无效,就是一种浪费

对于这种情况,VCM就认为其中一条路径打过来的不是光线而是光子,用光子映射的方法把两条路径的贡献结合起来,避免了这种浪费

现实在电影行业以及许多实践中,也确实使用了VCM这种方法

Instant Radiosity (IR)

将每个被照亮的表面都作为虚拟的点光源来看待,把光源打出的光线所打到的地方作为二级光源,计算着色时遍历这些二级光源叠加计算

优点:速度快,在漫反射场景中效果很好

缺点:当虚拟光源离着色点特别近的时候,会出现反常亮点,类似漏光的现象,这和之前路径追踪对光源采样的距离 平方项有关;另外,这种方法无法处理光泽材质

Advanced Appearance Modeling

Non-Surface Models

Participating Media 散射介质

光线进入散射介质会发生两件事——被吸收或者散射

光线走多远被吸收,由介质的吸收能力决定;光线以何种方式散射,由介质的相位函数决定

Phase Function 比较类似于 BRDF,决定光先线能走多远

Hair Appearance

Kajiya-key Model

Kajiya-Kay模型将头发丝看做一个可弯曲的圆柱,这也是之后所有其他方法的基础

光线打到头发上会呈圆锥状散射(类似specular),同时又会被散射到四面八方(类似diffuse)

Marschner Model

  • T:直接反射
  • TT:穿进“皮质层”,再从“角质层”穿出
  • TRT:穿进“皮质层”,在内部反射,再从“角质层”穿出

Fur Appearance

与Hair Appearance区别在于光打在髓质上会发生漫反射

人毛发中髓质小,动物毛发中髓质很大,所以有区别

该模型在Marschner模型的T,TT,TRT基础上又加了两个计算项:TTs和TRTs

  • TTs:TT传进“皮质层”时打到髓质发生散射,再从“角质层”穿出
  • TRTs:TRT进入“皮质层”时发生发射,来回打到两次髓质,最后从“角质层”穿出

Granular Material

Surface Models

Translucent Material 半透明材质

计算复杂,可以采用如下方法估算,上下表面都虚拟多个光源

Cloth

当作表面,用BRDF模型

但是天鹅绒等材质并非平面,无法用BRDF方法

当作散射介质,在空间中细分格子

当作头发

Detailed Appearance

现实世界中的物体大多数都是不完美的,多多少少都会带点瑕疵,比如风雨灰尘在车漆上留下的细微划痕,或物件老化磨损等

细节模型还存在一个问题,就是在计算镜面反射时,如果法线分布比较复杂,就很难建立有效的,从光源到微表面再到摄像机的光线通路

为了解决这个问题,我们让每个像素打出路径时都对应一个范围,如图,把整块范 围内的法线分布整合起来得到P-NDF,从而简化计算

Procedural Appearance

这里的程序化生成并没有真正的生成材质,而是将这个材质信息定义为空间中的一些噪声函数,在后续生成时动态的查询它