【Siggraph 2012】Physically-Based Shading at Disney

本文是Disney在Siggraph 2012 "Practical Physically Based Shading in Film and Game Production" Course上的文章的翻译与学习,这里是原文链接

1. Introduction

在经历了PBR头发材质的成功之后,Disney试图将PBR的概念与方法扩展到全材质上面。在头发材质模型上,Disney的PBR方案可以既保证美术同学对效果有着绝对的掌控,同时也能兼顾丰富而逼真的视觉效果,不过想要将头发的光照方案应用到场景的其他部分还有很长一段路要走。

Disney这边希望后续的电影制作能够达成如下目标:

  1. 增加材质表现的丰富度(richness)

  2. 保持材质与环境之间的光照响应(lighting response)的稳定与一致性(consistent),不会随场景而变化

  3. 通过简化控制方案来提升美术同学的生产力

全材质PBR方案开发过程中,大家心里都是非常不安的,没有确定的方向,只能摸索着前进,比如刚开始的时候不知道是应该坚持能量守恒,还是应该从物理参数(比如IOR,index of refraction)出发。

就漫反射(diffuse)而言,通常都是使用Lambert方案来实现;而高光反射(specular)目前则在学术研究中比较常见,关于PBR实现方案,目前有很多的参考文献,比如Ashikhmin-Shirley (2000)等文献够给出一种直观的接近物理真实(physical plausible)的实现方案,而He et al. (1991)等文献则给出一种完整的(comprehensive)物理实现方案,还有一些其他的文献则尝试给出一种物理拟合方案。Disney基于上述众多文献给出了几个实现模型,不过可惜的是,这些模型包含的参数过多,达不到前面设定的第三个目标:参数简洁。

Ngan et al. (2005)对大量的材质进行了测试与研究,并对五种流行的光照模型进行了比对。其中一些模型的表现全方位碾压其余的模型,然而有意思的是,这些模型之间的表现有着很强的关联性(意思是要么都行要么都不行):对于一些材质而言,基本上所有的光照模型都能给出不错的效果;而对于另外一些材质而言,则基本上所有的模型的表现都很一般。即使在原有模型基础上添加高光反射项,也只能改善部分材质的表现,还有一些材质的表现依然难以令人满意。那么问题来了,真实的材质表现效果中,究竟有什么参数是这些光照模型所缺失的呢?

为了解答这个问题,同时也是为了对BRDF有一个更为直观的印象,Disney开发了一个新的BRDF查看器,这个查看器可以对测试(measure)现实世界材质得到的BRDF以及渲染使用的分析式BRDF进行展示与比较。通过这个查看器,Disney从测试BRDF中发现了此前的光照模型所缺失的特征。

接下来会对Disney在对现实材质的检测数据进行观测后的一些结论进行分享,并给出他们对此前模型的优劣对比分析,以及据此提出的新的PBR光照模型。

2. The microfacet model

Disney的PBR光照模型的定义以及与真实材质的BRDF检测数据的对比都将在微表面模型(microfacet model)上进行。微表面模型假设,如果在一个光线与观察方向之间存在反射关系(即在此观察方向上能够接收到从方向上的光线的光照),那么在光线照射的表面上必定存在一个微表面,此微表面的法线正好等于光线方向与观察方向的中间方向,这个微表面的法线我们叫做"half-vector"(缩写h),可以用如下公式计算得到:

同质(isotropic)材质的一个通用的微表面模型可以用如下公式来表示:

整个公式分两个部分,diffuse与specular,specular比较复杂,对应的是上述公式中后面的分数形式部分。

diffuse表示漫反射,可以用任何已知的漫反射计算模型替代此项,常见的Lambert漫反射模型对应的diffuse是一个常数。

specular部分中,D指的的是微表面法线分布函数(microfacet distribution),F表示的菲涅尔(Fresnel)反射的系数,G表示的则是几何表面对光照的衰减(geometric attenuation)作用,或者说是阴影系数。

,以及分别表示光照方向,观察方向以及half-vector与表面法线的夹角,而表示的则是光照方向与half-vector之间的夹角。

大多数物理逼真的非微表面光照specular模型都可以转换如上公式的分子形式,而这些模型与微表面模型的差异主要集中在分母部分。这个分母部分是从微表面模型推导出来的,对于不包含这一项的specular模型,在成功推导出D跟F的具体表达形式之后,都可以在G的表达形式中乘上来转换成微表面模型。

3. Visualizing measured BRDFs

3.1 The "MERL 100"
Figure 1: Images slices of MERL 100 BRDFs.

Matusik et al在2003年抓取了100套同质(isotropic)BRDF样本,这些样本覆盖面比较广,包含了paits,woods,metals,fabric,stone,rubber,plastic以及其他材质。这套数据集在网上可以找到免费资源,并且被广泛用于对新的BRDF模型的评估。Figure 1给出了这些材质的切片(slice)展示。

MERL 100中的每个材质都会沿着(表示的是什么东西?)三个方向采样,并将结果写入到一个90x90x180的cubemap中,除了对应的是specular peak附近的数据之外,另外两个轴每个像素对应的大约是角度增量。这套测试数据会根据需要进行滤波(filtering)以及外插值(extrapolate)以避免产生孔洞(holes)。这样做的好处是,这套数据使用起来会非常方便,但是精度可能不是那么准确,尤其是在接近水平线(horizon)方向。也正是因为这个原因,部分研究者会在做拟合的时候丢弃水平线区域的数据,不过实际上,水平线位置的数据对于材质的表现有着深远的影响。

