基于物理的渲染(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

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException