【技术美术图形部分】PBR Disney原则的BRDF 次表面散射模型

news2024/11/24 16:26:24

写在前面

补充去年遗漏下的知识。很多叙述都是参考了众多大佬的文章!因为是作为个人学习总结的博客,所以直接卑微的借鉴过来了,后面会给出所有参考的文章。

另外,放上一个忘了在哪一篇知乎评论里的截图:

说的蛮好。

1 PBR/PBS

1.1 PBR和传统技术相比

基于物理的渲染指的是一个总的过程:基于物理参数的美术流程和渲染流程。基于物理的灯光和相机这篇文章总结的好好,与传统的技术相比,PBR有真实的测量值作为标准,排除了主观审美带来的不确定性,制作出的效果更统一、准确。

正因此,PBR绝不止是简单的Shader,它包括以下三个部分:

  • 基于物理的材质Material
  • 基于物理的光照Light
  • 基于物理适配的相机Camera 

三部分互不影响,但都必须保证准确。传统的着色思路是在特定光照下调整材质,光照变了效果就变了,比较之下PBR才能实现一种材质在不同光照环境下呈现的效果都是正确的。

1.2 PBR和PBS的关系

 基于物理渲染,其实就是基于真实物理原理的BRDF模型。去年9月份开始学习百人计划就有一点点涉及:【技术美术图形部分】2.2 模型与材质基础,这篇博客中2.3节探讨了shading的光照模型们:标准光照和PBS,甚至还探讨了PBS和PBR的关系,以及Unity中PBR的两种工作流(Metalic&Specular),这里我们就补上4个月前挖的坑:

2 4个经典光照模型

分别是,

  • Lambert
  • 半Lambert([0,1]-->[0.5,1],提升了漫反射亮度)
  • Phong(增加了镜面反射)
  • Blinn-Phong(用半角向量以优化了高光)

快速复习通道:【Unity Shader】实现基础光照模型

3 Cook-Torrance模型

着色模型与PBR原理综述叙述PBS历史的时候,开头就从Cook和Torrance提出的光反射模型——Cook-Torrance模型开始介绍。这其实是微表面材质模型的知识范畴,在6月份左右GAMES101作业7提高-实现微表面模型你需要了解的知识就有涉及到,Cook-Torrance增加了D、F、G三项信息去刻画细节,提升了渲染的真实感:

4 Disney原则的BRDF

该部分学习主要参考了:【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结

基于对现实材料的考察,Disney的BRDF简化了复杂的PBR参数和制作流程,给出了一套基于少量简单易懂的参数和高度完善的美术工作流程,成为了后续游戏和影视行业遵循的PBR方向和标准,也是次世代(后续有介绍“次世代”概念)高品质渲染技术的代名词。

BRDF之后又提出了BSDF,时间线大概是2012年推出Disney Principled BRDF,2015年提出Disney BSDF。

4.1 Disney采用的材质分析

MERL 100 BRDF材质库

BRDF Explorer

BRDF Image Slice切片

点到为止,具体可以直接看参考文章的第二部分总结。

4.2 10个标量参数

迪士尼原则的BRDF核心理念在于:使用直观参数,参数尽可能少,范围在[0,1]等,总之是一种非金属和金属材质的混合模型,用参数金属度metallic在金属和非金属BRDF之间进行线性插值,这个方法不是那么的“物理”,但“美术友好”。

至于都有哪些参数,我选择直接截图的方式展示出来,之后复习也会更加方便(图源):

4.3 Disney原则的Specular

主要是微平面理论的内容,我在GAMES101作业7提高-实现微表面模型你需要了解的知识这一篇文章对于以下关键的三项都过讨论:

  • 法线分布项D
  • 阴影遮挡项G
  • 菲涅尔项F

本篇文章主要补充的是下一节计算Diffuse项的方法,以及次表面模型的细节。 

4.4 Disney原则的Diffuse

关于Lambert模型

实时渲染中最常采用的是Lambert来模拟漫反射:

Disney原则的BRDF也采用了Cook Torrance BRDF模型,但对于漫反射计算有自己的看法。

Diffuse项的特点

Disney通过分析MERL 100 BRDF材质,发现真实材质的diffuse项有这两种特点:

  • diffuse会有类似于specular的光斑
  • 部分材质的diffuse会在掠射角有明显的光环——掠射逆反射(会在5.4小节细说)