3.2 BRDF Explorer
Figure 2: Disney BRDF Explorer

为了对MERL 100材质进行测试,并与分析式的BRDF模型进行比对,Disney开发了前面说过的BRDF查看器工具,如上图所示,这个工具是开源的,主要包含以下特性:

  1. 支持同时加载多个以GLSL表示的分析式BRDF模型
  2. 支持加载测试BRDF数据,包括Ngan et al所采集的各向异性材质样本
  3. 支持多套数据绘制方式(3d hemispherical view, polar plot, and various cartesian plots)
  4. 支持计算后的Albedo效果绘制(比如带方向的半球反射效果)
  5. 支持可以调节参数的材质切片展示
  6. 支持在importance-sampled IBL光照效果下的模型光照效果展示
  7. 支持球形光照效果展示
  8. 支持参数化模型的动态UI控制

总的来说,这套模型在对比分析式BRDF跟测试数据BRDF上起到了重要的作用,且有助于新的BRDF模型的开发与验证。同时,对于美术同学而言,这个工具也可以当成是BRDF编辑器来使用,有助于加深他们对BRDF空间以及模型参数的理解。

3.3 Image slice

一张张的贴图slice是表达measured材质的最为直观简单的方法,实际上,MERL 100所有材质的主要feature都能够在的slice上观察到,而其他的slice其实都可以看成是这个slice的warped版本(Romeiro (2008)以及Pacanowsi (2012)根据这个结论给出了简化版的同质BRDF模型,即)。Figure3中给出了两个材质样本的slice展示,这两个材质对应的其他slice在Figure4中可以看到。

这个slice的左边界(,意味着half-vector跟表面法线的夹角为0),表示的是specular peak的表现效果;上边界(,表示half-vector跟入射垂直,此时光线略过微表面后直接射入人眼),表示的是Fresnel peak的表现效果;而底部边缘(,表示的是垂直入射垂直出射)对应的是垂直反射(retroreflection)的效果,而右下角位置(,half-vector跟表面法线垂直,光线接近垂直入射微表面)对应的是光线与表面法线平齐的情况下(即掠过表面),接近微表面垂直反射效果。

Figure3中的slice还可以看出(可以理解为固定,而由于光路可逆原则,固定跟固定其实是等价的)的等值线,很多漫反射表现效果都跟这条曲线的形状轮廓有关(根据菲尼尔折射公式,固定的时候,折射光强部分将保持恒定,如果材质内部是均匀的话,那么此时对应的漫反射输出光强应该也是恒定不变的,不过由于材质表面不是Lambert表面,因此各个方向的漫反射光强可能是不相等的)。而随着接近于0,这条曲线则会渐渐的变成一条直线(如Figure4所示),通过比较不同的这条曲线的变化情况,可以区分出光照反射效果中哪部分是属于diffuse的,哪部分又是属于specular的(在固定的情况下,不同slice的反射效果中发生变化的就是specular,恒定不变的就是diffuse)。这个曲线还给出一个与颜色相关的信息,由于diffuse主要来源于次表面散射与光线的吸收作用,因此其输出结果通常会包含一个染色信息(被吸收的部分,以及经过表面内部反射的部分,导致颜色的变化),而specular则对应的是表面的直接反射,因此不包含染色信息(一个特例是金属物件,金属物件的specular结果会有染色的表现,不过在金属上是没有diffuse反射的)。

4. Observations from MERL materials

4.1 Diffuse observations

漫反射表示的是那些打在材质表面上的光照经过折射,材质内部散射、吸收以及再次折射出来的光线。因为内部光线吸收,所以才使得diffuse部分会发生染色效应(跟材质表面颜色有关),任何非金属材质的反射结果中发生染色的部分都可以看成是漫反射diffuse。

Lambert漫反射成立的条件是,假设光照打在材质表面经过折射+内部反射后,光线的方向信息已经完全丢失,从而使得再次折射出表面的时候打向各个方向的光线数据是均匀的。不过从Figure1~Figure5可以看到,很少有材质能够达到Lambert这么理想的漫反射效果。(注意,在Lambert Diffuse实现Shader中有一项,但实际上这一项对应的是积分部分,而非BRDF中的成员)

Figure6表明,很多材质在grazing retroreflection(入射光线与表面法线垂直,但是与微表面法线平行)处的反射强度有一个明显的下降,而部分材质在这个位置的反射强度却会达到一个高峰。这个表现可以用漫反射的染色效应来解释。图中展示的这个结果跟表面粗糙度有明显的关系,对于光滑表面而言(通常specular peak非常高,即f(0)非常大),在grazing retroreflection时会在边缘上产生一个阴影效果(shadow edge,参考Figure7中间小图的右上角区域,这个效果可以理解为光滑表面微表面结构跟表面宏观结构接近一致,因此在光线略过表面时,光线方向与表面法线相垂直,此时微表面上没有明显的retroreflection,因此存在阴影效应),而对于粗糙表面而言,却会在这个区域产生一个比较高的反射结果(粗糙表面对应的微表面法线与宏观表面法线存在较大出入,因而在于宏观表面法线垂直的时候,与微观表面法线却存在一定的反射,考虑到这个观察方向上的微表面密度要高于其他区域,因此反射强度相对也更为强烈,因此产生一个高峰?),这个效应可以在Figure7左边小图的右上角区域查看到。

