游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7606|回复: 0

纯干货:基于物理的渲染

[复制链接]

8723

主题

8783

帖子

1万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
11952
发表于 2018-4-17 14:06:45 | 显示全部楼层 |阅读模式
文/枫叶林

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的半角向量。半角向量有时候也定义为微平面法线: 微信图片_20180417135250.png ,对于各项同性的一般microfacet模型如下:

微信图片_20180417132802.png

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

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

3、可视化测量BRDFs

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

微信图片_20180417132814.jpg
图一:100 BRDF的MERL图片


100个一组的各项同性BRDF材料样品被Matusik等人采样,涵盖了广泛的材料包括油漆木材,金属,织物,石材,橡胶,塑料和其他合成材料。这组数据是免费提供的,在www.merl.com/brdf三菱电子研究实验室,通常用于新的BRDF模型评估。如图表一所示。

100个MERL中的每个BRDF的采样密度在90,90,180的立方体沿θH,θD,和φd轴坐标分别采样。这些对应于1度增量(除了θh轴),被扭曲到集中在镜面峰值附近的数据样本。测量已经被过滤并根据需要外部修改,这样数据中就没有漏洞了。数据很容易使用,但是还不清楚数据的准确性,特别是在光线沿水平面附近。正因为如此,一些研究人员在进行拟合时丢弃了接近水平面的数据,但这些数据仍然是值得考虑的,因为它可以对材料的外观产生深远的影响。

3.2 BRDF浏览器

微信图片_20180417132817.jpg
图二:Disney BRDF Explorer

为了检查MERL测量的材料数据和比对分析模型,我们开发出了一种新的工具,BRDF资源管理器,如图二所示,它开源在github.com/wdas/brdf,其具有以下特点:

  • 加载和用GLSL分析多个BRDF的能力
  • 负载测量BRDF的能力,包括各项异性材料的样品
  • 多个数据图(3D半球视图,极坐标图和各种笛卡尔图)
  • 计算反照率图(即方向性半球反射率)
  • 带有曝光控制的图像切片视图
  • 光照对象视图与重要性采样的IBL
  • 光照球体视图
  • 参数模型的动态UI控件

这个工具在比较现有的分析模型和开发我们的新模型时,是非常有用的。令人惊讶的是,它也被证明是对美术设计师作为交互式BRDF编辑器很有用,使他们更深入地了解模型参数和BRDF空间。

3.3 图像切片

微信图片_20180417132819.jpg
图三:BRDF图像切片红色塑料和高光红色塑料显示与“切片空间”的示意图

对测量材料进行可视化的最简单、最直观的方法之一就是简单地将其视为一堆图像,我们发现这是一个非常强大的工具,可以获得对数据的直觉体验。事实上,所有有趣的特点在MERL100材料的φD = 90层可见。图3显示了这个空间的示意图以及两个材料样品。其他部分大致是该版本的扭曲版本,如图4所示。这一观测在最近的文章Romeiro (2008) [26] and Pacanowsi (2012) [24] 为各向同性的BRDF模型简化的形式的基础(θH,θD)。

微信图片_20180417132822.jpg
图四:镜面的红色塑料为φD值不同的切片,L在半角矢量的旋转方位。右上角的黑色区域代表BRDF区域的一部分,L或v向量在水平线以下。

在图像切片中,左边缘代表镜面反射峰,上边缘代表菲涅耳峰。注意,沿着底部边缘,光线和视线向量重合,因此底部边缘代表垂直反射,特别右下角代表平射光线(视线和光线方向一致并且与平面的夹角为0)的反光。漫反射显示在整个BRDF空间,但图像的中间部分代表了漫反射的效应。

图3示意图像还包括θL或θV的等值线,许多漫反射效果,倾向于遵循这个轮廓线。请注意,这些等值线拉直到φD接近零,比较φD可以展现出材质的效果是由于漫反射还是高光反射。另一个提示当然是颜色,漫反射是由于次表面散射和吸收引起的可见光,而高光反射来自表面且不是有色的(除非表面是金属的,在这种情况下没有漫射成分)。