以上提到的两个特点都是简单的Lambert模型所无法实现的,为了解决这一问题Disney选择了更加复杂的、具有方向性的(non-Lambertian)漫反射计算方法——Schlick菲涅尔近似等式+掠射逆反射,先放上Disney的漫反射公式(公式我就直接截图的参考文章里的了~):

这个公式耦合了两个因素,

  • Schlick菲涅尔近似
  • 掠射逆反射

之前在用Cubemap实现天空盒和环境映射中实现菲涅尔反射时就用这个近似来计算了,下一小节的重点会放在掠射逆反射相关的次表面散射。

5 次表面散射 SSS

从diffuse项突然跳转到次表面散射,其实叙述思路是参考了【渲染】Disney BSDF 深度解析这一篇文章。

次表面散射,即Subsurface Scattering, SSS,是一种从微观尺度对物体表面漫反射光的解构,某一篇参考文章中说的非常好:“次表面散射之于漫反射,就像H2O之于水,只有研究水的分子结构才会说H2O,日常都会说水而非H2O”,所以对于日常使用来讲,漫反射更多想到粗糙的Lambert漫反射模型,而深究下去漫反射其实是次表面散射。

5.1 漫反射的实质

用Lambert模型计算diffuse分量,出射光线方向和入射光线的方向是无关的。

但严格来讲,漫反射是次表面散射——光线折射进物体表面多次反射再折射出来,它并不是一种光学现象,反射/折射的方向也会随着入射角度的改变而改变。

5.2 与微表面模型的关系

微表面模型的假设

4.3小节中的Specular项计算就是基于微表面理论的了,微表面模型做了以下假设:

  1. 微表面的尺寸小于着色区域大于可见光波长:物体表面从远处看是外观(diffuse、glossy),近处看是一个个微小的、平的几何面
  2. 这些平坦的几何面都符合几何光学定律:可以看成是一个个非常小的镜子
  3. 光线只在微表面之间弹射一次(single-bounce):一次之后弹射的光线不改变着色结果,也就是离开表面的点就是进入表面的点 

glossy和diffuse材质

注意这里的材质表现是基于法线分布的混乱程度,因此glossy在微观上看仍然是specular。而diffuse仅仅是法线分布混乱,真正计算时,由于假设中只考虑光线弹射一次,diffuse计算还是会按照Lambert模型来考虑。

多次弹射:次表面散射

以上假设3中,当考虑多次弹射情况时,就是这一小节所讲的次表面散射了。 

5.3 光滑的次表面散射模型

微表面的不规则程度小于次表面散射距离,如下图:

由于散射距离实在太大了,发生逆反射几率很小很小(后面有补充解释),整个表面可以被认为是平坦的,此时次表面散射已经不是局部而言了,要整体一起建模计算,微表面理论也就用不上了。

考虑菲涅尔效应

这种情况下,能影响次表面散射的只有表面反射(高光项Specular)与次表面反射(漫反射项Diffuse)之间的能量平衡关系。

菲涅尔效应告诉我们:随着掠射角度的增加,漫反射随着高光的反射的增加而减小。所以我们需要去除specular拿走的部分,因此光滑次表面这类模型通常会乘上1-菲涅尔项。也就是在原有的Lambert漫反射基础上叠加上1-菲涅尔项。具体参考【渲染】Disney BSDF 深度解析

公式中的具体体现

5.4 粗糙的次表面散射模型

当微表面不规则程度大于次表面散射距离,如下图:

此时次表面散射就要针对每个微小表面局部计算了,涉及到微分几何相关的效应(逆反射),因此计算漫反射时需要基于微表面理论,每个微表面局部发生次表面散射。

举例:月球漫反射

拿人在地球上看月球举例,月球本身不是自发光物体,光都来自漫反射太阳光,因为我们能观察到他的逆反射(如下图所示,图源水印),月球常被认为是一个应该使用粗糙次表面散射模型的例子。这是由于人站在地球上观察月球的观察尺度实在太大了,即使是月球上巨大规模的陨石坑,与散射距离相比起来都算是微结构。

逆反射:基于微观的