其实,用菲涅尔折射公式可以很好的解释光滑表面的边缘阴影效果的原因:在光线掠过光滑材质表面时,根据菲涅尔折射公式,反射部分的光强要远远高于折射部分的光强,而折射光强是漫反射的主要输入,因此会在材质边缘存在阴影效应。然而当前大部分的漫反射模型都没有考虑到表面粗糙度对于菲涅尔折射公式的的影响,要么是假设模型是光滑表面要么是直接忽略菲涅尔公式的影响。

Oren-Nayar模型(1995)预测,随着垂直反射(retroreflection)强度的增加,粗糙表面的漫反射效果会使得几何形状看起来比较扁平(如Figure8所示),不过这个模型模拟的grazing角度下的垂直反射峰值不如measured data那么强烈,而且,measured材质实际上并没有这种扁平化效应。根据次表面散射理论推导出来的Hanrahan-Krueger模型(1993)同样给出了扁平化效应的结论,这个模型在grazing角度下的垂直反射峰值依然不够强烈,其与Oren-Nayar模型的区别在于,这个模型是在假设材质是一个完美的光滑表面的前提下工作的。这两个模型与Lambert漫反射模型的表现与对比在Figure8中可以看到。

除了漫反射在grazing角度下的垂直反射峰值效应之外,在Figure5中还表明了diffuse在沿着等值线上会有强度与颜色上的变化,这个变化在部分情况下可以用分层次表面散射模型(layered subsurface scattering models)来模拟,不过分层次表面散射模型通常也是假设表面材质是光滑的,同样无法模拟grazing角度下的垂直反射峰值效应。

4.2 Specular D observations

从Figure6中measured材质的垂直反射响应中可以观察到材质的微表面分布函数(即在不同的的密度函数,可用于得出微表面朝向的分布规律)。根据材质粗糙度的不同,可以将材质分成两大类,这两类在specular peak处的峰值强度有着明显的区别。钢(steel)的specular peak最大,大于400。如果移除specular peak处的曲线部分,剩下的曲线部分看起来就跟漫反射表现一样了(的变化对反射强度无影响,即各个方向上的反射强度接近一致)。

MERL中绝大多数材质的specular lobe的拖尾长度(tail length)比传统的specular模型的拖尾长度要长。这里以铬(chrome)为例子,如Figure9所示,这个材质可以看成是高度抛光的光滑表面的一个典型示例,其specular peak部分的宽度只有几度(several degrees),然而其峰值很高,且后面的平缓部分的宽度是peak部分宽度的很多倍。而作为对比,传统的specular模型比如Beckmann, Blinn Phong, 以及Gaussian等在peak宽度上跟这边measure得到的结果很像,但是峰值强度以及拖尾长度上就远远不如了。

Walter et al.(2007)正是因为想要得到一个更长拖尾的specular曲线而引入了GGX模型,相对于其他specular模型,GGX的拖尾长度确实要长得多,但是相对于measured材质表现而言,依旧显得不足。Low et al. (2012) 以及Bagher et al. (2012)等两个模型也试图通过添加在峰值控制参数之外,再增加一个额外的用于控制拖尾长度的参数来实现对measured材质长尾表现的模拟,此外,Ngan还提出了一种在原始peak曲线上叠加上一个宽度更宽的specular peak曲线的方式来延长拖尾的长度的方法。

4.3 Specular F observations

菲涅尔反射因子表示的是随着光照入射方向与观察方向的分离(最开始垂直入射时,两者重合),specular反射随之增强的程度。对于光滑表面而言,在grazing角度下的specular反射率将达到100%,而粗糙表面虽然达不到100%,但是specular反射程度依然会逐渐增强。

Figure10给出了MERL材质的菲涅尔响应曲线,为了方便对整体响应形状进行比对,这个曲线特地做过偏移与缩放处理。每个材质在接近的时候都有一定程度的涨幅,这个现象沿着Figure1的顶部边缘也可以观察到。

Figure10中的红色虚线部分是菲涅尔效应的模拟曲线,可以看到很多材质在grazing角度附近的增长曲线都要比这个模拟曲线要陡峭,Torrance-Sparrow (1967)微表面模型也是出于缩小乃至移除这个偏差的目的而提出的。另外,当光线入射与观察角度接近grazing时,微表面反射模型中的将逼近无穷大,不过这个不管是在现实中还是引擎建模中都不是一个问题,因为这个时候,代表光照向量传播过程中的shadow factor以及观察向量在表面上遭遇的masking的G项会使得此时的反射数值处于一个合理的范围内,即使如此,这两项相乘的结果随着角度的增加依然会导致菲涅尔效应的增强。

4.4 Specular G (and albedo) observations

想要从measured材质中将G项因子剥离出来是很困难的,因为首先要从材质中剥离出specular,之后再从specular中剥离D项因子跟F项因子。但是呢,通过随角度而变化的albedo(directional albedo)曲线却能够间接的揭示G项因子的走势。

Albedo表示的是反射光照总能量与输入光照总能量的比值,从广义的角度来说,这个数据可以用来对材质表面的颜色进行近似刻画;除此之外,Albedo有时候还会用于表示某个特定方向上的输入光照情况下的比值(依然是反射光强比输入光强),在这种情况下,Albedo就是一个随着输入角度(或者说入射光方向)而变化的函数(即前面说的directional albedo)。不管从哪个层面来理解,根据能量守恒原则,Albedo对于任何波长的光来说,其数值都不会超过1。

