文/枫叶林

1、介绍

在我们成功地完成了基于物理的头发明暗处理(Tangled .27)之后,我们开始考虑开发基于物理模型的更广泛的阴影处理模型。在基于物理的头发模型中,我们能够在保持美术控制的同时获得很大程度的视觉丰富性。然而,事实证明,将头发的光照与场景的其余部分结合在一起,仍然使用传统的“ad-hoc”阴影模型和实时的灯光是很有挑战性的。

对于随后的电影,我们希望增加所有材料光照效果的丰富性,同时使照明效果在材料和环境之间更加一致,同时也希望通过使用简化工作流来提高美术设计师的工作效率。

刚开始时,我们不清楚要使用哪种光照模型,甚至不知道怎样使用。我们是否应该使用能量守恒定律?是否应该支持折射率等物理参数?

对于漫反射Lambert似乎是公认的公式,而高光似乎在论文中受到更多的关注,一些模型如Ashikhmin-Shirley (2000) [3]旨在直观,实用性强,物理性貌似合理。像其他一些模型He et al. (1991) [12]提供了更加全面的物理模型,还有一些旨在改进数据拟合,[15, 14, 22, 17, 4],但是很少直接操作。我们已经实现了几种模型,可用让设计师选择并且组合他们,但是复杂的参数又使我们回到了我们试图避免的简单工作流。

一项对大量材料进行测试的论文Ngan et al. (2005)比较了五种流行的光照模型,有些模型总体上比其他模型表现得更好,但有趣的是,模型的性能之间有很强的相关性—有些材料很好地代表了所有的模型,但对于其他材料的来说,没有模型证明是合适的。在少数情况下添加高光效果会很有用,那么问题来了:在复杂的材质中什么模型可以作为代表?

要回答这个问题,并更直观的评估BRDF模型,我们开发了一个新的BRDF查看器,可以显示和比较测量和分析BRDFs。我们发现了新的、直观的方法来测量BRDF数据,我们发现在已知模型中没有很好的模型来体现材料中特性。

在这些记录中,我们将分享研究测量材料的观察结果,以及我们已经收集到的关于哪些模型与测量数据吻合的见解。然后我们将展示我们现在正在使用的所有当前产品的新模型。我们还将描述我们在设计中采用这种新模式的经验,并讨论如何在保持简单性和健壮性的同时,增加美术设计师的易控性。

2、微平面模型microfacet

我们定义的BRDF模型在测量的材质和microfacet模型之间进行对比[30,7, 33],microfacet描述了一个表面在光照向量L 视线V下发生反射,那么一定存在一部分表面或者微平面上其法线对齐于与L和V的半角向量。半角向量有时候也定义为微平面法线: 135313xzzt77g8pddll2gz.png ,对于各项同性的一般microfacet模型如下:

133306afj3jdd2mz5d12z2.png
该公式中漫反射项为未定义项,diffuse通常假定用常量表示,对于高光部分,D是微平面法线分布函数,F是fresnel函数,G是几何衰减函数。θL和θV在L和V向量相对于法线的入射角,θH是法线和半角矢量H之间的夹角。θD是 L和半矢角量H之间的的角度。

大多数貌似合理的物理模型都没有在微平面上进行具体的描述,microfacet模型有分布函数模型,菲涅耳系数和其他可以添加的如几何衰减函数。唯一真正的区别microfacet模型和其他模型之间是否有明确的来自模型推导的 133306fz4capq2pzl42d43.png 因子,在模型中不包含可以确定一个隐含遮蔽因子乘以4 cosθl cosθv 分解出D和F的因子。

3、可视化测量BRDFs

3.1 The “MERL 100”(三菱电气研究实验室)

133309eqcbb1jrnjcbquzc.png 图九:高光分布,左图展示了高光波峰值 black =MERL chrome, red = GGX (α = 0.006), green = Beckmann (m = 0.013), blue = BlinnPhong (n = 12000). 右图分别是chrome ,GGX 和beckman效果。
为了更宽的亮度拖尾渐变效果,Walter et al.(2007) [33]等人提出了GGX分布函数,GGX具有比其他函数更宽的渐变光效果,但是仍未能捕捉光的chrome特性。对拟合材料尾部渐变的重要性在最近的几个模型中也展示出来 L¨ow et al. (2012) [17] and Bagher et al. (2012) [4].这两个模型都采用了一个额外的参数来控制光波峰和光渐变的效果。另一个选择光渐变的的方法是采用第二个更宽的高光反射峰值Ngan [21].

4.3 高光F项观察

133309qirnptnlorm86lnt.png 图十:100个MERL材质的归一化Fresnel方程的θd的变化。其反应了θh从1到4度,入射光线被吸收减少,到归一化曲线的θd从45度到80度的形状,虚线表示Fresnel理论方程。
菲涅耳反射系数,F(θD),表现在镜面反射增加随着光线方向和视线向量变化而变化,预测所有光滑的表面会在平射角方向有100%镜面反射。对于粗糙表面,100%的镜面反射无法达成,但反射率仍将变得越来越高。

