Pbr和一般光照模型的区别
pbr (physically based rendering) ,基于物理的渲染。
首先明确一点,物体有颜色是因为那些没有被物体吸收的光线(表现为物体的颜色)射入你的眼睛,你才感知到了颜色。从光照模型的角度来说,射入你眼睛的有两种光,一种是直接的反射光(表现为光本来的颜色),一种是折射进入物体后又散射出来的所谓漫反射光(即被吸收过了的光,也就是贴图的颜色)
pbr和原始的blinn-phong的最大区别就是,考虑到了光照的能量守恒,且 基于给定粗糙值的表面(片元),对于光的反射计算更加的符合统计结果。
大致的逻辑/概念:
对于单个片元来说
基于粗糙度,入射方向,观察方向,法线方向,先使用一个统计模型去估算出对于此片元来说,法线半球内所有入射光线经过直接反射进入到观察者眼睛的占比,也就是高光的占比(并根据法线分布函数和几何函数做调整)(在不考虑基于环境cubemap作为间接光源的情况下,单个直接光源对单个片元来说只需要计算一根入射光线,phong里就是这样,但是他没有能量守恒)。随后漫反射的占比就能通过1减去高光占比简单的算出来 (此为能量守恒)(折射进入物体后被吸收或二次散射出来,即表现为漫反射)(当然最后还是需要乘以熟悉的Dot(n,l))。
而这个统计模型中包含了三个核心函数。
菲涅尔函数:获取反射光总量的占比 (也就同时得到了漫反射占比)
法线分布函数:通过粗糙度常量和dot(n,h)的函数获得高光值…越光滑的表面,高光越集中、亮,反之,高光面积越大且越暗
几何函数:获取由于微表面的相互遮蔽,而造成的能量损失概率。
一旦有了反射光和折射光的占比 ,计算就和原来的光照模型差不多了(反射光总量即光线颜色,折射光即物体贴图颜色)。
至此,能获得的效果已经比传统模型好很多了。
而pbr的最终形态是同时考虑来自环境光照贴图(一个cubemap)的间接光照,被称为IBL(image based lighting)的东西。他不但需要cubemap还需要为cubemap预计算数据,这意味着预计算的数据又是一个新的cubemap。
不论是存储消耗还是运算消耗(需要在cubemap所有采样点的数据集中做卷积)都十分巨大,但是带来的视觉提升也爆表了。
高光网格材质MeshPhongMaterial和物理PBR材质MeshStandardMaterial分别对应的是普通次时代模型,PBR模型。
————————————————
版权声明:本文为CSDN博主「zwlstc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zwlstc/article/details/86620028