如Figure11所示,大部分材质在的时候都是一条接近平坦的直线,而在后半部分接近grazing角度的区域的表现则跟材质的粗糙度有关。总的来说,光滑材质会在位置附近有轻微的上升,之后逐渐下降直到,而粗糙材质则是一路上涨(如前面铬在Albedo上的染色表现所示,大多数粗糙材质在最后位置的持续增长都是因为材质在grazing角度处的垂直反射强度较大导致)。不论是哪种材质,总体的Albedo数值都不会太大,很少有材质的Albedo数值是超过0.3的。

Figure12给出了光滑材质以及粗糙材质在不同的G项因子模型下的Albedo曲线,当丢弃G项因子以及项时,Albedo在grazing角度处的数值接近于0,此时Albedo表现较暗,这种模型被称之为“No G”模型。因此不同的G项因子模型的选择对于Albedo表现有着深远影响,也即对整个材质的最终表现有着深远影响。

很多研究者就如何给出一条不错的Albedo响应曲线提出了各自的解决方案,其中部分研究者基于维持能量平衡(energy balance)的考虑,觉得理想的应该是一条全程平坦的的响应曲线。从Figure11前半部分的表现来看,这个想法是有道理的,而即使考虑到后半部分在grazing角度处的增长,部分材质的这个增长实际上并非来自于specular,因此这个想法依然是有效的。

如果添加一些简单的假设的话,是可以根据微表面分布函数(即D项因子)推导出G项因子的,Smith模型就是基于此理论而提出的,Walter (2007) 以及 Schick (1994)就是在这个模型的基础上推导出来的。如Figure12所示,Smith模型在光滑材质中的Albedo响应曲线增长得很快(且基本没有下降),这个表现跟measured材质表现不符合,倒是在粗糙材质上的Albedo响应曲线比较符合。此外需要注意,Smith模型中只有少部分组成G项因子的函数是有解析公式的,其他大部分函数还是需要通过查表或者其他近似方法来输出结果。

Kurt et al. (2010)给出了一个数据拟合的模型,这个模型受一个参数的控制,Figure12中的曲线对应的,使用不同的可以得到一系列不同表现的Albedo响应曲线。不过这个模型在grazing角度处的表现不太令人满意,尤其是对于粗糙材质而言。

4.5 Fabric

MERL中的很多纤维材质(Fiber)数据显示,这类材质在grazing角度下会存在Specular染色效应,且这类材质的Fresnel峰值相对于同等粗糙度下的其他材质而言要强烈的多,如Figure13所示。

grazing角度处的Specular染色效应的可能原因是,布料材质通常是由可穿透的纤维组成(transmissive fibers),而这种特性使得grazing角度下的光照会抓取材质轮廓区域的颜色进行输出;此外,这个特性还可以解释为什么布料在grazing角度处的反射输出光强会增强(其他角度有部分数据直接穿透布料损失了)。

虽然很多布料材质有着极其复杂的光照表现,MERL中列举的这批材质倒是比较好模拟。

4.6 Iridescence(彩虹色)

Figure14展示了三幅Color Changing Paints(这是啥?),从图中可以看到,空间的颜色(coherent patches of color)与的关系不大(怎么看出来的?),上排三张图片说明,图中的颜色数据主要集中在纵轴上的specular peak部分,可以看成是一个完全的specular反射。这个材质反射的表现可以通过使用一张很小的texture map对specular hue(是的函数)进行调制即可(这句话有点没头没脑)。
4.7 Data anomalies

Figure15展示了MERL数据中的一些反常现象:

  1. 一些闪亮材质,尤其是金属,其高光表现是不对称(asymmetric)的,看起来像是lens flare或者是材质表面的刮痕
  2. 超过的数据看起来会被外插值(extrapolated)
  3. 纤维材质在grazing角度处的数值会有奇怪的不连续性,猜测可能是因为数据采集时候在sphere位置处发生了拉伸,而在edge处发生了收缩导致
  4. 部分木质材质沿着方向上会呈现一种特别的调制纹理,可能是由于木质纹理导致。
  5. MERL数据烘焙中加入了次表面散射的相关信息

给出这些观察结果,并非是想要抨击MERL数据的不足,只是希望后面做研究的人不要陷入过拟合的心态中,凡事坚持以效果表现为第一优先级,不必过于迷信数据一致性。同时,这也回答了之前提出的问题:为什么部分材质就是很难拟合。

5. Disney "principled" BRDF

5.1 Principles

在开发新的符合需求的BRDF的过程中,美术同学希望能够对BRDF有一个更好的控制力,而不必完全遵照物理规律进行设计。因此,Disney开发的BRDF更多的是追求一种满足特定规则的BRDF,而非完全绝对物理的BRDF,这里给出实施的一些规则:

  1. 提供一套直观的而非物理控制参数
  2. 控制参数要尽可能少
  3. 各个参数的理论范围应该是[0, 1]之间
  4. 在有必要的时候,参数可以超越前面设定的理论范围[0, 1]
  5. 所有参数的组合都应该要尽可能的鲁棒,且能够得到较好的表现效果

经过仔细规划,Disney BRDF模型的参数系统最终只包含了1个颜色参数与10个标量参数。

5.2 Parameters

Figure16 不同参数从0到1变化时的反射效果对比