如图十展示了MERL材质的Fresnel曲线,对曲线进行偏移和缩放,比较其响应的整体形状。每个材料显示一些反射系数增加到接近θd=90。这也可以在图1的图像切片的顶部边缘看到。

值得注意的是,靠近入射平射角附近的曲线的坡度比Fresnel预测的更大,该观察在the motivation of the Torrance-Sparrow (1967) [30] microfacet model 中解释了在较高入射平射角下的“闭角峰值”。要注意 133309m0d0224fq41w22us.png 因子在微平面模型中平射角处趋于无穷大的时候,无论是在模型和真实世界中,平射角的反射会被阴影效果减少都不是问题。G项代表光照方向的衰减,视线方向的遮蔽和平射角方向系数。G因子代表衰减系数当其与 135602xmmcl03z3ziy0539.png 组合使用会带来更好的效果。

4.4 高光G项观察

133310o7b5o7svwd6awaq7.png ,成为无G模式,结果会在反射余角显示过于黑暗。这儿最重要的是G函数的选择对反照率有着深远的影响,反照率反过来又对表面颜色产生影响。

133310q4vx6px4qnnj4xwl.png 图十二:几种高光G项模型的反照率图比较,所有的F和D项一样。左图光滑表面a=0.02,右图粗糙a=0.05,NoG 模式去掉了G项和cosθlcosθV项。
已经开发了几种高光反射模型,其目的是产生更合理的反照率响应曲线[ 30, 29, 19,20, 8, 9,33, 10, 14 ]。对于其中一些,目的是使反照率完全持平,以保持能量平衡。根据图11中MERL数据的反照率图,这不是一个不合理的目标,虽然大部分的材料确实显示了某种入射余角增益。即使这样,一些平射角增益很可能是由于非高光效果。

有一些简单模型,其源于微平面分布函数D,Smith [29]和随后的 Walter (2007) and Schlick (1994)逐渐的在研究。如图12 Walter 的Smith 的反射率在光滑表面显著增加,这在测量数据中是看不到的。对于粗糙值,这个效应似乎合理。注意,GSmith只具有少量函数的解析形式,通常使用列表积分或其他近似值代替。

在最近的 Kurt et al. (2010) [14]等人提出经验模型采样了不同的方法和滤波数据及一些自由参数,图表十二展示了a=0.25的 Kurt 模型。α的其他值可以产生宽范围的反照率效应,值得关注的是粗糙模式下Kurt 模型在入射余角处分离。另一种选择是只使用一个Walter的GSmith,甚至简单的GSchlick、或者把G作为一个自由参数。

4.5 布料Fabric

在MERl采样数据中很多Fabric采样在平射角和Fresnel峰值处都展现出比粗糙材料更强一点高光。如图13所示。

133311lnzhmnhendxz13bv.png

其中f(θ)是菲涅耳反射系数[注:从菲涅尔定律,保持Helmholt互通,考虑到两次折射是必要的,一次在表面内部,另一次在表面外。]

在测量数据的观察中,依赖于我们工作室过去的经验,Lamber模型在边缘经常表现得过暗,增加Fresnel因子可以使其看起来更物理正确一点。

基于我们的观察,我们凭经验开发了一套漫反射模型,在光滑表面的Fresnel遮挡和粗糙表面附加亮点之间的转换。这种效果的一种可能解释是,对于粗糙表面,光进入和离开微平面表面的特征导致了平射角处的折射增加。在任何情况下我们的美术设计师们都喜欢它,它类似于我们过去的ad-hoc模型,只是现在它更合理,更加物理正确。

在我们的模型中,我们忽略了漫反射菲涅耳因子的折射率,并且不考虑漫反射入射光线的损耗。我们使用Schlick Fresnel的粗糙度参数近似修改入射余角反射到一个特定的值,而不是默认为0。

我们的漫反射模型:

133312fp9jen8jj9ne03jj.png
这产生了一个Fresnel反射阴影,使在光滑平面平射角减少了0.5的漫反射率,在粗糙度增加了高达2.5的漫反射率。这似乎给MERL采样数据一个合理的解释,也被美术设计师们所赞同。图十七显示了各种粗糙度下的BRDF图像。

133312vikckkgpqh4g2ppz.png
我们的次表面参数在混合了基础漫反射和HanrahanKrueger subsurface BRDF [11]模型。这对于在远距离物体和平均散射路径长度小的物体上产生次表面现象很有用;然而,它不能完全代替次表面散射,因为它不会把光线投射到阴影或穿过表面。

5.4高光D项细节