粗糙次表面散射自然要与表面的粗糙程度挂钩,此外还需要关注掠射逆反射

光学中(我表达得不一定严谨),

  • 掠射:指光从一种介质向另一种传播,入射角接近于90度时的情况,也就是几乎贴着反射面的入射
  • 逆反射:光线照射到表面后反射回到光源方向的现象

由于缺乏专业知识,百度了解了一下逆反射:

可见逆反射技术也是用非常微小的表面来实现光线折返,这意味着逆反射的发生更多是在微观的,这也解释了前面在介绍光滑次表面散射时为什么说“发生逆反射几率很小”。

由于表面粗糙,所以次表面散射过程中的逆反射可能性就加大了。在掠射角方向,视线和光线越靠近,则逆反射现象越明显。

考虑逆反射的重要性

前面提到的光滑次表面散射仅仅考虑了剔除了specular分出去的部分,本身Lambert漫反射边缘就很暗,剔除之后就更暗了,原本在掠射角处发生的逆反射现象被完全忽略(Lambert逆反射直接为0)。

所以模型计算中,逆反射一定要补上!

公式中的具体体现

  • FD_{90}:表示着掠射散射的强弱,大于1越强,小于1越弱
  • 粗糙度roughness:控制着临界点出现的早晚,符合“表面越粗糙,掠射角处就有越多微表面垂直于光线”,

6 Disney原则的BSDF*

BRDF --> BSDF标志着从专注于着色和光照转向了路径追踪全局照明,BSDF将折射、次表面散射和间接光照都被整合在了一起,遵循能量守恒就变得更加重要了。

路径追踪我也在学习101的时候写了小部分的内容:

GAMES101作业7-路径追踪实现过程&代码框架超全解读

BSDF可以渲染更加多的例子(图源水印):

但由于:

我打算BSDF先提到这里,之后有时间再学习起来~

参考

着色模型与PBR原理综述 - 知乎 (zhihu.com)

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

【译 】Disney2015-将BRDF扩展至集成次表面散射的BSDF - 知乎 (zhihu.com)

【渲染】Disney BSDF 深度解析 - 知乎 (zhihu.com)

BRDF理论及shader实现(下)__子宽的博客-CSDN博客_brdf f0 f90

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础篇笔记

文章目录导入表的问题第3章_最基本的SELECT语句1. SQL语言的规则和规范1) 基本规则2) SQL大小写规范(建议遵守)3) 注释4) 命名规则2. 基本的SELECT语句1) SELECT ... FROM2) 列的别名3) 去除重复行4) 空值参与运算5) 着重号 6) 查询常数3. 显示表结构4. …

贪心算法(基础)