4、MERL材质的观察

4.1 漫反射观察

微信图片_20180417132825.jpg
图五:该材质展示了漫反射颜色的变化,第一行渲染时点光源响应球面,第二行BRDF图像切片。


漫反射是指折射到表面、经散射、部分吸收和再发射的光线。考虑到某些光被吸收,漫射反应将带有表面的颜色,任何有色非金属材料的一部分都可以被认为是漫反射的。

微信图片_20180417132827.jpg
图六:100个MERL材料的反射光效果,左边50个光滑材质(f(0) > 0.5),右边50个粗糙材质(f(0) <0.5),θh = 0是高光峰值,θh = 90代表漫反射显示(无高光)。


微信图片_20180417132830.jpg
图七:红色塑料,高光和漫反射的效果图


Lambert漫反射模型假定折射光散射足够大,不具有方向性,因此漫反射是恒定的。这可以在图一和图五的图片切片可以看到其材质展示出Lambert效应。【朗伯着色器包含一个n*l因子,但这是照明积分的一部分,而不是BRDF】

如图六所示许多材质展示了反射效果下降,其他的展示了高光点。这似乎是由于表面着色图像切片的扩散现象。值得注意的是,这与粗糙度有着密切的关系,即光滑表面,即那些具有较高镜面峰值的表面往往具有阴影边缘,而粗糙表面往往有一个峰值而不是阴影。这种相关性可以反射响应曲线也在图7中渲染出来。

用菲涅耳方程预测光滑表面的入射光:在平射角下,从表面反射更多的能量,较少的折射到表面,从而形成漫射。然而,漫射模型一般不考虑表面粗糙度对菲涅耳折射的影响,所以要么假设表面光滑,要么忽略菲涅耳效应。

微信图片_20180417132832.jpg
图八:BRDF贴片的三种模型

Oren Nayar模型(1995)预测了粗糙度的增加导致漫反射的变化,然而这种反射模型没有实际测量数据的支持,而且不能表现出漫反射的扁平显示。

Hanrahan Krueger模型(1993),来源于次表面散射,还预测了扁平化的扩散的形状,但在边缘没有一个足够强的显示波峰值。与Oren Nayar相反,该模型假定一个完全光滑的表面。Oren Nayar和Hanrahan Krueger的对比如图8所示。

除了反射峰值,额外的漫反射变化可以在图5中看到,强度和颜色的变化遵守等值线θl/θv,在某些情况下这归因于次表面散射分层,然而分层次表面散射模型一般考虑表面光滑,不产生强反射峰值(ggx的光点)。

4.2 高光D项观察

微平面的分布函数D(θH),可以从被测材料的反射响应中的观察,如图6所示.根据反射波峰的高度可以将材料分作2组,可以看做是粗糙度的展示。最高的波峰超过400.从金属铁开始,一旦波峰变平,曲线的其余部分显示了漫反射效果。

大多数的MERL材质比传统高光模型有更长高光渐变拖尾显示。如图9所示。这种材料的高光反射是典型的光滑,高度抛光的表面,镜面反射峰只有几度宽,高光反射的渐变宽度更多。奇怪的是传统的BeckMan BlinnPhong 和高斯分布几乎相同,既不能代表波峰也不能代表渐变光拖尾。

微信图片_20180417132835.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项观察

微信图片_20180417132838.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 中解释了在较高入射平射角下的“闭角峰值”。要注意 微信图片_20180417132841.png 因子在微平面模型中平射角处趋于无穷大的时候,无论是在模型和真实世界中,平射角的反射会被阴影效果减少都不是问题。G项代表光照方向的衰减,视线方向的遮蔽和平射角方向系数。G因子代表衰减系数当其与 微信图片_20180417135541.png 组合使用会带来更好的效果。

4.4 高光G项观察

