PBR(Physically Based Rendering),中文翻译为基于物理的渲染。
PBR是一种渲染方式,是使用基于物理原理和微平面理论的光照模型,以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染理念!
PRB是一系列技术的集合,它包含GI、PBS
1、物理的光学特性(Substance Optical Properties)
2、微平面理论(Microfacet Theory)
3、能量守恒(Energy Conservation)
4、菲涅尔反射(Fresnel Reflection)
5、线性空间光照(Linear Space Lighting)
现实世界中的物质根据导电性可以分为三大类:绝缘体、半导体、导体
而在渲染领域中大多数是分为两类:导体(金属)和绝缘体(非金属)
金属材质
1、金属具有很高的反射率(>0.5)
2、金属会立即吸收任何的折射光,因此金属不会出现任何次表面散射和透明的效果
3、金属的所有可见的颜色都来自反射
4、金属的反射颜有:金sRGB(255,226,155)银sRGB(252,250,245)
铝sRGB(245,246,246)铁sRGB(196,199,199)铜sRGB(250,208,192)
可以看出金属的高光反射颜色可以是不一样的,RGB通道也可以是不一样的值。
非金属材质
1、非金属具有很低的反射率(<0.06)
2、非金属会产生高光反射和漫反射现象
3、非金属的高光反射为单色/灰色
4、非金属的高光反射有:玻璃sRGB(57,57,57)水sRGB(43,43,43)
生锈金属sRGB(52,52,52)
现实世界中大多数表面都不是光学光滑的,这种微观几何上的变化会导致每个表面点对光有所不同的反射和折射。
所以基于物理渲染的PRB技术都是基于微平面理论的,它假想任何平面都是由微平面组成的,根据这些微平面粗糙度的不同,采用粗糙度贴图或者高光度贴图来进行表示。
如下图所示:即使看起来非常光滑的表面,用放大镜去看,它还是有许多凹凸不平的表面!
一个平面越是粗糙,这个平面上的微平面排列就是越混乱,显示出来的高光反射越模糊。
反之,一个平面越是越光滑,这个平面上的微平面排列越整齐,显示出来的高光反射越清晰。
1、出射光线的能量永远不能超过入射光线的能量(自发光物体除外)
2、随着粗糙度的上升,镜面/高光反射的区域面积会增加,基于能量守恒,故镜面/高光反射区域的亮度则会降低!
3、镜面反射 + 漫反射 <=入射光 解释:因为入射光发射到平面的时候,有些光束被平面内部给吸收了,这部分被吸收的光束不参与物理计算,固然镜面反射与漫反射相加得到的结果必然小于入射光,否则就是没有遵循能量守恒!
1、菲涅尔效应是一种表示看到光线的反射率与视角相关的现象,也就是光源入射方向与平面法线方向夹角的对应关系,夹角越大,反射越大,亮度也就越大,反之夹角越小,反射就越小,亮度也就越小。而这种效应中的反射率就被称为菲涅尔反射!
1、为了保证光照渲染的正确性,所以最好是在线性空间中进行操作与计算,这样才能尽最大的还原现实世界中光与物质的交互。
2、下图给出了在线性空间(Linear)与伽马空间(Gamma)中的计算对比!可以看出相同的数值,在两个空间中呈现的效果完全不一样,当强度值调到1.5时,伽马(Gamma)空间的亮部已经曝光了,细节几乎完全丢失,而在线性(Linear)空间中,没有曝光,细节依旧还在,且过渡自然。所以为了正确计算PRB我们在Shader中都应该在线性空间中计算!
1、PBR的两种工作流程,一种是金属工作流,另外一种是高光工作流。他们两种流程的优缺点都罗列在了下方!该图来源于哔哩哔哩技术美术百人计划_霜狼_may,有需要详细了解的可以进入下方链接:【技术美术百人计划】美术 2.7 Metallic与Speculer流程_哔哩哔哩_bilibili