Disney BRDF模型提供的参数列举如下:

  1. BaseColor,材质表面的颜色值,通常用贴图来存储此数据
  2. Subsurface,使用一个次表面近似方法来实现对漫反射形状(diffuse shape)的控制
  3. Metallic,金属度参数(0表示绝缘体,1表示金属)。这个参数用于实现金属与绝缘体效果之间的线性混合。金属模型没有漫反射项,此外还有一个带染色的specular反射,染色程度与basecolor有关。
  4. Specular,输入的specular数值,这个数值用于对材质显式的IOR(index of refraction)数值进行替代
  5. SpecularTint,这是专为美术同学操控方便而特设的参数,用于控制specular受basecolor染色的程度。不过这里需要注意,grazing角度下的Specular依然是不受染色影响的。
  6. Roughness,表面粗糙度参数,对于diffuse & specular反射效果都有影响。
  7. Anisotropic,各向异性程度参数,用于控制specular高光的aspect ratio(0表示各向同性,1表示最大程度的各向异性)
  8. Sheen,一个为grazing效果而添加的额外的参数,实际上最开始是专为布料材质所特设的(光泽)。
  9. SheenTint,BaseColor对Sheen的染色程度
  10. ClearCoat,一个额外的用于特殊用途的specular lobe
  11. ClearCoatGloss,控制ClearCoat的光泽度(0表示绸缎表面效果,1表示光滑表面效果)
5.3 Diffuse model details

部分模型的漫反射菲涅尔因子的计算公式是以如下形式给出的:

其中指的是反射的菲涅尔因子。

注意,出于对光路可逆性定理(Helmholtz reciprocity)以及菲涅尔折射定理的考虑,漫反射计算的时候必须要考虑两次折射效果,其中一次是从空气中进入材质内部,另一次则是从材质内部返回空气中,这也就是上面这个公式的来源。

根据MERL measured材质数据的表现以及以往的经验来看,单纯的Lambert漫反射效果在边缘位置的表现有点偏暗,而在这个基础上再加上对菲尼尔因子的考虑,只会使得结果更暗。

基于前面的观察结果,Disney给出了一个垂直反射下的漫反射经验模型。这个模型实际上是在光滑表面的漫反射菲涅尔阴影(diffuse Fresnel Shadow)与粗糙表面的高光效果之间进行过渡(Transition)计算。这个模型给出的漫反射效果美术同学很喜欢,实际上其效果跟之前专门调制的漫反射模型的效果很接近,不同的是, 这次的模型效果更好,且具有可以理解的物理意义。

Disney给出的模型抛弃了IOR对漫反射菲涅尔因子的影响,并且假设反射过程中不存在漫反射损失。这种做法可以直接指定输入漫反射的颜色值。这里使用了Schlick Fresnel近似,并将grazing角度下的垂直反射响应数值修改成通过粗糙度控制的一个特定参数(而非0)。基础漫反射模型给出如下:

这个模型在grazing角度下可以将光滑材质输入的漫反射数值降低0.5从而得到一种漫反射菲涅尔阴影效果,同时还可以将粗糙材质的漫反射响应数值增加0~2.5。其实际测试表现与MERL中的数据表现相一致,且对于美术同学来说也很友好。BRDF切片效果图可以参见Figure 17。

Disney的Subsurface参数是基础漫反射形状(base difuse shape)与Hanrahan-Krueger次表面BRDF的混合输出。这种做法有助于为远景物件以及平均散射路径长度较短的物件提供一个次表面效果;但是这个参数并不能给出一种表面透光效果,或者将表面光照bleed到物体阴影中,因此并不用于取代完整的次表面散射。

5.4 Specular D details

所有D项因子模型中,GGX模拟曲线的拖尾最长。实际上,GGX模型的表现跟Blinn所推崇的Trowbridge-Reitz (1975)分布模型是相同的,而Trowbridge-Reitz模型则以其对经验数据的拟合度高而闻名。虽然如此,对于很多材质而言,GGX的拖尾还依然不够长。

Trowbridge & Reitz(TR,下同)比较了他们的分布函数与其他分布函数在ground glass(地表玻璃?)实测数据上的表现。这里的一个其他模型是Berry (1923)提出来的,Berry模型跟TR模型的区别在于,一个使用的指数值为1,一个为2,而实际上,Berry模型的拖尾更长一点,从Berry模型跟TR模型,可以引出一个更为通用的表达模型,这里称之为Generalized-Trowbridge-Reitz(GTR,下同)模型,三种模型计算公式给出如下:

其中,是一个缩放常量,是粗糙度参数,取值范围为[0, 1],当的时候,模型对应的是光滑表面材质,而当的时候,模型对应的是粗糙的或者均匀的表面材质。

初步数据拟合的结果表示,取值在1到2之间的时候表现最好。此外,当,并令(可以看成是将函数分布定义域从半球扩展到球)时,此时的GTR模型就跟Henyey-Greenstein相函数的公式完全一致了。

要想得到好的表现,D项因子模型必须要是归一化的,此外,出于对渲染效率的考虑,这个模型还需要支持importance sampling。这两个要求都需要模型公式能够支持在半球面上的积分计算,而上面提供的几个模型都有闭合的积分计算结果。归一化,importance sampling以及高效各项异性形式的公式的推导在附录B中可以找到。

Disney的BRDF模型需要两个固定的specular lobe,一主一辅,这两个lobe使用的都是GTR模型。其中主lobe的,对应的是基础材质的specular特征,支持各项异性与金属性(anisotropic,and/or metallic);而辅lobe的,对应的是clearcoat层的specular特征,这个数据是叠加到基础材质之上的,必须是各向同性且非金属的(isotropic & non-metallic)。