微信图片_20180417132845.jpg
图十一:100个MERL材质的纹理图,左边50个光滑材质,随着入射光线靠近法线在75度左右变大然后变小,右边50个粗糙材质,随着入射光线靠近法线而变大。X轴是入射余角(grazing angles,入射光线与地面的夹角),y轴是反照率albedo.

在测量数据中很难分离G项,因为他要精确评估D和F项高光从漫反射从分离。然而G项的效果可以间接地反映在光照方向的反照率上。

反照率是总反射能量和总入射能量之比,从广义上讲,他代表材质表面的颜色、所有波长小于1。反照率也可以来自单一方向的光,比如太阳。这种情况下的反照率变成了直接与入射角方向有关的函数,他的所有角度和波长都要小于1.

大多数的直射光反照率在70度以前是比较平的如图十一,平射角的反照率与表面粗糙度有关,光滑的材料在75度左右略有增加,随后下降直到90度.粗糙表面会显著得跟着入射余角增加而变大。值得注意的是,总体反照率相当低,只有少数材料的反照率在0.3以上。

许多粗糙物质所表现出的平射角反射效果其视觉颜色变得更鲜明。对应于模拟g因子的选择对反照率的影响如图12所示,非常光滑和非常粗糙的表面。值得注意的是如果忽略G和 微信图片_20180417132848.png ,成为无G模式,结果会在反射余角显示过于黑暗。这儿最重要的是G函数的选择对反照率有着深远的影响,反照率反过来又对表面颜色产生影响。

微信图片_20180417132850.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所示。

微信图片_20180417132853.jpg
图十三:几种Fabric的BRDF采样

平射角效应可以解释为布料通常具有传输纤维特性,可以影响附件物体的轮廓颜色。这也可以解释在布料在平射角的效果比microfact模型预测的要好。虽然有布料有许多非常复杂的材质效果,但是MERL布料材质似乎比模型更简单。

4.6 彩虹

微信图片_20180417132856.jpg
图十四:color-changing-paint-1,2,3的BRDF图像,顶行:原始数据,底行:相应 的色 度图像被每个像素的1/ max(r, g, b)缩放生成。

颜色的变化如图十四所示,表现出了一致的的色块颜色在空间(θH,θD)对φD依赖最小的时候。这似乎看起来是一个完全的高光反射,当有很少的反射效果从高光反射峰值分离时。这可以通过调节高光颜色来改变θh 和 θd ,也可以用一张贴图来调整。

4.7 数据异常

部分MERL数据的异常在图十五中展示。

  • 一些非常闪亮的材料,特别是金属,呈现出不对称的高光,镜头光晕可能是由于各向异性的表面划痕导致的。
  • 75度以下的数据似乎是推断出的。
  • 织物的平射角效应常常有奇怪的不连续性,这可能是由于织物在测量过程中在球体上拉伸并在边缘处起皱。
  • 一些木质在θD变化时呈现高光模式,可能是由于木纹造成的。
  • 次表面散射效果是被烘焙的。

这些都不是挑剔数据或测量过程,而只是提醒不要过度拟合或过度解读数据。这可能是为什么早些时候提出的关于有些材料很难适应的原因。

微信图片_20180417132858.jpg
图十五:在MERL数据异常,从左到右:钢铁的分光响应呈现不对称的亮点,color-changing-paint1的色彩浓度由数据推断产生,白色织物表现出入射余角处的缩影,fruitwood-241具有展示木纹的高光反射效果。

5、迪士尼原则BRDF

5.1 设计原则

在开发新的基于物理反射渲染模型,我们被美术设计师提醒,我们需要我们的光照模型是可控制的视觉正确模型,不一定需要物理正确。正因为如此,我们的理念一直是建立一个有“原则”的模式,而不是严格的物理正确模型。

这些是我们在实现模型时决定遵循的原则:

1.应该使用直观而非物理参数。

2.应该尽可能少地使用参数。

3.参数应该在合理控制在0到1之间。

4.参数应该被允许超出他们合理的视觉范围。

5.所有参数组合应该尽可能的健壮和可信。

