PBR理论(三)

openGL高级光照部分目录 见 openGL高级光照部分目录

BRDF

BRDF或双向反射分布函数是一个函数,它将入射(光)方向ωi、输出(视图)方向ωo、曲面法线n和表示微表面粗糙度的曲面参数a作为输入。考虑到不透明表面的材料特性,BRDF近似于每个单独光线ωi对最终反射光的贡献。例如,如果曲面有一个非常平滑的曲面(如镜子),则BRDF函数将为所有入射光线ωi返回0.0,除了一条与传出光线ωo具有相同(反射)角度的光线外,该函数返回1.0。

基于反射理论和反射材料理论,讨论了反射材料的反射特性。为了使BRDF在物理上合理,它必须遵守能量守恒定律,即反射光的总和决不能超过入射光的量。从技术上讲,同样采用ωiωi和ωoωo作为输入参数的 Blinn-Phong光照模型也被认为是一个BRDF。然而,Blinn Phong并不是物理基础,因为它不遵循能量守恒原理。有几种基于物理的brdf可以近似地表对光的反应。然而,几乎所有的实时PBR渲染管道都使用称为Cook-Torrance-BRDF的BRDF。

Cook-Torrance BRDF包含漫反射和镜面反射部分:

这里kd是前面提到的入射光线中被折射部分的能量所占的比率,ks是被反射的比率。BRDF的左边表示方程的漫反射部分,这里表示为flambert。这称为Lambertian diffuse,与我们用于漫反射着色的方法类似,它是一个常数因子,表示为:

c是反照率或表面颜色(想想漫反射表面纹理)。除以π是为了规范化漫反射光,因为前面表示的包含BRDF的积分被π缩放(我们将在IBL章节中讨论)。

您可能会想知道这个Lambertian 漫反射与我们之前使用的漫反射照明有什么关系:曲面颜色乘以曲面法线和灯光方向之间的点积。点乘依然还在,但是却不在BRDF之内,而是转变成为了Lo积分末公式末尾处的 n⋅ωi  。

对于BRDF的漫反射部分,存在着不同的方程,它们看起来更真实,但计算成本也更高。然而,正如Epic Games总结的那样,对于大多数实时渲染目的来说,Lambertian漫反射已经足够了。

扫描二维码关注公众号,回复: 11571334 查看本文章

BRDF的镜面反射部分更高级,描述如下:

Cook-Torrance镜面反射BRDF由三个函数和分母中的一个标准化因子组成。D、F和G符号中的每一个都代表一种函数类型,它近似于曲面反射特性的特定部分。它们被定义为法线分布函数菲涅耳方程几何函数

法线分布函数:近似曲面的微面与中间向量对齐的量,受表面粗糙度的影响;这是近似微面的主要函数。

几何函数:描述微区的自阴影特性。当一个表面相对粗糙时,表面的微区会遮住其他的微区,从而减少表面反射的光。

菲涅耳方程:菲涅耳方程描述了不同表面角度下的表面反射比

这些函数中的每一个都是它们物理等价物的近似值,你会发现每个函数都有一个以上的版本,目的是以不同的方式近似底层物理;有些更现实,有些更有效。选择您想要使用的这些函数的任何近似版本都是非常好的。来自Epic Games的Brian Karis在这里对多种类型的近似进行了大量的研究。我们将选择Epic Game的虚幻引擎4使用的相同函数,分别是Trowbridge Reitz GGX表示D,Fresnel Schlick近似用于F,Smith的Schlick GGX用于G。

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/107332837
PBR