当前流行的光照模型中,GGX是具有最长渐变拖尾效果的。这种模型相当于是被 Blinn (1977) [6] 赞赏效果并符合实验数据的TrowbridgeReitz(1975) [31]模型。然而,这种模型对于许多材料来说仍然没有足够长的渐变拖尾。

Trowbridge 和Reitz对比了几个分布函数模型和玻璃的测量数据。其中一个来自Berry (1923)的分布函数,有非常相似的形式,但其指数是1而不是2产生了一个更长的渐变拖尾。这表明了其是一个指数变化更广泛的分布模型,可以把它称作:

Generalized-Trowbridge-Reitz或者GTR模型。

133312ganad0nr0ucup5nn.png
在这些分布函数中C是一个常量, a是范围在0-1之间粗糙度,a=0表示完全光滑表面,a=1表示完全粗糙或者均匀分布表面。

133313qwplv8l2jljr2t8t.png 图十八:GTR分布函数在不同r值的曲线
初步拟合结果表明r值在1到2之间效果最典型。有趣的是GTR的r = 3/2相当于Henyey-Greenstein函数的θ = 2θh的时候,θh的倍增可以看作是半球分布到球分布的扩展。

合理的microfacet分布函数必须被归一化,有效的渲染也必须支持重要采样数据。两者都要求分布函数可半球积分。幸运的是,这个函数有一个简单的闭合形式积分。在附录B中推导了归一化和重要抽样函数以及有效的各向异性形式。

我们的BRDF模型采用了2个固定的高光叶片(lobes),都使用了GTR模型,主叶片r=2,副叶片r=1,主叶片表示基础材质颜色,并且可以是各项异性或(和)金属性的。副叶片代表了clearcoat层的材料,因此总是各项同性和非金属性的。

粗糙度,我们发现a=roughness*roughness的时候,粗糙度更能展现出线性空间变化。如果没有这个映射,对于发光材质就需要非常小的或者非直观的参数控制。同时也会导致在介于粗糙和光滑之间的材质会产生一个粗糙的结果。得到的插值结果如图16和19所示。

代替折射光指数(IOR),我们的高光参数决定了入射光量。这个参数归一化后被重新映射到入射高光范围[0.0, 0.08].这相当于IOR的值在[1.0, 1.8]范围,涵盖了大部分通用材料。值得注意的是参数的中间值对应的是IOR值为1.5,这是很有代表性的值也是我们默认的值。高光参数可能被推到一个更高的IOR值,但是应该小心处理。这种参数的映射大大增加了美术设计师们进行合理材质开发的过程 ,同样的效果放在真实世界中效率会非常低,因为其参数空间非常少。

对于我们的clearcoat 层。我们使用了固定IOR值1.5.具有代表性的聚氨酯,允许美术家们使用clearcoat参数来缩放图层的整体强度。归一化的参数相当于整体值在 [0, 0.25]之间。这一层有很大的视觉冲击效应,其有相对较小的能量,所以我们不从base层减去任何能量趣弥补他。当该层设置为0 的时候,clearcoat层为无效,也没有成本开销。

5.5高光F项细节

对于我们而言,Schlick Fresnel比 full Fresnel 近似充分且简单,由近似引起的误差明显比其他因素导致的误差小。

133313ph0vb4h0hlmig48n.png
常数F0代表了正常入射光线角近法线的高光反射,通常是无色的电介质和有色金属。实际取决于折射率IOR,注意高光反射来自于微平面,因此F取决于θd和光线与半角向量的角度,不是入射光线和表面法线的角度。

菲涅耳函数可以被视为入射角(入射光线靠近法线)和入射余角(入射光线靠面)高光的插值。注意当入射光线处于平射角处所有光都被反射后,将呈现出无色状态。

5.6高光G项细节

对于我们的模型,我们采用了混合模式。鉴于 G_Smith 模型对原始高光很有效。我们通常的G项使用Walter推导的GGX模型。但重新映射粗糙度降低了表面光泽。具体而言,为了计算G项,我们线性的将原始粗糙度[0,1]映射到[0.5,1]。注意,我们做这个操作是在粗糙度进行平方操作之前,所以最后的a值是(0.5 + roughness/2)的平方。

这个映射是基于比较了测量数据和美术大师们的反馈,对于较小粗糙度值 高光有点过热、这个给了我们一个随粗糙度变换的G函数,至少是看起来的物理正确。对于我们的clearcoat高光我们没有使用Smith G函数,只是简单使用固定表面粗糙度为0.25的G_GGX函数,然后发现其实也蛮合理的,美术大大们也能愉快的接受该效果。

5.7分层和参数混合

