基于物理的渲染(PBR)白皮书 | 迪士尼原则的BRDF与BSDF相关总结

2024-03-23 21:48

本文主要是介绍基于物理的渲染(PBR)白皮书 | 迪士尼原则的BRDF与BSDF相关总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=gif




基于物理的渲染(Physically Based Rendering , PBR)技术,自迪士尼在SIGGRAPH 2012上提出了著名的“迪士尼原则的BRDF(Disney Principled BRDF)”之后,由于其高度的易用性以及方便的工作流,已经被电影和游戏业界广泛使用,并成为了次时代高品质渲染技术的代名词。本文的主要内容,便是对推动了这次基于物理的渲染革命的“迪士尼原则的BRDF(Disney Principled BRDF)”,以及随后2015年提出的“迪士尼BSDF(Disney BSDF)”进行深入的探讨、总结与提炼。


全文主要内容脉络如下:

  • 迪士尼与基于物理的渲染的发展

  • 迪士尼采用的BRDF可视化方案与工具

  • 迪士尼对测量材质数据库的观察结论

    • Diffuse项的观察结论

    • Specular D 项的观察结论

    • Specular F 项的观察结论

    • Specular G 项的观察结论

    • 布料(Fabric)材质的观察结论

    • 彩虹色(Iridescence)的观察结论

  • 迪士尼原则的BRDF(Disney Principled BRDF)

    • 核心BRDF模型

    • 漫反射项(Diffuse):Disney Diffuse

    • 法线分布项(Specular D):GTR

    • 菲涅尔项(Specular F):Schlick Fresnel

    • 几何项(Specular G):Smith-GGX

    • Disney Principled BRDF的理念

    • Disney Principled BRDF的参数

    • Disney Principled BRDF的着色模型

  • 迪士尼原则的分层材质(Disney Principled Layers Material)

  • Disney Principled BRDF的实现代码

  • 迪士尼BSDF(Disney BSDF)

在文章开头,依然是首先放出总结了本文核心内容脉络的两张思维导图(因图片上传后会压缩变模糊影响阅读,公众号后台回复“PBR”即可获得高清图片。)

640?wx_fmt=png

640?wx_fmt=png


OK,让我们直接开始正文。

一、迪士尼与基于物理的渲染的发展

正如这个系列前文已经提到的,基于物理的渲染其实早在20世纪就已经在图形学业界有了一些萌芽,2010年在SIGGRAPH上就已经有公开讨论的Course《SIGGRAPH 2010 Course: Physically-Based Shading Models in Film and Game Production》,而直到2012~2013年,才正式进入大众的视野,渐渐被电影和游戏业界广泛使用。


究其原因,一方面是因为硬件性能的限制,另一方面,则是因为早期的基于物理的渲染模型包含大量复杂而晦涩的物理参数,不利于美术人员的理解、使用和快速产出。


迪士尼则是这次PBR革命的重要推动者。在创作电影《无敌破坏王(Wreck-It Ralph)》期间,迪士尼动画工作室对基于物理的渲染进行了系统的研究,最终开发出了一种几乎可以用于电影的每个表面新的BRDF模型(头发除外),即迪士尼原则的BRDF(Disney Principled BRDF)。

640

图 迪士尼动画电影《无敌破坏王》(2012)


随后,迪士尼动画工作室的Brent Burley于SIGGRAPH 2012上进行了著名的talk《Physically-based shading at Disney》,正式提出了迪士尼原则的BRDF(Disney Principled BRDF),由于其高度的通用性,将材质复杂的物理属性,用非常直观的少量变量表达了出来(如金属度metallic和粗糙度roughness),在电影业界和游戏业界引起了不小的轰动。从此,基于物理的渲染正式进入大众的视野。

640

图 SIGGRAPH 2012《Physically-based shading at Disney》


在2012年受到Disney Principled BRDF的启发后,主流游戏引擎都开始从传统的渲染工作流转移到基于物理的渲染工作流。


以下是主流游戏引擎转移到基于物理的渲染的时间节点:

  • 【SIGGRAPH 2013】 UE4 :《Real Shading in Unreal Engine 4》

  • 【SIGGRAPH 2014】 Frostbite(寒霜): 《Moving Frostbite to PBR》

  • 【GDC 2014】 Unity:《Physically Based Shading in Unity》


下面,让我们正式开始分析、提炼和总结SIGGRAPH 2012上迪士尼进行的talk《Physically-based shading at Disney》,深入了解其能让基于物理的渲染技术普及于游戏和电影工业的背后原因。


二、迪士尼采用的BRDF可视化方案与工具

在BRDF可视化方面,迪士尼在分享中提出了三个方面的工具与资源,可以总结如下:

  • MERL 100 BRDF材质库。Matusik等人[Matusik et al.2003]捕获的一组100个各向同性BRDF材质样本库。涵盖了各种材质,包括油漆,木材,金属,织物,石材,橡胶,塑料和其他合成材质。对学术与研究免费授权。

    • MERL BRDF主站 

    • Database地址

  • BRDF Explorer。迪士尼为分析、比较和新开发BRDF模型而开发的可视化工具。该工具在分析测量材质,比较现有模型,以及开发新模型方面具有无可估量的价值。

    • 官方主页

    • GitHub地址

  • BRDF Image Slice切片。将θh与θd作为横轴和纵轴,对观察到的材质的BRDF进行建模的2D图像切片。