对于粗糙度参数而言,Disney发现,如果用对其进行重映射的话,人眼感知到的粗糙度的变化就会变得更为线性。而如果不做这个重映射的话,想要调制出闪亮的材质表现,就需要使用非常小的粗糙度数值,这个过程会非常不直观;此外,在粗糙材质与光滑材质之间进行插值得到的结果也会非常的差,插值结果可以参见Figure 16以及Figure 19。

前面说过,Disney使用Specular参数取代了材质的显式的IOR特征,这个参数会用于确定材质的incident specular数值(添加了incident有什么特别含义吗?),归一化后的specular参数会被线性映射到[0, 0.08]范围的incident specular,这个数值范围对应的IOR范围为[1, 1.8],已经能够覆盖绝大部分的材质了。中值incident specular对应的IOR是1.5,这是一个使用很广的数值,也是Disney参数的预设值。对于那些超出上述IOR范围的材质,还可以将specular参数继续调高到超出1,不过这种处理需要小心一点。这里之所以要做这么多七绕八绕的映射,就是为了方便美术同学在调整参数的时候更为直观一点。

Disney的clearcoat层使用的是固定的IOR=1.5,这是聚氨酯纤维(polyurethane)的典型数值,之后使用前面说到的clearcoat参数来对效果进行缩放。这个参数也是归一化过的,对应的整体的缩放比例为[0, 0.25]。这一层虽然对于效果表现有着非常显著的影响,但实际上其在能量上(energy)上的数值是非常小的,因此不需要从基础材质中减去对应的能量消耗来达到能量守恒。当将clearcoat参数设置为0时,这一层就被disable了,且不会有任何消耗。

5.5 Specular F details

Schlick Fresnel近似模型的精度已经足够Disney使用,其计算公式要比完整的Fresnel模型要精简得多,且其引入的误差相对于其他原因引入的误差要小得多:

其中常量表示的是时的菲涅尔反射数值,亦即垂直入射时的反射数值,这个数值跟材质的IOR有关,对于绝缘体而言,这个数值是无色的(即RGB等同),对于金属度而言,这个数值与波长有关(RGB向量)。菲涅尔反射的数值跟有关,表示的是入射光线与half-vector之间的夹角,而非与表面法线之间的夹角,按照这个公式,在不同的F0作用下,其反射随着夹角的变化曲线如下图所示:

这个公式可以看成是incident specular反射(指数部分)与grazing角度下的反射数值(这个数值为1)的非线性插值(插值权重,为什么是非线性?)。另外从公式中可以看到,当光线以grazing角度入射时,此时,输出的菲涅尔反射因子为1,这是一个与波长无关的数值。

5.6 Specular G details

Disney的G项因子模型给出如下:在已知主specular lobe的Smith阴影因子的前提下,以Walter为GGX所推导的G项因子模型为基础,为了避免闪亮材质过曝,需要对roughness参数进重映射,将之从[0, 1]范围线性映射到[0.5, 1],考虑到前面roughness的平方处理,最终给出的粗糙度参数为:。

这个roughness重映射机制是考虑了measured数据的表现以及美术同学反馈(在原始的GGX G项因子模型下,一个很小的粗糙度参数可能会导致材质反射过于剧烈)之后给出的。最终得到的G项因子会跟随粗糙度而变化,同时部分兼顾了物理真实的特质且能够给出一个非常令人满意的表现。

Disney的clearcoat specular使用的是原始版本的GGX G项因子模型,且固定粗糙度参数为0.25,最终结果还不错。

5.7 Layering vs parameter blending

模型给出之后,下一步就是将之用shader来实现,而前面给出的所有参数都是有可能随着空间而变化的(即均是逐像素的属性数据)。如果在一个表面上添加了两个材质,并用一个mask进行索引,那么在渲染这个表面的时候就需要对mask进行采样与filter处理,并根据这个数值在两个材质间对所有参数进行插值。且在mask边缘处也要有不错的表现。

使用归一化以及视觉线性参数的好处是,在两个材质之间进行插值的时候,表现会非常直观,如Figure 19所示。

最终Disney采用的方案是,美术同学为材质参数制作一些预设(presets),之后根据texture mask,对这些预设进行插值混合。最终输出结果还算不错,且实施效率非常高,Shader UI界面如Figure 20所示。

6. Production experience on Wreck-It Ralph

《无敌破坏王》上除了头发之外的所有材质都是使用这套方案制作的。Figure 21给出了很多材质的表现效果。这里为很多粗粒度的材质的specular计算,比如地面,地毯等单独增加了一个法线数据。为了体现新的材质系统的威力,Disney还专门增加了面光源与IBL技术的开发与使用,实际证明面光源在PBR材质上的表现比点光源要更好一点。

6.1 Look development

使用同一的BRDF模型的好处就是开发效率得到了极大的提升。

6.2 Lighting

PBR光照使用的一个难题,是使用真实的光照强度与衰减。Disney这边开发了一个非物理的衰减控制方案,这个方案将光源的虚拟距离拉大,并同步据此修正光强以获得某个距离上的完美曝光效果。

PBR光照的另外一个难题,是需要与tone mapping相结合使用,Disney为之开发了一个全局的Tone mapping方案。

References

[1] Michael Ashikhmin. Distribution-based brdfs. Technical report, 2007.

[2] Michael Ashikhmin, Simon Premoze, and Peter Shirley. A Microfacet-Based BRDF generator. In Sheila Homeyer, editor, Proceedings of the Computer Graphics Conference 2000 (SIGGRAPH-00), pages 65-74, New York, July 23-28 2000. ACMPress.