我们详细讨论了每个参数的添加。最后,我们在下面一节中描述一个颜色参数和十个标量参数。

5.2参数

  • baseColor:表面颜色,通常由texture maps提供。
  • subsurface:用次表面控制漫反射颜色。
  • metallic: 金属度(0电介质-1金属)这是两种不同模型之间的线性混合,该金属模型没有漫反射成分,有一个带颜色的高光,等同于其基本颜色。
  • specular: 入射高光反射量,代替了折射率。
  • specularTint:给美术设计师让步而设计的朝basecolor的入射高光颜色,平射角的高光色彩仍然是无色的。
  • roughness:表面粗糙度,控制漫反射和高光效果。
  • anisotropic: 各项异性,各项异性的程度,控制高光的宽高比(0 =各向同性,1 =最大各向异性。)。
  • sheen:一种额外的平射角组件,主要用于布料材质。
  • sheenTint:基本颜色的色彩光泽量。
  • clearcoat:第二特别专用的高光页(specular lobe)。
  • clearcoatGloss:控制clearcoat的光泽度,(0 =“光滑”外观,1 =“gloss”的外观)。

如图16所示,给出了每个参数的效果例子。

微信图片_20180417132901.jpg
图十六:BRDF参数例子效果,每一个参数都是从0到1变化,其他参数恒定不变。

5.3漫反射模型细节

有些模型包括漫射菲涅耳因子,如: 微信图片_20180417132903.png

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

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

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

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

我们的漫反射模型:

微信图片_20180417132906.png

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

微信图片_20180417132909.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模型。

微信图片_20180417132911.png

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

微信图片_20180417132914.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 近似充分且简单,由近似引起的误差明显比其他因素导致的误差小。

微信图片_20180417132916.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。

微信图片_20180417132918.jpg
图十九:在两种完全不同的材质间(光泽的金属和蓝色塑料)进行插值。

微信图片_20180417132921.jpg
图二十:展示了material Layer的Shader编辑器截图,可变化的mask展示了Shadermodel线性空间下的映射,是典型的纹理映射。

6、Wreck-It Ralp模型的开发经验

我们用Wreck-It Ralph模型开发了“Principled Layers”并且使用在几乎所有的材料(除了头发材质,头发仍使用Tangled)上。如图二十一可以看到各种各样的材质效果。注意,单独的法线通常被用在高光组件中用来制作地面,地毯和其他颗粒材质上的火花效果。

微信图片_20180417132923.jpg
图二十一:Wreck-It Ralph模型效果展示

结合我们的新材料模型,我们还引入了新的采样区域和基于图像的灯光,这点对于使确定的材料看起来更好很关键;如果你制作一个看似有光泽的材料,用点光源去渲染它,渲染效果将是一个小亮点,但是如果允许灯光师调整材料属性,例如增加粗糙度来伪装区域光的效果,破坏整个基于物理形式的渲染。好消息是灯光师喜欢可控的区域光和柔性,也很喜欢材质有着一致响应的特性。值得注意的是新的材料模型在我们之前的ad-hoc版本切换到新的采样光后是很激进的ShadingModel。因为各自反射模型拥有自己的采样光消耗是很高的。

基于Wreck-It Ralph模型的成功经验,我们将展示一个正在使用或者计划使用的没有修改的着色器模型。

6.1 开发过程

一个优点是使用了简单BRDF使我们简化了交互式材质编辑器的开发。我们的开发人员开发渲染了geometry buffer(g-buffer),包含了法线,ObjectID,和LayerMask信息。用这些通道可以快速执行基于图像的光照计算同时允许所有的BRDF参数可以被交互式的编辑。美术设计师们可以实时旋转IBL,可以通过调整整体参数和层来看效果。

另一个优点是使用统一模型,包含了由材质设计师保存的简单的材质库的预设。可以从材质库中选取一种材料,并添加到着色器中作为附加层,然后与Mask混合。因此Layer可以像Photoshop那样快速构建。

要充分判断一个材料,从各种角度去进行光照分析至关重要。作为切换到我们新材质模型的一部分,我们开始使用不同的IBL和各种旋转角度的光照和元素来验证所有的材质模型。

我们的新着色器系统的最终结果是大大提高了视觉开发的生产力,缩短了新美术设计师的培训时间,并保证了更高质量的结果。值得注意的是,我们大部分的视觉开发设计师之所以能够快速完成效果,是因为缺少光照中材料的“re-do”操作。这是史无前例的。

6.2 光照

如前所述,需要使用不同的光照来处理验证新的材料模型。这需要很大的学习区间。即在不过分损害基于物理渲染模型的情况下,重新引入易于美术设计师控制工作量是一项很大的挑战。

光照里边最大的挑战是使用移动的IBLs进行光照,大多数的IBL被用作灯光链接到特定具有距离的元素,这比以前的开发环境得到大幅度提升改进,主要由于大幅度忽略了材质特性。之后区域灯也很受欢迎。

以前灯光师最大的挑战是处理实时光的强度和衰减。我们最终开发了一个非物理衰减的控制,通过使灯光变得更遥远并且在距离为18的达到理想曝光的时候自动调整光强。但是控制光照的强度和衰减对于灯光师仍是一个挑战。

光照的另一个挑战是镜面高光很多都需要计算色调映射。高光材料上的亮度可以简单的就达到数百个,这对对于GPU裁剪显得很苛刻。在不同的位置给每个颜色通道引入分类裁剪,并强制中心点颜色为白色。我们开发了一个新的全局色调映射来处理,它保留了大部分的颜色范围值,并且引入了颜色和对比度等。我们有一个默认的设置在多数情况下是合理的,但在颜色分级的时候需要调整一下最终的参数值。

6.3 未来计划

目前最大的问题是当前缺乏可直观控制的次变散射模型,这方面的关键是BRDF的整合。在理想情况下,BRDF和次表面模型有一个匹配度,这样才较远距离的物体就可以使用BRDF模型来得到相同的效果。此外,设计师应该能够自由的增加次表面散射的插值效果,在不改变曝光的情况下,只是漫反射的形成会变。

我们会更进一步研究布料的反射模型,我们可以使用捕捉反射数据来添加一个特殊的着色器来精细的渲染复杂的布料材质。但是我们更想研究更加直观和广泛的布料渲染模型。但是目前还没有实现的效果,但是以后会有的。

我们也收到添加彩虹模型的请求,这一个和前面讨论那样添加高光颜色变化一样简单。

B.GTR分布函数

B.1 微平面分布综述

一个合理的microfacet分布函数在半球坐标的归一化投影下值为1.

微信图片_20180417132926.png

或者半球坐标系表达:

微信图片_20180417132928.png

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

微信图片_20180417132931.png

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

微信图片_20180417132933.png

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

微信图片_20180417132935.png

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

微信图片_20180417132938.png

B.2 GTR

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

微信图片_20180417132941.png

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

微信图片_20180417132943.png

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

微信图片_20180417132946.png

形成各项异性分布,各种表面粗糙度相关的φ被 微信图片_20180417132948.png ,γ = 2的结果如下:

微信图片_20180417132950.png

替换这些向量恒等式:

微信图片_20180417132954.png

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

微信图片_20180417132957.png

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

微信图片_20180417133000.png

注意:h’是投影后的半角向量,r是归一化因子 微信图片_20180417133003.png 可以被忽略或取消。

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

附录

各项异性高光细节:

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

微信图片_20180417133007.png

0.9因子限制的长宽比为10:1。

光泽细节

原始光泽细节注释省略了,根据4.5章节的纺织物采样描述的观察,漫反射+高光反射的模型在BRDF的各种模式中占有主导地位。这和Fresnel因子很相似。这个形状和fresnel也很像。我们的模型使用了额外的BRDF 叶片(lobe),采用了 Schlick Fresnel 模型, 微信图片_20180417133010.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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-19 20:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表