PBR物理光照Shader很多游戏引擎已经自带了,但是我们在定制渲染管线,优化渲染效果与修改Shader的时候需要对这些理论做一些基本的了解,才能修改的得心应手,今天我们对PBR物理光照的基本公式的原理来做一次数学推导,帮助大家掌握PBR Shader的基本计算原理,为后续做优化和定制做好准备,而这个也是面试时候必备,正在面试的同学可以来刷下这个文章。
主要的概念梳理
本文用到的一些概念,先在梳理一下,方便大家对照:
(1)光照方向L: 光照向表面的方向
(2)表面法线N: 垂直于物体表面的向量;
(3)观察者方向V:物体表面到观察者(摄像机)的向量;
(4)半角向量H: 根据观察方向和光线方向来进行计算的,取观察向量和光线向量夹角的一半作为新向量的方向;

(5)漫反射: 光线被粗糙表面无规则地向各个方向反射;
(6)镜面反射or高光反射: 镜面反射是指若反射面比较光滑,当平行入射的光线射到这个反射面时,仍会平行地向一个方向反射出来;

(7)双向反射分布函数BRFD: 给一个入射角度和一个观察角度,它能给出一个决定最终射向观察角度的光的强度的系数;
(8)可见性函数V: 描述光线从入射到出射的过程中,有多少比例被微表面自身的凹凸不平遮挡主了;
(9)法线分布函数D: 用来描述组成表面一点的所有微表面的法线分布概率, 如今的PBR时代,业界主流的法线分布函数已从传统的Blinn-Phong等分布,迁移到更接近真实材质外观表现,具备能量守恒,具有更宽尾部和更高峰值的GGX分布,而且在朝着多高光波瓣(multiple specular lobes)的方向发展。
(10):基于经验的光照与基于物理的光照: 基于经验的光照计算是指根据观察与经验得到的着色公式如Blinn-Phong,基于物理光照是基于物理理论的光照计算(PBR), 基于经验的公式是基于物理光照公式的某一种特殊的形势。
(11)菲涅尔现象F:在一个反射面上,当入射角度越“倾斜”,反射的光线越多,折射的光线越少,入射角度越“直”,折射的光线越多,反射的越少。
具体公式推导
我们先从经验光照模型的Blinn-Phong开始,然后再逐步的演变推导到物理PBR模式。
Blinn-Phong光照计算的公式如下:

这个公式表明: 光照计算 = 漫反射+高光反射。
Cdiff: 是漫反射的颜色;
Cspec:是高光颜色,或者叫镜面反射的颜色
N.L是表面法线和光线方向的点乘,结果是两个向量的余弦,下文称cos θL

本文对PBR物理光照基本公式原理进行数学推导,先梳理光照方向、表面法线等概念,再从经验光照模型Blinn - Phong逐步演变到物理PBR模式,介绍了法线分布函数、菲涅尔系数、可见性函数等公式,还考虑了光照能量守恒,助于掌握PBR Shader计算原理。
最低0.47元/天 解锁文章

1167

被折叠的 条评论
为什么被折叠?