[3] Michael Ashikhmin and Peter Shirley. An anisotropic Phong BRDF model. Journal of Graphics Tools: JGT, 5(2):25-32, 2000.

[4] M. M. Bagher, C. Soler, and N. Holzschuch. Accurate tting of measured reectances using a shifted gamma micro-facet distribution. Computer Graphics Forum, 31(4):1509-1518, 2012.

[5] P. Beckmann and A. Spizzichino. The scattering of electromagnetic waves from rough surfaces.
MacMillan, 1963.

[6] James F. Blinn. Models of light reflection for computer synthesized pictures. volume 11, pages
192-198, July 1977.

[7] R. L. Cook and K. E. Torrance. A reflectance model for computer graphics. Computer Graphics,
15(3):307-316, 1981.

[8] Arne D�ur. An improved normalization for the Ward reflectance model. Journal of graphics, gpu,
and game tools, 11(1):51-59, 2006.

[9] Dave Edwards, Solomon Boulos, Jared Johnson, Peter Shirley, Michael Ashikhmin, Michael Stark,
and Chris Wyman. The halfway vector disk for brdf modeling. ACM Trans. Graph., 25(1):1-18,January 2006.

[10] David Geisler-Moroder and Arne D�ur. A new Ward BRDF model with bounded albedo. Comput. Graph. Forum, 29(4):1391-1398, 2010.

[11] Pat Hanrahan and Wolfgang Krueger. Reflection from layered surfaces due to subsurface scattering.
In Proceedings of the 20th annual conference on Computer graphics and interactive techniques, SIGGRAPH '93, pages 165-174, New York, NY, USA, 1993. ACM.