目录 一、什么是贪心? (一)以教室调度问题为例 1. 问题 2. 具体做法如下 3. 因此将在这间教室上如下三堂课 4. 结论 (二)贪心算法介绍 1. 贪心算法一般解题步骤 二、最优装载问题 (一&#xf…

智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》

智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》 目录 智能驾驶 车牌检测和识别(四)《Android实现车牌检测和识别(可实时车牌识别)》 1. 前言 2. 车…

SLAM数学知识回顾

文章目录1、三角函数2、向量运算(1)负向量(2)向量的模(3)标量与向量的运算(4)标准化向量(5)向量的加法和减法(6)距离公式(…

三十七、Kubernetes1.25中数据存储第三篇

1、概述在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了…

计算机视觉OpenCv学习系列:第十部分、实时人脸检测

第十部分、实时人脸检测第一节、实时人脸检测1.OpenCV人脸检测支持演化2.OpenCV DNN检测函数3.代码练习与测试学习参考第一节、实时人脸检测 1.OpenCV人脸检测支持演化 OpenCV4 DNN模块 DNN- 深度神经网络 来自另外一个开源项目tiny dnnOpenCV3.3正式发布最新版本OpenCV4.5.…

网络编程 之 epoll

epoll 参数设置 events设置 ev.events EPOLLIN | EPOLLET;epoll实现TCP通讯时,events通用设置如上,EPOLLIN代表可socket套接字可接收数据,EPOLLET代表边沿触发。在服务器端, 接受客户端连接的socket不能设置为EPOLLOUT,只设置E…

【5】【TypeScript】(TypeScript=Type+JavaScript)

Typescript 相比js特有 类型系统;对象的接口DOM操作时候需要进行类型断言上面三个实际是类型系统的三处体现枚举js中,-号可以强制转换为数值,ts不行 所有合法的js都是ts 1、安装 安装进度卡住可以用淘宝镜像 (在后面加 --registr…

Spring Cloud Hystrix有什么作用?

在微服务架构中,通常会存在多个服务层调用的情况,如果基础服务出现故障可能会发生级联传递,导致整个服务链上的服务不可用,如图1所示。图1 服务故障的级联传递在图1中,A为服务提供者,B为A的服务调用者&…

反欺诈(羊毛盾)API有什么作用?

肯定很多企业、商家都遭受过羊毛党的侵入,比如恶意注册、刷单、领用的行为。羊毛党具体有哪些危害呢? 羊毛党的危害 虚假用户裂变:识别在游戏解锁、红包裂变、助力砍价、电商拼团等用户拉新活动中作弊行为。虚假登录注册:防止机…

Java基于springboot大学生宿舍寝室考勤人脸识别管理系统

简介 Java基于springboot开发的大学生寝室管理系统宿舍管理系统。学生可以查找寝室和室友信息,可以申请换寝室,申请维修,寝室长提交考勤信息(宿管确认学生考勤信息),补签,查看寝室通报&#xf…

FPGA纯verilog代码实现图像缩放,两种插值算法任意尺寸缩放,提供3套工程源码

目录1、设计思路和架构2、纯verilog代码搭建,不带任何ip3、双线性插值和邻域插值算法4、vivado和matlab联合仿真及结果5、工程代码1:720P原始摄像头采集显示6、工程代码2:720P缩小到800x600P显示7、工程代码3:720P缩放大1920x1080…

结合FPGA和NVIDIA Jetson Orin NX 系统的视觉边缘计算机

边缘计算机采用NVIDIA Jetson Orin NX模块化系统和高带宽图像采集卡,用于实时图像采集计算和人工智能处理。虹科与一家专注于高速图像采集和处理的以色列科技公司Gidel合作,今天宣布新的NVIDIA Jetson Orin NX™ 16GB模块化系统(SoM)将被添加到Gidel的Fa…

Jmeter接口测试流程详解(中科软测认证中心)

Jmeter接口测试流程详解(中科软测认证中心) 目录:导读 1、jmeter简介 2、jmeter安装 3、设置jmeter的中文界面 4、jmeter主要元件 5、Jmeter元件的作用域和执行顺序 6、jmeter接口测试流程步骤 1、jmeter简介 Jmeter是由Apache公司开…

【数据架构系列-02】从《数据中台能力成熟度模型》的发布,聊聊火了的中台

热点之所以会“热起来”,是由于万众瞩目的那份炽烈,也是因为无数双“手”的奋力炒作。所以,要穿过那“缭绕烟雾”看到本质,便需要冷静的头脑。 2023年1月4日,信通院发布了《数据中台能力成熟度模型》框架,不由让我浮想联翩,之后是不是还会出现…

Python采集豆某影片并作词云图分析

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用:爬虫基本思路:代码展示绘制词云图尾语 💝环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用: import parsel >>> pip install parsel import…

二叉树26:二叉树的最近公共祖先

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:236. 二叉树的最近公共祖先 题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科…

网络工程师备考9章

第九章:网络操作系统与应用服务器 9.1 考点分析 ​​​​​​​ 注:MCSE、RHCE基础:微软和红帽的系统工程师的内容都纳入到一章里;我们要学的服务器类型非常多,最重要的罗列下来,总结起来就是3D+I; 9.1.1 网络操作系统 9.2 安装过程 略 9.3 Windows Server 2008 R2 本…

创新科技引领清洁新标准,CEYEE希亦洗地机重新定义深度清洁

后疫情时代,随着人们健康意识的增强,家庭清洁卫生意识逐渐深入人心,大家对于清洁家电的选择也不再局限于基础功能,而是更注重智能化、健康化、便捷性、多功能等维度。创新型科技新消费品牌「CEYEE希亦」也由此应运而生&#xff0c…

SpringCloud-Eureka

1.Spring Cloud是什么? SpringCloud是一系列框架的有序集合。【包含了开发所需的其他的框架】 它利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、断…