原文链接:https://blog.uwa4d.com/archives/Study_Shading-Disney.html
今天给大家介绍的是一篇关于基于物理渲染(Physically Based Rendering)的技术论文。该篇论文是在2012年Siggraph图形大会上,由迪士尼公司分享的关于PBR技术的报告。PBR是最近游戏渲染领域中比较高级的渲染管线。相比于传统基于Lambert以及Phong模型的渲染管线,PBR采用更加真实的材质模型,能够更好地表现物体表面不同粗糙度带来的不同反射效果,从而能够更贴近真实地模拟各种不同的材质。采用PBR的材质能更好地模拟金属、非金属以及不同粗糙度等材质对光的反射效果。虽然PBR在最近几年才被用于实时的游戏渲染,但是早在几年前它就被用于离线的电影渲染中。而这篇论文正是基于前人提出的材质模型,通过对真实测量的材质数据进行分析对比,提出新的材质模型。最终,迪士尼将这一方法应用到他们的电影渲染中。
我们推荐这篇论文,希望对PBR渲染管线原理有兴趣的开发者,能够通过此文加深对PBR的理解,从而能够在项目开发中更好地利用PBR管线,达到满意的渲染结果。
如上图所示这是迪士尼公司出品的动画电影 Wreck-It Ralph 中的截图。可以看到人物头顶的金属皇冠、非金属衣领都能达到贴近真实的渲染效果。
不同于前人提出的基于物理的材质模型,这篇文章的材质模型在设计之初并不是以物理正确为原则,而是以让美术设计者更容易理解和使用为原则。文章作者认为是否是物理正确并不重要,重要的是能达到美术设计者的需求并且使用方便、容易理解。因此,他们提出了5个主要的设计原则:
- 使用方便、便于理解比物理真实更重要;
- 可调节参数越少越好;
- 参数的值都必须在效果可接受的范围内归一化到(0~1)之间;
- 参数可以被赋予超过其实际可接受范围(0~1)之外的值;
- 所有参数组合的效果都必须是可接受并且稳定;
基于这5个原则,文章作者提出了用11个参数表示的材质模型,根据不同的参数,可以渲染出不同的材质,如下图:
从上图可以看到,经过对参数的简化,文章提出的材质模型用了11个参数即可非常真实地模拟出金属、非金属以及不同粗糙度的材质光照结果。
文章作者基于上述的5个原则以及对真实测量数据的观察结果,对传统的微表面材质模型中的各项函数进行修改。接下来我们首先介绍传统的微表面模型的通用表达式,然后对其中的每一项函数进行说明,并介绍在文章中采用的各项函数的表达式。
文章中的模型采用了微表面模型的通用形式,该通用形式最早出现在Cook-Torrance模型中:
其中,向量 l 和 v 分别表示入射光和视线方向,向量 h 表示 l 和 v 之间的中间向量,它们与法线方向的夹角分别用对应下标的 θ 表示, θd 表示 l 和 v 之间夹角的一半。diffuse 表示漫反射函数,D 表示微表面分布函数,F 表示菲涅尔系数, G 表示阴影系数。文章中模型的 diffuse 函数是:
其中,roughness 表示粗糙度。对于微表面分布函数 D,目前最好的分布函数是著名的 GGX 函数。但是,文章作者采用了比 GGX 更为通用的形式 GTR (Generalized-Trowbridge-Reitz):
它与 GGX 的区别在于, GGX 为上式中 γ= 2 时的结果。文章作者采用了两个不同的 GTR 函数来拟合高光项,分别采用 γ= 1 和 γ= 2 。α 的取值为 roughness 的平方,c 为一个常数用于调节整体缩放。对于菲涅尔项 F,文章采用了 Schlick 的公式:
其中, F0 为一个常量,其值取决于材质的透射系数。对于阴影系数 G ,文章作者采用了 Walter 在其论文中根据 GGX 推导的 G 公式,并将公式中的 roughness 从 [0, 1] 缩放到[0.5, 1] 范围。做这个缩放的原因是,根据与实际测量的数据对比以及美术设计者的反馈,高光在 roughness 值较小时显得过于亮。虽然这个缩放的过程使得模型不再物理准确,但是它符合了美术设计者的需求,这也正是这篇文章最主要的设计原则。
在下文中,我们将为大家介绍文章的实验部分,也就是如何对真实采集数据进行观察,并设计材质模型的。大家可以根据兴趣继续阅读,也可直接跳到后面查看结论和未来工作部分。
文章作者使用 Matusik 在2003年发表的论文中的数据集,该数据集可以免费从 Mitsubishi 实验室官网下载(www.merl.com/brdf)。该数据集包括了木材、金属、石头、塑料、橡胶、纤维等真实材质的数据。每种材质根据不同入射角和出射角度进行采样,如下图:
文章作者开发了一套展示真实测量材质数据以及用 BRDF 模型渲染的结果进行比较的系统,该系统可以在 GitHub 上免费下载(github.com/wdas/brdf),如下图所示:
其中,可以选择看真实测量数据(ImageSlice),或者是渲染的数据(Lit Object/Lit Sphere)并进行对比。
根据文章作者对漫反射表面的观察发现,在 Lambert 模型的假设前提下,单纯的漫反射并不带有方向性,反射光在每一个反射方向上都是相同的值,但是很少有物体表现出 Lambert 模型的假设前提。特别是在视线与法线接近垂直的区域(grazingangle area),有的表现为快速衰减,有的表现为亮度增加,而这与物体表面的粗糙度有密切联系,如下图所示:
从左到右是粗糙表面、光滑表面以及Lambert 模型渲染的漫反射结果,可以看到在球的边缘处,不同程度的粗糙度表现出不同的效果,而Lambert 模型并不能很好的表现出这一特点。虽然前人提出的模型,如:Oren Nayer 以及 Hanrahan-Krueger,有对此现象作一定程度的模拟,但是并不足以表现这个现象。因此,文章作者在设计材质模型漫反射部分时将这一现象考虑在内。
根据文章作者对高光现象(对应于微表面分布函数)的观察发现,真实采集的数据的高光拖尾比传统的材质模型,如:Beckmann、Blinn Phong、Gaussian 等,都要长一些。在与实际测量结果的对比中,GGX的渲染效果最接近,如下图所示:
左边是真实测量的结果,中间是用 GGX 模型渲染的结果,右边是用 Beckmann 模型渲染的结果。因此,文章作者在提出的材质模型中采用 GGX(GTR γ= 2 时)与 GTR γ= 1 时函数混合作为高光项 D 。
根据文章作者对菲涅尔现象的观察发现,所有的真实测量的材质,在入射光线与视线之间夹角接近180度时,都会出现高亮的现象。例如:上图中,距离视点越远的河面反射的角度越大,反射的光线的亮度就越亮(图中1、2、3从远到近,1最亮)。这一现象正是被 Torrance-Sparrow 微表面模型所观察并在其模型中提出。虽然模型中的被除数项在 grazing angle 区域趋近于无限,但是由于G 项衰减抵消,不会出现问题。文章作者最终采用 Schlick 以及Walter 推导的结果来作为文章中材质模型的 F 和 G 函数。
下面是利用文章中算法渲染的Wreck-ItRalph动画电影中的一些效果图展示。
今天介绍的这篇论文,通过真实测量的材质数据进行分析对比,对已有的微表面模型中的各项做了相应修改、简化模型参数,提出新的材质模型。但是,提出这一模型的原则并非基于物理真实,而是对于美术设计者友好,并方便他们使用。虽然这篇文章中的材质模型能够表现出更加广泛的材质光照反射现象,但是它并不能模拟次表面散射的光照。因此,作者希望在未来工作中解决这一问题。
关于论文作者
Brent Burley,1996年加入迪士尼公司,目前是迪士尼动画工作室首席软件工程师,负责产品中渲染软件开发。主要成果有:开发了一款开源的、用于细分曲面的纹理映射系统Ptex,将基于物理的材质模型用于产品的渲染。
下载地址
http://blog.selfshadow.com/publications/s2012-shading-course/#course_content
这是侑虎科技的原创文章,欢迎转载分享,未经许可请勿转载。