学习[threejs] PBR物理渲染

238 阅读5分钟

PBR物理渲染

什么是PBR?

PBR表示基于物理的渲染,有时称为物理着色,它是一种着色和渲染的方法。准确的说,表现光线如何与材料性质相互作用。PBS和PBR对3D建模的侧重点不同,前者通常指着色,后者表示渲染和光照

通过PBR技术可以实现与真实物理世界材质相似的视觉效果

PBR包含属性

  1. 灯光属性:直接照明,间接照明,直接高光,间接高光,阴影,环境闭塞
  2. 表面属性:基础色,法线,高光,粗糙度,金属度

灯光属性

光线类型

射入光解释图形
直接照明直接从光源发射阴影物体表面的光image.png
镜面光在经过表面反射聚焦在同一方向上进入人眼的光image.png
间接照明环境光和直接光经过反弹进入的光image.png
漫反射光光被散射并沿着哥哥方向离开表面image.png

光与表面的相互作用

名称解释图形
直接漫反射从源头到四面八方发散出来的直接高光image.png
直接高光直接来自光源并被聚焦反射的光image.png
间接漫反射来自环境的光被表面反射image.png
间接高光来自环境的光,被表面聚焦反射image.png
效果
名称解释图形
直接漫反射直接来自光源的光
撞击表面后散落在各个方向
在着色器中使用见到那的数学计算
image.png
直接高光反射在更集中的方向上
直接镜面反射在计算成本上要比漫反射低得多
image.png
间接漫反射来自环境中的各个方向上的光
撞击表面后散落在各个方向
因为计算昂贵,所以引擎的全局照明通常是使用离线渲染并被烘培成灯光地图
image.png
镜面反射来自环境中的各个方向的光
反射在一个更集中的方向上
引擎中使用反射探头,平面反射,SSR或射线追踪计算
image.png

表面属性

名称解释图形
基础色定义表面的漫反射颜色
真实世界的材料不会比20暗,或比240亮
粗糙表面具有更高的色差
超出范围的值不能正确发光
image.png
法线法线贴图是将xyz三个方向合并为一组颜色,表示
法线的坐标
定义曲面的形状每个像素代表一个矢量
法线贴图会使表面显得凹凸不平
用于添加表面形状的细节,这里三角面是实现不了的
因为他们表示矢量数据,所以法线是无法手工绘制的
image.png
镜面用于直接和间接镜面照明的叠加
当直视物体表面时,定义反射率
非金属反射表面4%的光
0.5代表4%的反射
1.0代表8%的反射,但大多数物体没必要反射这么多
在折射角下,所有的表面都是100%反射的,内置于引擎的菲涅耳项
image.png
粗糙度表面在微尺度下的粗糙度
白色是粗糙的
黑色是光滑的
控制反射的焦点
平滑=强烈的反射
粗糙=模糊的漫反射
image.png
金属度贴图两个不同的着色器通过金属度混合
基本色变成高光色,而不是漫反射颜色
技术漫反射是黑色的
在底色下,镜面范围可达到100%
大多数的金属反光性在60%-100%之间
确保对技术颜色值使用真实世界的测量值,并保证明亮
当金属为1时,镜面输入将被忽略
image.png

贴图制作

基础色贴图不包括任何的照明或阴影
基本颜色纹理看起来应该非常平坦
使用真实世界的度量或获取最佳结果的数据
image.png
镜面贴图制作注意事项高光贴图应该大于0.5
使用深色的阴影来遮盖不应该反获得裂缝
一个裂缝*0.5就是一个很好的高光贴图
image.png
粗糙度贴图制作注意点没有技术限制-完全是艺术的选择
艺术家可以使用这张贴图定义表面的特征,并展示
需要考虑被打磨光滑,磨损或老化的表面
image.png
金属度贴图制作注意点将着色器切换到金属模式
灰度之会很奇怪,最好使用纯白色或黑色
当金属色为白色时,确保使用的金属底色值
没有暗黑金属这回事
所有的金属均为180srgb或更亮
image.png

金属和非金属的对比

金属非金属
基础颜色=漫反射
镜面反射=0-8%
基础颜色=0-100%镜面反射
镜面=0%
漫反射总是黑色的

总结

  1. PBR是基于物理渲染的着色模型,PBR着色模型分为材质和灯光两个属性
  2. 材质部分由,基础色,法线,高光,粗糙度,金属度定义材质的表面属性
  3. 灯光部分则是:直接照明,间接照明,直接高光,间接高光,阴影,环境光闭塞来定义照明属性的
  4. 通常我们写材质的时候只需要关注材质部分的属性即可,灯光属性都是引擎定义好直接使用
  5. PBR渲染模型不但是指PBR材质,还有灯光,两者缺一不可