11

关于PBR渲染方程的理解

 3 years ago
source link: https://zhuanlan.zhihu.com/p/369508972
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

关于PBR渲染方程的理解

单身欢迎打扰,c++小达人数学爱好者游戏引擎开发独立游戏开发

基于物理的渲染(Physically Based Rendering , PBR)技术,自迪士尼在SIGGRAPH 2012上提出了著名的“迪士尼原则的BRDF(Disney Principled BRDF)”之后,由于其高度的易用性以及方便的工作流,已经被电影和游戏业界广泛使用,并成为了次时代高品质渲染技术的代名词。

我们列出方程,再附上解读

[公式]

渲染方程,ω_i标记入射光方向的单位矢量,p是光线碰撞点,ω_0是标记反射光方向单位矢量,

n是碰撞面的法线单位矢量,L_i表示入射光的辐射率,辐射率是单位时间单位立体角单位有向面积的电磁辐射能量,L_0表示出射光的辐射率

下面我们看下图形描述:

v2-18436a9e3b4c9f61b61644e60f4dfc95_720w.jpg

上图中 [公式]

v2-82075cae132192ac963aef767666fe7b_720w.jpg

这里的ω表示公式中的单位立体角,由于公式中的单位面积是和光线垂直的方向面积, Acos(theta)表示公式中的单位面积

回到公式:

[公式]

我们看到这个公式对矢量ω_i积分,这个积分实际上就是表示了对立体角的积分(对应2维空间一个角度可以用一个2维单位矢量描述,三维空间的立体角可以用一个3维单位矢量来描述),而公式中的函数自变量都带有ω_i,说明对于ω_i ,有一个不一样的积分因子(其实就是不同的光线),因此可以看出这个公式的含义是:对涵盖Ω的 所有入射立体角方向的光线朝某个固定方向ω_0 反射的 能量积分(求和)也就是说公式中的积分因子可以对应到一条光线,下面我们来分析积分因子的各项的内涵

[公式] 显然表示单位面积中的余弦分量

[公式] 这个是和材质有关的公式(所以和p点有关,p点决定了这一点的材质信息),我们可以暂时先放在一边。

[公式]

[公式]

这个是关键,也就是基于PBR的光照模型,光线反射可以分为 漫反射 和 镜面反射两部分:

[公式] 对应漫反射分量, [公式] 对应镜面反射

其中 [公式] 其实就是比例,各个分量占比多少,根据能量守恒,和为1

下面再看 [公式]

大家发现这个公式是一个常量,也就是和入射角,反射角,法线什么都没关系,这是为什么?

简单思考一下,漫反射这里采用的是 朗伯 模型,也就是各向同性漫反射,也就是光线不管往哪个方向反射,概率都一样,用能量角度来看,取个平均值或者期望, 也都一样,既然都一样,自然和方向没关系了。

下面看 [公式]

这个是什么意思,首先看分子,有个三个变量;

D:法线分布函数 F:菲涅尔方程 G:几何函数

[公式]

这是D的公式,这个公式怎么理解?

首先PBR的物理模型是微平面模型,也就是可以理解为p点上有无数个向着各个方向的微平面,所以镜面反射就是这些微平面的反射,考虑到模型简化,实际上,我们要找的是反射方向为ω_0的平面,那么这个平面的法线方向只能是 [公式] 只有这个平面能把入射光反射到指定方向上,同时公式中还有个alpha,这个表示p点的粗糙度,

综上,D决定于 h 和 粗糙度 ,那么我们可以对D如下理解:

D表示p点上法线为h方向的微平面在所有p点的微平面中所占的比例,而这个比例由:法线h 和 粗糙度alpha 公共决定。

从直观来看,显然,如果h和n越接近,可以认为这个方向的微平面应该越多(切平面方向的微平面应该更多,),所以n和h越近,乘积越大,则分母越小,整个值越大,复合。

同时当n\dot h = 1时(同向),此时,alpha越小(不为0),则整个值越大,也符合越光滑反射越强的逻辑。

[公式]

我们来看下菲涅尔方程,这个其实是Schlick给的近似公式,菲涅尔模型的意思是如果视线和平面法线的夹角越大,则反射越强。显然,我们只需要考虑法线为h的微平面(只有这个能反射到正确的角度),那么h和v的点积就决定了这个夹角,夹角越小,F的值越小,为90度时,F=1, 可见F表示的就是一个0到1之间系数,90度时认为没有能量损失,平行时能量损失最大。

