前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【cg】【pbr】基于物理的渲染理论篇

【cg】【pbr】基于物理的渲染理论篇

作者头像
duadua
发布2022-10-31 15:35:29
8030
发布2022-10-31 15:35:29
举报
文章被收录于专栏:duadua blogduadua blog

辐射度量学

辐射度量学是用来研究电磁辐射能量的科学。所以在这里,PBR使用辐射度量学的一些概念作为能量的表述单位,从而使得到的公式在能量方面得到定量的准确度。要想理清PBR的理论,就不得不明白辐射度量学的一些基本概念。

立体角

立体角,solid angle,我们使用ω来表示。它表示光束发散或会聚的程度,是一个光锥投射到单位球体表面上的表面积。

如果我们以光锥的基点为球心作一个球体表面,那么立体角的定义就是锥体在球体表面的截取部分的表面积(记为\(dS\))与球体半径(记为r平方的比值。如下。

其中 \(\theta\) 为以垂直轴为原轴的pitch角度增量,而 \(\phi\) 则为yaw角度增量。可参考下图理解。

立体角
立体角

立体角

立体角的单位为球面度sr

那么物体从整个空间接收能量的立体角就是

。但是我们面对的通常都不是一个通透的点,而是一个有方向的平面,它最多只能接收一半空间的辐射能。所以一个表面从整个空间接收辐射能的立体角就是

这个一半空间便是此平面对应的半球领域,即hemisphere

立体角可以理解为一个带有体积的方向。如下图所示。

带有体积的方向
带有体积的方向

带有体积的方向

此立体角可以表示一束光,这束光从某个方向照到平面中心,这是光的方向。而立体角则表示这束光在单位球体上的表面积,光束越粗,表面积越大。所以说立体角可以很好地将一束光模拟成一个带有体积的方向。

辐射能

辐射能是辐射能量在一段体积、一段时间、一段方向上的积累。是辐射的能量值。单位焦耳(J)。这里使用\(Q\)来表示。

我们分别用下面的三个度量来表示其进一步的分布特性。

辐能密度

用来表示辐射能的空间特性。

辐射通量

用来表示辐射能的时间特性。

辐射强度

用来表示辐射能的方向特性。

有了辐射能及上面这些基本概念之后,我们还无法直接和进行光照计算的光照强度直接联系起来。接下来需要做的是将光的传播方向与其照射到的平面的法线方向联系起来,从而推导出真正的光照强度。

辐射亮度辐射照度所做的就是这件事情。

辐射亮度

光源投射到一个平面时,与平面法线的夹角不同,则投射到平面上的能量也不同。而辐射亮度需要解决这种方向上的差异,所以它的定义是光源投射到与光源方向所垂直的平面上发出的辐射通量。

其中

为光源投射平面在光源方向的垂直方向的投影。可参考下图理解。

垂直方向的投影平面
垂直方向的投影平面

垂直方向的投影平面

辐射亮度又称辐射度辐射率(radiance)

辐射照度

从定义就可以看出。辐射照度与辐射亮度的区别是,辐射照度没有考虑光源的方向,也没有考虑平面的方向,而是对于所有的方向(半球领域)来说的。所以可以说它是辐射亮度在半球领域对立体角的积分。而辐射亮度则是辐射照度在某个单位立体角上的微分。

BRDF与渲染方程

BRDF

BRDF全称双向反射分布函数(Bidirectional Reflective Distribution Function)。

在现实生活中,我们人眼所看到的一个表面,实际上是所有辐射到它上面的光,再反射到我们的眼睛里来。而BRDF所描述的就是这个反射光强与入射光强的关系。

这是因为E是总的辐射照度,它既不考虑入射光的方向,也不考虑出射光的方向,即入射出射都为整个半球领域,而\(dE\)是\(E\)的积分,它考虑了入射方向,即入射为某个方向,而出射是整个半球领域。

同时,L是入射光来自整个半球领域时的辐射亮度,所以它也要对

进行微分,而它本身便是关于\(\vec{v}\)的一个微分,所以它的入射和出射都是某个方向。

由此可见,分子比分母少了一个半球领域(出射也是某个方向),那么单位是

自然说的通了。

反射率方程

微平面与能量守恒

微平面

微平面(microfacets)即微观尺度的平面。PBR的理论都是基于微平面的。

在宏观平面中,一个平面总是平滑的,其法线在此平面的处处都相等且都垂直于该平面。

但是从微观的角度来看,这个平面由许多肉眼看不到的微小平面组成,这些微小平面的方向(法线)各不相同。

我们使用粗糙度(roughness)来表示一个宏观平面中微平面方向不相同的程度,即宏观平面的粗糙程度。

粗糙度

一个平面越粗糙,则这个平面上的微平面的排列就越混乱。从而产生分布更广的镜面反射。反之则会产生更尖锐的镜面反射。

借鉴Blinn_Phong模型,如果半程向量(halfway vector)与法线的方向一致,则镜面反射光线正好进入人眼。那么,对于一个给定的半程向量,这种方向一致的法线越多,镜面反射光线进入人眼的比例越多,我们就可以说这个平面越光滑,反之越粗糙。

粗糙度(roughness)就是用来计算半程向量与微平面的法线方向一致的概率的。粗糙度越小越一致,平面越光滑。

粗糙度的取值范围为[0.0, 1.0]

能量守恒

为了得到更真实的光照计算,以及统一光照强度的单位,PBR需要遵守能量守恒定律。

我们将一束照射到平面的光分为两部分,反射和折射。

对于反射部分,则是直接反射出去,不会进入平面内部的光,也就是镜面光照。

对于折射部分,则会进入平面内部,与平面材料的微粒进行碰撞,将光能转化为动能。

所以说,出射光的反射光线折射光线加起来会等于入射光线。假设反射光的比例系数为 \(k_s\) ,那么折射光的比例系统便为1.0-k_s。

其中反射光线即为镜面光照。而折射光线有的会被吸收,有的则重新从平面再反射出来,重新反射出来的便是次表面散射。次表面散射出的光线组成了光照的漫反射部分,下面解释这句话。

次表面散射

折射进入平面内部的光线,在内部经多次粒子碰撞之后,会重新从平面射出,这便是次表面散射,如下图所示。

次表面散射
次表面散射

次表面散射

从宏观角度来看,次表面散射需要另外的方法重新建模。此时光线会从另外一个平面射出。如下图所示。

宏观尺度的次表面散射
宏观尺度的次表面散射

宏观尺度的次表面散射

但是从微观角度来看,次表面散射的实质就是漫反射。因为光线并没有逃出我们的观察点,只不过不是直接反射的方向而已,所以我们会说次表面散射出来的光组成了光照的漫反射部分。如下图所示。

微观尺度的次表面散射
微观尺度的次表面散射
微观尺度的次表面散射
微观尺度的次表面散射

金属性

并非所有的物质的折射光都会转化为次表面散射,对于金属而言,所有的折射光都会被直接吸收而不会散开。

除此之外,金属的菲涅尔现象也与电介质或者非金属不同。为了更真实地模拟金属以及更多现实中的材质,需要引入金属度(metallic)作为参数来调节光照效果。

Cook-Torrance BRDF

事实上,Blinn_Phong模型本质上也是一个brdf模型,只不过它不满足能量守恒,且不是基于微平面的,并不是一个基于物理的brdf模型。

而我们这里使用的模型称为Cook-Torrance模型,它是一个基于物理的brdf模型,自1981年被Cook-Torrance引入图形学领域之后,一直被作为基于物理渲染的标准框架模型。

下面介绍该模型的一些基本概念以及最终的推导过程。

法线分布函数

法线分布函数
法线分布函数

法线分布函数

关于法线分布函数的建模,大都是基于统计学来估算的,或者基于显微镜下某种特定材质的表面形状特性来建模决定的。

几何分布函数

事实上,并非所有的法线方向与\(\vec{h}\)相同的微平面都会将光线反射进人眼。如下图所示。

几何阴影
几何阴影
几何遮蔽
几何遮蔽
正常
正常

如图所示,微平面本身的凹凸不平可能会导致自身的遮挡而反射不出去光线。

其中有的微平面是因为接收不到入射光,造成几何阴影,如左图。

有的是因为反射的光线被其他的微平面所遮蔽,造成几何遮蔽,如中图。

有的则可以正常反射出去,形成宏观平面的漫反射光照,如右图。

关于几何函数的建模,也是基于统计学来估算的,或者基于显微镜下某种特定材质的表面形状特性来建模决定的。

菲涅尔方程

在上文能量守恒小节中我们提到过,入射的光线可以分为反射光和折射光两个部分。而菲涅尔方程的作用就是可以得到反射的光线占总光线的比例。而且这个比例随我们的观察方向\(\vec{v}\)的不同而不同。

但是真实的菲涅尔方程十分复杂,这里是使用Fresnel-Schlick近似法求到的。

Cook-Torrance BRDF 的推导

有了上面这些概念,我们就可以尝试推导Cook-Torrance BRDF模型公式。

我们将Cook-Torrance BRDF分为两个部分,一个是Lambert漫反射项,一个才是Cook-Torrance镜面反射项。

Lambert项的推导

对于漫反射项,我们直接使用Lambert漫反射定律,可参考笔者的另一篇介绍Blinn_Phong光照模型的文章(好像还没有写)。

Cook-Torrance项的推导

Cook-Torrane项最终的结果形式如下。

这里之所以把二重微分变为一重,是因为出射辐射通量不需要积分,只是某个方向上的辐射通量而已。

(1.28)便是出射辐射通量的最终形式了。

有了出射辐射通量,我们就可以进一步求得出射辐射亮度了。

下面来证。

\(^o^)/

的推导

dh/dv
dh/dv

然后我们就可以利用一些小小的数学技巧来计算这两个面积的比值,而非两个立体角的比值。

dh/dv的推导
dh/dv的推导

dh/dv的推导

证毕。

\(^o^)/

但是这里只是在某篇上古论文里看到的一种解法,其中尚有些不解之处,听说真正的数学证法是利用雅克比换元法进行换元得出行列式,再进行化简,具体过程需要等以后更强大了再来了解,暂时先认为上面这种解决是正确的。

结语

本文系统详细地介绍了实现PBR的理论知识,使用了40个公式,对辐射度量学基础、BRDF与渲染方程、微平面、能量守恒以及Cook-Torrance BRDF的证明都都进行了详细的整理。

但是限于笔者水平十分有限,有的地方难免会有些曲解,希望有人发现了可以及时指正,不胜感激。

到此为止,便可认为具备了实现PBR的理论基础,后面两篇博文将重点整理一下以这些理论为基础对PBR模型的实现细节,包括直接光照基于IBL(Image Based Lighting)间接光照

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-252,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 辐射度量学
    • 立体角
      • 辐射能
        • 辐能密度
        • 辐射通量
        • 辐射强度
      • 辐射亮度
        • 辐射照度
        • BRDF与渲染方程
          • BRDF
            • 反射率方程
            • 微平面与能量守恒
              • 微平面
                • 粗糙度
              • 能量守恒
                • 次表面散射
            • Cook-Torrance BRDF
              • 法线分布函数
                • 几何分布函数
                  • 菲涅尔方程
                  • Cook-Torrance BRDF 的推导
                    • Cook-Torrance项的推导
                    • 结语
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档