一旦我们确定了我们的新模型,我们就需要决定如何将它集成到我们的着色器中。第一个问题是哪些参数需要在空间上变化,答案是所有的;如果一个美术设计师只想简单把两种不同的材料放在一个表面上并在它们之间蒙上mask,那么就需要在所有的参数之间进行插值。此外,mask将被过滤,而且在mask的模糊边缘处应该要使材质看起来正确。

我们的设计原则的是使所有的参数标准化,且至少是线性空间感知的,即材料通常以非常直观的方式进行插值。如图19所示。

一旦我们意识到可以直接插值,我们就想知道我们是否可以通过mask实现所有的空间变化。这个方法是美术设计师将会使用一个材质预置列表来使用mask进行简单的混合。结果证明非常好用,大大简化了工作流程。提高了材质的一致性。并使我们的着色器更有效率、如图20所示的着色器UI。

133314duiurzjfs5idd06d.png
或者半球坐标系表达:

133314dyu0m7ybybrpzgww.png
对于重要的采样,很方便的选择归一化的pdfh = D(θh)cos θh。注意 pdfh是相对于半角矢量的密度,对光照方向矢量的密度为:

133315l1h3abx313k5nl1h.png
为了再半球坐标上生成采样数据,pdf将会被分割成球形组件,pdfh = pdfθh pdfφh .对于各项同性分布的这种分级是微不足道的,该分布不依赖于n φh 和pdfφh =1/2PI,对于各项异性,分解是通过集合θh 来得到:

133315oiz4dejffia5hw0a.png
Pdf的每个组件被整合到cdf,通过倒转该形成相应的采样功能:

133315fbzn1au4tkt7oay7.png
给两个采样函数统一和随机的变量ξ1 和 ξ2, θh 和φh可以被计算和在法线n,切线x ,副法线y 组成的坐标系下投影到到半角向量h。最后给出一个v向量,l可以被h和v的叉乘计算。

133315n030xtopzmroe6rr.png
B.2 GTR

从上面的推导,标准的GTR 分布函数可以描述为:

133315nkp6kfmg2kgfu26k.png
这种分布在γ > 0的时候是有效的,不管怎样γ = 0时 存在一个奇点,以极限γ → 1产生这种交替形式:

133316js0zuvmskij58pmi.png
对γ = 3/2 和γ = 2的简化形式,后者相当于GGX:

133316mzm460z44q7a0144.png
形成各项异性分布,各种表面粗糙度相关的φ被 133316s0l78lil0lh7877z.png ,γ = 2的结果如下:

133317lb26sfrsf67zk4f6.png
替换这些向量恒等式:

133317nw2ef2x93rkkffbh.png
在等式(10)中产生一个有效的替换形式:

133317v0pgp1naeqy9eve6.png
未来,tan φh从(11)到 sin φh and cos φh,避免因φH坐标的特殊处理,也让H来计算更直接:

133317c5lrn7ntk9m5spbi.png
注意:h’是投影后的半角向量,r是归一化因子 133318ha30y3qp0ap95stz.png 可以被忽略或取消。

对任意的γ值,各项异性分布的归一化,不幸的是 没有一个闭合形式。

附录

各项异性高光细节:

原始注释省略了,细节参数如下:

133318j6nf6e6r2bwr296z.png
0.9因子限制的长宽比为10:1。

光泽细节

原始光泽细节注释省略了,根据4.5章节的纺织物采样描述的观察,漫反射+高光反射的模型在BRDF的各种模式中占有主导地位。这和Fresnel因子很相似。这个形状和fresnel也很像。我们的模型使用了额外的BRDF 叶片(lobe),采用了 Schlick Fresnel 模型, 133318dwfszxshjmhsrm2m.png ,并且可以用sheenTint 参数调节基础颜色的色彩朝向。

再谈高光G

Heitz最近发表的文章深入分析了microfacet shadowing,Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs, JCGT 2014.Heitz提出了“weak white furnace test”验证了基于物理的mask功能的合理性并且展示了它。已知的函数只有 Smith shadowing model [29, 33] 和the V-cavity model比较合理。尽管后者可能不太逼真。

基于Heitz的分析,我们已经消除了我们的Smith G映射原始高光的ad-hoc版本,对于金属,结果显然要好得多,对一般材料来说尤其如此。特别用正确光源渲染某些全局光照GI环境时,看起来对很可能对Walter模型相关的光滑材质导致在MERl测量数据在入射余角处的错误。Heitz也从Smith公式推导出了正确的各项异性公式。我们忽略了一个细节。

对于clearcoat,我们仍然使用各项同性的GTR1.0的叶片处理拖尾,并公认ad-hoc G因子。这不是意味着阴影和mask代表一个看似合理的物理正确,相反,它代表了一个半薄透明的层,它可能包含了多个反射和透射事件。而我们目前的公式对各种材料都很有效。也就是说,包含了大部分效果的物理模型是比较受欢迎的。

Over!

致谢:

...thanks all!

via:Gad

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