640

图 “MERL 100”BRDF数据库


640

图 BRDF Explorer


640

图:红色塑料(red-plastic)和镜面红色塑料(specular-red-plastic)的BRDF图像切片以及“切片空间(Slice Space)”示意图。


640

图 MERL 100 BRDF数据库的图像切片(Image Slice)


三、迪士尼对MERL材质数据库的观察结论

在提出Disney Principled BRDF之前,Disney已经做了大量的前置工作,其中,最主要的工作便是对材质数据库的观察与进行理论分析。按照不同项的分类,可以总结为如下6个部分:

  • Diffuse项的观察结论

  • Specular D 项的观察结论

  • Specular F 项的观察结论

  • Specular G 项的观察结论

  • 布料(Fabric)材质的观察结论

  • 彩虹色(Iridescence)的观察结论


下文将对其分别进行相关总结。


3.1 Diffuse项的观察结论

  • 漫反射(Diffuse)表示折射(refracted)到表面,经过散射(scattered)和部分吸收(partially absorbed),最终重新出表面出射的光。

  • 被着色的非金属材质的任意出射部分都可以视为漫反射。

  • 通过观察得出,很少有材质的漫反射表现和Lambert反射模型相吻合。即需要更准确的漫反射模型。

  • 通过观察得出掠射逆反射(grazing retroreflection)有明显的着色现象,即可以将掠射逆反射(grazing retroreflection)也看做一种漫反射现象。

  • 粗糙度会对菲涅尔折射造成影响,而一般的漫反射模型如Lmabert忽略了这种影响。

640

图 表现出漫反射颜色变化的材质。 上:渲染球体上的点光源响应; 下:BRDF图像切片。


640

图 红色塑料,镜面红色塑料和Lambert漫反射的点光源响应


  • Oren-Nayar模型(1995)预测粗糙漫反射表面逆向反射的增加会使漫反射形状变平。然而,其逆向反射波峰不像测量数据那样强,并且粗糙测量的材质通常不显示漫反射的平坦化。

  • Hanrahan-Krueger模型(1993),源自次表面散射理论,也预测了漫反射形状的平坦化,但在边缘处没有足够强的峰值。与Oren-Nayar相比,该模型呈现出完美光滑的表面。下图中比较了Oren-Nayar、Hanrahan-Krueger和Lambert模型。

640

图 Lambert,Oren-Nayar和Hanrahan-Krueger漫反射模型的BRDF切片和点光源响应。


3.2 Specular D 项的观察结论

  • 微观分布函数D(θh)可以从测量材质的逆反射(retroreflective)响应观察得到。

  • 绝大多数MERL材质都有镜面波瓣(specular lobes),且尾部比传统的镜面模型长得多。 即反射分布项需要更宽的尾部。

  • GGX比其他分布具有更长的尾部,但仍然无法捕捉到铬金属(chrome)样本的闪亮亮点。

640

图 MERL 铬金属(chrome)与几个镜面分布的比较。 左:镜面波峰的对数比例图); 黑色曲线表示MERL 铬金属(chrome),红色曲线表示 GGX分布(α= 0.006),绿色曲线表示Beckmann分布(m = 0.013),蓝色曲线表示 Blinn Phong(n = 12000),其中,绿色曲线和蓝色曲线基本重合。 右: chrome 、GGX和Beckmann分布的点光源响应。


3.3 Specular F 项的观察结论

  • 菲涅尔反射系数F(θd)表示了当光和视图矢量分开时镜面反射的增加。

  • 光滑表面在切线入射时有将接近100%的镜面反射。

  • 对于粗糙表面,无法实现100%的镜面反射,但反射率仍会将变得越来越高。

  • 每种材质在掠射角附近都显示出一些反射率的增加。

  • 掠射角入射附近的许多曲线的陡度已经大于菲涅尔效应的预测值。


3.4 Specular G 项的观察结论

  • 几何项的影响可以间接地看作其对方向反射率(directional albedo)的影响

  • 大多数材质的方向反射率(directional albedo)对于前70度是相对平坦的,并且切线入射处的反射率与表面粗糙度密切相关。

  • 几何项的选择会对反射率产生影响,反过来又会对表面外观产生影响。

  • 完全省略G项和1/cosθl cosθv项的模型,被称为“No G”模型,会导致在掠射角处过暗的响应。

这篇关于基于物理的渲染(PBR)白皮书 | 迪士尼原则的BRDF与BSDF相关总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839604

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

RecastNavigation之Poly相关类

Poly分成正常的Poly 和 OffMeshPoly。 正常的Poly 又分成 原始的Poly 和 Detail化的Poly,本文介绍这两种。 Poly的边分成三种类型: 1. 正常边:有tile内部的poly与之相邻 2.border边:没有poly与之相邻 3.Portal边:与之相邻的是外部tile的poly   由firstLink索引 得到第一个连接的Poly  通

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

相关网站

力扣  https://leetcode-cn.com/contest/weekly-contest-124

CALayer相关的属性

iOS开发UI篇—CAlayer层的属性 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0)   @property CGPoint anchorPoint; 称为“定位点”、“锚点”