什么是PBR
大约 5 分钟
文章转自知乎@云鸽
![什么是PBR?](https://pic1.zhimg.com/v2-dfba50aeb6400474d5e795124c13b7c9_720w.jpg?source=172ae18b)
什么是PBR?
一、什么是PBR?
- 基于物理渲染
- 以前的渲染是在模仿灯光的外观
- 现在是在模仿光的实际行为
- 试图形看起来更真实
二、PBR组成部分
![img](https://pic4.zhimg.com/80/v2-b7b17aa4bcf4fe29eefbfea179cdb5ef_720w.webp)
- 灯光属性:直接照明、间接照明、直接高光、间接高光、阴影、环境光闭塞
- 表面属性:基础色、法线、高光、粗糙度、金属度
三、灯光属性
1、光线类型
![img](https://pic3.zhimg.com/80/v2-bc3859883c4469f524a9add59e02264e_720w.webp)
入射光
- 直接照明:直接从光源发射阴影物体表面的光
- 间接照明:环境光和直接光经过反弹第二次进入的光
反射光
- 镜面光:在经过表面反射聚焦在同一方向上进入人眼的高亮光
- 漫发射:光被散射并沿着各个方向离开表面
2、光与表面相互作用类型
![img](https://pic4.zhimg.com/80/v2-c0e39c006e20d5f7d6859dc916c57daf_720w.webp)
- 直接漫反射:从源头到四面八方散发出来的直接高光
- 直接高光:直接来自光源并被集中反射的光
- 间接漫反射:来自环境的光被表面散射的光
- 间接高光:来自环境光并被集中反射的光
(1)直接漫反射
![img](https://pic1.zhimg.com/80/v2-b9e003068afecb890494dca97ccee074_720w.webp)
- 直接来自光源的光
- 撞击表面后散落在各个方向
- 在着色器中使用简单的数学计算
(2)直接高光
![img](https://pic1.zhimg.com/80/v2-07d9ad373a3291dd4770a5e365a0b1d0_720w.webp)
- 直接来自光源的光
- 反射在一个更集中的方向上
- 在着色器中使用简单的数学计算
直接镜面反射的计算成本比漫反射低很多
(3)间接漫反射
![img](https://pic1.zhimg.com/80/v2-fafb6cf25c8b55c0ab962639ff1c761c_720w.webp)
- 来自环境中各个方向的光
- 撞击表面后散落在各个方向
- 因为计算昂贵,所以引擎的全局照明解决方案通常会离线渲染,并被烘培成灯光地图
(4)镜面反射
![img](https://pic3.zhimg.com/80/v2-fced27594b2cbb762cfaf8a07e68b3aa_720w.webp)
- 来自环境中各个方向的光
- 反射在一个更集中的方向上
- 引擎中使用反射探头,平面反射,SSR,或射线追踪计算
四、表面属性
(1)基础色
![img](https://pic4.zhimg.com/80/v2-43e5a13366d92e3203852e5ff5d36c6b_720w.webp)
- 定义表面的漫反射颜色
- 真实世界的材料不会比20暗或比240 sRGB亮
- 粗糙表面具有更高的最低~ 50srgb
- 超出范围的值不能正确发光,所以保持在范围内是至关重要的
![img](https://pic4.zhimg.com/80/v2-cd6e2f1a3c1c17337c3068da6ac6684b_720w.webp)
基础色贴图制作注意点:
- 不包括任何照明或阴影
- 基本颜色纹理看起来应该非常平坦
- 使用真实世界的度量或获取最佳结果的数据
(2)法线
![img](https://pic4.zhimg.com/80/v2-237debda9015e0193e3366721cb72097_720w.webp)
- 定义曲面的形状每个像素代表一个矢量
- 该矢量指示表面所面对的方向即使网格是完全平坦的
- 法线贴图会使表面显得凹凸不平
- 用于添加表面形状的细节,这里三角形是实现不了的
- 因为它们表示矢量数据,所以法线贴图是无法手工绘制的
(3)镜面
![img](https://pic4.zhimg.com/80/v2-4a54d693e4105195fbc9e7ac89bfd0f3_720w.webp)
- 用于直接和间接镜面照明的叠加
- 当直视表面时,定义反射率
- 非金属表面反射约4%的光
- 0.5代表4%的反射
- 1.0代表8%的反射但对于大多数物体来说太高了
- 在掠射角下,所有表面都是100%反射的,内置于引擎中的菲涅耳项
![img](https://pic4.zhimg.com/80/v2-db82b88d8114f058b177efd4df8bfac7_720w.webp)
镜面贴图制作注意点:
- 高光贴图应该大多在0.5
- 使用深色的阴影来遮盖不应该反光的裂缝
- 一个裂缝贴图乘以0.5就是一个很好的高光贴图
(4)粗糙度
![img](https://pic4.zhimg.com/80/v2-8a4d45439343efe7dac2683043845b73_720w.webp)
- 表面在微观尺度上的粗糙度
- 白色是粗糙的
- 黑色是光滑的
- 控制反射的“焦点”
- 平滑=强烈的反射
- 粗糙=模糊的,漫反射
![img](https://pic1.zhimg.com/80/v2-9d33bcda62552312986705455c04ed48_720w.webp)
粗糙度贴图制作注意点:
- 没有技术限制-完全艺术的选择
- 艺术家可以使用这张地图来定义表面的“特征”,并展示它的历史
- 考虑一下被打磨光滑、磨损或老化的表面
(5)金属度
![img](https://pic2.zhimg.com/80/v2-c6ff366bb6cbba9abef1a0ac54a377f1_720w.webp)
- 两个不同的着色器通过金属度混合他们
- 基本色变成高光色而不是漫反射颜色
- 金属漫反射是黑色的
- 在底色下,镜面范围可达100%
- 大多数金属的反光性在60%到100%之间
- 确保对金属颜色值使用真实世界的测量值,并保持它们明亮
- 当金属为1时,镜面输入将被忽略
![img](https://pic4.zhimg.com/80/v2-b1f869506e78bac6fd105456caa4e62f_720w.webp)
粗糙度贴图制作注意点:
- 将着色器切换到金属模式
- 灰度值会很奇怪,最好使用纯白色或黑色
- 当金属色为白色时,请确保使用正确的金属底色值
- 没有黑暗金属这回事
- 所有金属均为180srgb或更亮
五、非金属和金属对比
![img](https://pic3.zhimg.com/80/v2-3cdc5b485f8c47bf03dbd97f8739d726_720w.webp)
非金属
- 基础颜色=漫反射
- 镜面反射=0-8%
金属
- 基础颜色=0-100%的镜面反射
- 镜面=0%
- 漫反射总是黑色的
六、总结
- PBR是基于物理渲染的着色模型,PBR着色模型分为材质和灯光两个属性。
- 材质部分由:***基础色、法线、高光、粗糙度、金属度来定义***材质表面属性的。
- 灯光部分是由:***直接照明、间接照明、直接高光、间接高光、阴影、环境光闭塞***来定义照明属性的。
- 通常我们写材质的时候只需要关注材质部分的属性即可,灯光属性都是引擎定义好的直接使用即可。
- PBR渲染模型不但指的是PBR材质,还有灯光,两者缺一不可。
本文章整理自作者Ben'Cloward视频教程:
文章转自知乎@云鸽