什么是Physically Based Rendring基于物理的渲染?


Physically Based Rendring基于物理的渲染以下称为PBR

PBR不是一种技术,而是一种渲染方式

PBR基于物理原理和微平面理论建模的着色&光照模型,以及使用从现实中测量的表面参数来表示真实世界材质的渲染概念;
PBR是一系列的技术集合,包含Global illumination全局光照技术、Ambient Occlusion环境光遮蔽 以及Physically Based Shader等一系列技术;

PBR的优点

在任何光照条件下,都能得到较为正确的结果;
材质属性基于真实的参数,使用简单;

什么是Physically Based Shader?

Physically Based Shader(基于物理的着色,简称PBS),PBS是一种较为真实的光照材质数据模型。Unity中PBS分为 Standard Metallic Surface Shader和Standard Specular Surface Shader两种,参数不同,效果相似。PBS只是对基于物理原理的现实世界的一种近似,这也就是为什么它被称为基于物理的着色(Physically based Shading) 而非物理着色(Physical Shading)的原因

PBS是PBR中最为重要的技术。

PBS基础概念包含:
①材质的光学特性
②基于微平面Microfacets的表面模型
③能量守恒定律
④菲涅尔反射定律

材质的光学特性

计算机光学参数来源于现实,科学家将物体材料分为导体和非导体,亦或称之为金属(导电材质)和非金属(绝缘体)。非金属大多反射较弱,漫反射颜色多样,具有单色反射颜色。而非金属几乎没有漫反射,有非常强烈的高光反射,具有彩色的镜面反射颜色。

图片引用自redshift渲染器官方文档
引用自红移渲染器https://docs.redshift3d.com/display/RSDOCS/Material?product=maya

现实生活中没有绝对金属,完全金属存在于理论模型当中。
在PBR当中,Metalness金属度属性反应的就是材质的金属性。

微平面Microfacets理论

所有的PBR技术都基于微平面理论。这项理论认为,达到微观尺度之后任何平面都可以用被称为微平面(Microfacets)的细小镜面来进行描绘。根据平面粗糙程度的不同,这些细小镜面的取向排列可以相当不一致;
产生的效果就是:一个平面越是粗糙,这个平面上的微平面的排列就越混乱。这些微小镜面这样无序取向排列的影响就是,当我们特指镜面光/镜面反射时,入射光线更趋向于向完全不同的方向发散(Scatter)开来,进而产生出分布范围更广泛的镜面反射。而与之相反的是,对于一个光滑的平面,光线大体上会更趋向于向同一个方向反射,造成更小更锐利的反射:
引用https://learnopengl.com/PBR/Theory
引用https://learnopengl.com/PBR/Theory
在微观尺度下,没有任何平面是完全光滑的。然而由于这些微平面已经微小到无法逐像素的继续对其进行区分,因此我们只有假设一个粗糙度(Roughness)参数,然后用统计学的方法来概略的估算微平面的粗糙程度(估算微平面的粗糙程度有两种方法“正态分布函数”和“几何函数”,别着急,后面我会讲到)。
在这里插入图片描述

我们可以基于一个平面的粗糙度来计算出某个向量的方向与微平面平均取向方向一致的概率。这个向量便是位于光线向量l和视线向量v之间的中间向量(半角向量Halfway Vector)。它的计算方法如下:

l代表入射光线的反方向,v代表观察者方向。我们按照两者的向量计算结果记为h。
在这里插入图片描述

渲染公式及DGF三项

先来看看渲染公式(性能原因UE4改进后的公式
在这里插入图片描述
公式拆解:样本结果= ∫Ω [漫反射比率x漫反射颜色/Π+镜面反射比率xDGF三项/4(视线方向·法线)(光线方向·法线)][]

正态(法线)分布函数D项

在上面微平面Microfacets理论有提到过,Roughness是使用统计学估算微平面粗糙程度方法的结果,统计学上近似的表示了与某些(中间)向量h取向一致的微平面的比率就是“正态分布函数NDF
在这里插入图片描述
α表示的是物体表面的粗糙程度(输入值),h代表半角向量

能量守恒定律

能量守恒:出射光线的能量永远不能超过入射光线的能量。其中入射光线的能量指的是从光源到入射表面参数点的总能量,出射光线的能量指的是从参数点分离出的折射光线能量反射光线能量的总和。按照定义,总和能量绝不能≥出射光线的总能量。(自发光物体除外)

折射光线:被微表面吸收的能量
反射光线:被微表面反射的能量

光线可以被认为是一束没有耗尽就不停向前运动的能量,而光束是通过碰撞的方式来消耗能量。每一种材料都是由无数微小的粒子所组成,这些粒子都能与光线发生碰撞。这些粒子在每次的碰撞中都可以吸收光线所携带的部分或者是全部的能量而后转变成为热量。
在这里插入图片描述
现实生活中几乎不存在只有折射或者只有反射的物体,例如:能看到水,是因为人眼接收到了水面反射部分的光线。

GGX-Schlick模型镜面反射G项在这里插入图片描述

菲涅尔反射定律F项

来源于wikipedia

由上面能量守恒我们知道,当光线照射到微表面时,一部分光线被物体吸收,一部分光线被物体反射
在这里插入图片描述
Fresnel(菲涅尔)表现的是材质的反射率和入射角(也就是光源入射向量和平面法线向量的夹角)的对应关系,法线和视线夹角越大,最终的值也就越大,反射光的亮度也越高。

菲涅尔方程是一个相当复杂的方程式,于是人们利用近似法求得近似解Fresnel-Schlick
在这里插入图片描述

F0表示平面的基础反射率,它是利用所谓折射指数(Indices of Refraction))]或者说IOR计算得出的。
在这里插入图片描述

万物皆有菲涅尔效应,只不过人眼感知“越光滑”的物体菲涅尔现象越强烈,“越粗糙的物体”菲涅尔现象越弱。

以下内容待更新[2022/5/13]

[1]: Theory-physically based rendering by JoeyDeVries https://learnopengl.com/PBR/Theory
[2]: Fresnel equations From Wikipedia https://en.wikipedia.org/wiki/Fresnel_equations

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值