[12] Xiao D. He, Kenneth E. Torrance, Francois X. Sillion, and Donald P. Greenberg. A Comprehensive Physical Model for Light Relfection. In Computer Graphics (ACM SIGGRAPH '91 Proceedings), volume 25, pages 175-186, July 1991.

[13] Csaba Kelemen, Laszlo Szirmay-Kalos, and Laszlo Szirmay-kalos. A microfacet based coupled
specular-matte brdf model with importance sampling. Eurographics Short Presentations, 2001.

[14] Murat Kurt, L�aszl�o Szirmay-Kalos, and Jaroslav K�riv�anek. An anisotropic brdf model for tting
and monte carlo rendering. SIGGRAPH Comput. Graph., 44(1):3:1-3:15, February 2010.

[15] Eric P. Lafortune, Sing-Choong Foo, Kenneth E. Torrance, and Donald P. Greenberg. Nonlinear approximation of reflectance functions. In Computer Graphics (ACM SIGGRAPH '97 Proceedings), volume 31, pages 117-126, 1997.

[16] Robert R. Lewis. Making Shaders More Physically Plausible. In Fourth Eurographics Workshop
on Rendering, number Series EG 93 RW, pages 47-62, Paris, France, June 1993.

[17] Joakim L�ow, Joel Kronander, Anders Ynnerman, and Jonas Unger. Brdf models for accurate and
efficient rendering of glossy surfaces. ACM Trans. Graph., 31(1):9:1-9:14, February 2012.

[18] Wojciech Matusik, Hanspeter Pster, Matt Brand, and Leonard McMillan. A data-driven reflectance model. ACM Transactions on Graphics, 22(3):759-769, July 2003.

[19] Laszlo Neumann, Attila Neumann, and Laszlo Szirmay-Kalos. Compact metallic reflectance models.
Computer Graphics Forum, 18(3):161-172, September 1999. ISSN 1067-7055.

[20] Laszlo Neumann, Attila Neumann, and Laszlo Szirmay-Kalos. Reflectance models by pumping
up the albedo function. In Machine Graphics and Vision, pages 3-18, 1999.

[21] Addy Ngan, Fr�edo Durand, and Wojciech Matusik. Experimental analysis of BRDF models. In Kavita Bala and Philip Dutr�e, editors, Eurographics Symposium on Rendering, pages 117-126, Konstanz, Germany, 2005. Eurographics Association.

[22] Ko Nishino and Stephen Lombardi. Directional statistics-based reflectance model for isotropic
bidirectional reflectance distribution functions. J. Opt. Soc. Am. A, 28(1):8-18, Jan 2011.

[23] Michael Oren and Shree K. Nayar. Generalization of lambert's reflectance model. In SIGGRAPH,
pages 239-246. ACM, 1994.

[24] Romain Pacanowski, Oliver Salazar Celis, Christophe Schlick, Xavier Granier, Pierre Poulin, and Annie Cuyt. Rational brdf. IEEE Transactions on Visualization and Computer Graphics, 99(PrePrints), 2012.

[25] Bui-T. Phong. Illumination for computer generated pictures. Communications of the ACM, 18(6):311-317, June 1975.

[26] Fabiano Romeiro, Yuriy Vasilyev, and Todd Zickler. Passive reflectometry. In Proceedings of the 10th European Conference on Computer Vision: Part IV, ECCV '08, pages 859-872, Berlin, Heidelberg, 2008. Springer-Verlag.

[27] Iman Sadeghi, Heather Pritchett, Henrik Wann Jensen, and Rasmus Tamstorf. An artist friendly hair shading system. In ACM SIGGRAPH 2010 papers, SIGGRAPH '10, pages 56:1-56:10, New York, NY, USA, 2010. ACM.

[28] Christophe Schlick. An Inexpensive BRDF Model for Physically-Based Rendering. Computer Graphics Forum, 13(3):233-246, 1994.

[29] B. Smith. Geometrical shadowing of a random rough surface. IEEE Trans. Ant. and Propagation, AP-15(5):668-671, September 1967.

[30] K. Torrance and E. Sparrow. Theory for o-specular reflection from roughened surfaces. J. Optical
Soc. America, 57:1105-1114, 1967.

[31] S. Trowbridge and K. P. Reitz. Average irregularity representation of a rough ray reflection.
Journal of the Optical Society of America, 65(5):531-536, May 1975.

[32] Bruce Walter. Notes on the Ward BRDF. Technical Report PCG-05-06, Cornell Program of Computer Graphics, 2005.

[33] Bruce Walter, Stephen R. Marschner, Hongsong Li, and Kenneth E. Torrance. Microfacet models
for refraction through rough surfaces. In Proceedings of the Eurographics Symposium on Rendering,

[34] Gregory J. Ward. Measuring and modeling anisotropic reflection. In Edwin E. Catmull, editor, Computer Graphics (SIGGRAPH '92 Proceedings), volume 26, pages 265-272, July 1992.

[35] L. B. Wol, S. K. Nayar, and M. Oren. Improved diffuse reflection models for computer vision. International Journal of Computer Vision, 30(1):55-71, October 1998.

Appendix B GTR Microfacet Distribution

B.1 Microfacet distribution review

一个好的微表面分布函数在半球面上的取值应该要是归一化过的,从而保证最终微表面的投影面积之和等于1:

这个公式用球面坐标改写后的形式给出如下:

对于importance sampling,这里可以很容易就选取概率分布函数,因为这个数值本身就已经是归一化过的。这里需要注意,是对于half-vector而言的密度函数,对于光照向量的密度函数是:

为了在半球上生成采样点,需要拆分成由两个分布函数溯源相乘的球面形式:。对于各向同性的分布函数而言,这个拆分过程比较简单,因为在这种情况下,整个分布函数对于是没有依赖的,此时,而对于各向异性分布函数而言,整个计算过程就会稍微复杂一点:

之后对于上面的两个pdf元素进行分别积分,得到对应的cdf(cumulative distribution function),再之后将之倒数用作后续的采样函数:

根据这里的两个采样函数以及对应的归一化随机变量就可以对进行计算,并将之投影到以法线n,切线x,y组成的坐标空间中,从而得到最终的half-vector h,之后根据观察方向v,就可以利用反射定律计算出光照输入方向l:

B.2 GTR

根据前面的推导,归一化后的GTR的分布函数与采样公式给出如下:
D_{GTR}(\theta_h) = \frac{(\gamma - 1)(\alpha^2 - 1)}{\pi (1 - (\alpha^2)^{1-\gamma})(1+(\alpha^2-1)cos^2\theta_h)}\\ \phi_h = 2\pi\xi_1 \\ cos\theta_h = \sqrt{\frac{1-[(\alpha^2)^{\gamma - 1}(1-\xi_2)+\xi_2]^\frac{1}{1-\gamma}}{1-\alpha^2}}
这个分布函数对于任意的值都是有效的,不过,当的时候,会有一个奇异值,如果取就会得到如下的形式:

当取时,公式还可以分别简化成如下形式,后者跟GGX等价:
D_{GTR_{3/2}}(\theta_h) = \frac{\alpha^2 + \alpha}{2\pi} \frac{1}{(1+(\alpha^2-1)cos^2\theta_h)^{3/2}} \\ cos\theta_h = \sqrt{\frac{1}{1- \alpha^2}(1- \frac{\alpha^2}{(1+(\alpha-1)\xi_2)^2})}\\ D_{GTR_{2}}(\theta_h) = \frac{\alpha^2}{\pi} \frac{1}{(1+(\alpha^2-1)cos^2\theta_h)^2} \\ cos\theta_h = \sqrt{\frac{1-\xi_2}{1+(\alpha^2-1)\xi_2}}
为了得到一个各向异性的分布函数,这里还需要用取代以实现roughness随而变化,对于情况,相应的公式给出如下:
D_{GTR_{2aniso}} = \frac{1}{\pi \alpha_x \alpha_y} \frac{1}{(sin^2\theta(cos^2\phi/\alpha^2_x+sin^2\phi/\alpha^2_y)+\cos^2\theta)^2}\\ tan\phi_h = \frac{\alpha_y}{\alpha_x} tan(2 \pi \xi_1) \\ cos\theta_h = \sqrt{\frac{1-\xi_2}{1+(1/(cos\phi^2/\alpha^2_x + sin\phi^2/\alpha^2_y)-1) \xi_2}}
用下面的等价关系对上面的公式进行改写:

得到如下的公式:

另外,如果将转换成跟的形式,就可以避免在时的奇异值处理,还能够使得half-vector的计算更为直接:
sin\phi_h = \frac{\alpha_y sin 2\pi \xi_1}{r} \\ cos\phi_h = \frac{\alpha_x sin 2\pi \xi_1}{r} \\ tan\theta_h = r\sqrt{\frac{\xi_2}{1-\xi_2}} \\ h^, = \sqrt{\frac{\xi_2}{1-\xi_2}} (\alpha_x cos(2\pi \xi_1) x + \alpha_y sin(2\pi \xi_1) y) + n \\ h = \frac{h^,}{|h^,|}
这里的指的是投影后的half-vector。

可惜的是,对于任意的值,这个各向异性分布函数的归一化结果(normalization)都没有一个闭合的形式。

你可能感兴趣的:(【Siggraph 2012】Physically-Based Shading at Disney)