[公式]

我们来看下G,几何函数,几何函数的含义是微平面可能互相遮挡,如果越粗糙,则被遮挡的概率越高,因此和粗糙度成反比,我们用k_direct的公式来看 ,alpha越大,k越大,则分母越大,整个分子越小,符合.k=0时,G=1 ,k=1时G=n\dot v ,这里的x是什么意思,因为遮挡分为对入射光的遮挡和对反射光的遮挡,所以x用入射矢量和反射矢量代入进去,

由于入射遮挡是发生在N的计算之前,所以h的方向并不会影响该函数的值;同时反射遮挡发生在N的计算之后,所以也只和反射角度有关,

考虑到入射和反射的计算公式为:

[公式]

以上,合并到一起,得到:

[公式]

至此,就用一种相对比较通俗易懂的方式讲清楚了各个公式的含义了,哈哈

其实我看过很多文章,要不是就是完全没有推理,要不就是长篇大论讲了一堆

物理学历史,其实个人觉着我们分析问题都要抓住主要矛盾和次要矛盾, 用最简单的语言提供

最有价值的信息

最后,我做一点修正,很多文章中渲染方程关于 辐射率的概念 都是用单位面积,单位时间,单位立体角这种方式定义,我也是这么定义的,最近经过我仔细分析,这种定义其实是错误的,至少说是不准确的。

我的结论是其实辐射率应该用微分形式来定义,因为单位立体角这种定义方式指的是平均的概念,而它其实表达的是微分极限的概念,这一点从公式推导出就能看出来!

如果读者觉着这篇文章对你有帮助,请一键三连,谢谢!


Recommend

  • 61
    • zhuanlan.zhihu.com 6 years ago
    • Cache

    笔记: 五次方程的微分方程解法

    笔记: 五次方程的微分方程解法数学话题下的优秀答主我以前一直很奇怪为什么三次方程求根公式有两部分构成,四次三个部分...如果五次...

  • 60

    流动稳定性相关书籍推荐流动线性稳定性方程推导那点事儿(一)流动线性稳定性方程推导那点事儿(二)4.4 关于平行性假设这里还讨论一下平行性假设的问题。上面我们提到,当扰动的尺度远小于基本流尺度的时候,可以…

  • 42
    • zhuanlan.zhihu.com 6 years ago
    • Cache

    狄拉克方程与氢原子的精确能级

    狄拉克方程是一个场方程,狄拉克波函数其实不是量子力学意义上的波函数,但是,可以视作是量子力学和量子场论之间的一种过渡.检验一个量子力学波动方程的一个重要的标志就是在氢原子的精确能级问题上的有效性,这一点…

  • 47
    • zhuanlan.zhihu.com 6 years ago
    • Cache

    阿贝尔积分方程

  • 33

    我们都知道暴力穷举是不现实的,那这次找到整数解的 Timothy Browning 是怎么算的呢?我试着去找了找他的…

  • 51

    这个定义其实很好理解: 下面我们以线性回归进行进一步的论证: 1.线性回归的预测模型 2.那幺线性回归的成本函数就是MSE: 3.接着我们对MSE求导,并令其等于0,这样得到一个权重theta为因变量的闭式解: 4....

  • 46

    大多数感到困惑的人,首先主要是因为没有把问题描述清楚。首先,直观一点解释,简单的高次方程,比如 x的…

  • 9
    • neil3d.gitee.io 3 years ago
    • Cache

    用”历史的发展的”眼光看 PBR

    内容概要 PBR 流行了这么久了,网上各种帖子也非常多,那么从技术角度说,到底什么是 PBR 呢? 【欢迎转载,请注明作者:房燕良,原文出处: 游戏程序员的自我修养 】 ...

  • 5

    不再接受关于结构方程模型的咨询 谢益辉 / 2008-05-02 关于结构方程模型(SEM),本人决定不再接受咨询,请各位勿发邮件询问相关事宜,特此告知。我于 05 年底在杜老的多元统计分析课上接触到 SEM,因为课上对原理讲得并不清楚(确...

  • 2

    Metalness vs Specular Workflows for PBR Shading随着计算机硬件以及渲染上的进步,我们可以更好的从物理上去模拟灯光属性,从而诞生了新的工作流程 PBR 工作流。PBR是一种着色和渲染技术,基于物理的渲染过程,用于更精确的描...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK