PBR

PBR 全称是 Physically Based Rendering,中文意思是基于物理的渲染,最早由迪士尼在 2012 年提出,后来被游戏界广泛使用。跟传统的 Blinn-Phong 等渲染方法相比,PBR 遵循能量守恒,符合物理规则,美术们只需要调整几个简单的参数,即使在复杂的场景中也能保证正确的渲染效果。PBR 遵循能量守恒,是基于物理的渲染,并且引入了 IBL 模拟全局光照,通过金属度、粗糙度等参数,更加方便地调节渲染效果。

PBR 基础参数介绍

参数应用
metallic金属度。模拟材质的金属程度,金属值越大,镜面反射越强,即能反射更多周边环境。
roughness粗糙度。模拟材质的粗糙程度,粗糙度越大,微表面越不平坦,镜面反射越模糊。
roughnessMetallicTexture金属粗糙度纹理。搭配金属粗糙度使用,是相乘的关系。
baseColor基础颜色。基础颜色 * 基础颜色纹理最后的基础颜色。基础颜色是物体的反照率值,与传统的漫反射颜色不同,它会同时贡献镜面反射和漫反射的颜色,我们可以通过上面提到过的金属度、粗糙度,来控制贡献比。
emissiveColor自发光颜色。使得即使没有光照也能渲染出颜色。
baseTexture基础颜色纹理。搭配基础颜色使用,是个相乘的关系。
normalTexture法线纹理。可以设置法线纹理 ,在视觉上造成一种凹凸感,还可以通过法线强度来控制凹凸程度。
emissiveTexture自发射光纹理。我们可以设置自发光纹理和自发光颜色(emissiveFactor)达到自发光的效果,即使没有光照也能渲染出颜色。
occlusionTexture阴影遮蔽纹理。我们可以设置阴影遮蔽纹理来提升物体的阴影细节。
tilingOffset纹理坐标的缩放与偏移。是一个 Vector4 数据,分别控制纹理坐标在 uv 方向上的缩放和偏移,参考 案例
clearCoat透明涂层的强度,默认为 0,既不开启透明涂层效果,参考 案例
clearCoatTexture透明涂层强度纹理,和 clearCoat 是相乘的关系。
clearCoatRoughness透明涂层的粗糙度。
clearCoatRoughnessTexture透明涂层粗糙度纹理,和 clearCoatRoughness 是相乘的关系。
clearCoatNormalTexture透明涂层法线纹理,如果没有设置则会共用原材质的法线。

我们调节材质的金属度,可以发现,金属度越大,周围的环境越清晰,并且开始从白色纯色变成彩色。这是因为电介质(即金属度为 1 时)材质会将光线 100% 全部反射出物体表面,即反射出彩色的周边环境:

除了以上通用参数,PBR 提供了 金属-粗糙度高光-光泽度 两种工作流,分别对应 PBRMaterialPBRSpecularMaterial

PBRMaterial

Anisotropy

指表面材料在不同方向上的光反射特性不同,通常表现为材料表面呈现出不同的光泽或反射效果。这种效应在许多真实世界的材质中都有出现,尤其是金属、织物、头发等材料。
参数应用
anisotropy各向异性强度。默认为 0,关闭各项异性计算。参考 案例
anisotropyRotation各向异性旋转角度。沿切线、副切线空间旋转相应角度。
anisotropyTexture各向异性纹理。RG 通道保存着各向异性方向,会和 anisotropyRotation 计算结果相乘;B 通道保存着各向异性强度,会和 anisotropy 相乘。

启用 Anisotropy

  • 导航到 Inspector ,打开 anisotropy 后调节对应的参数获取想要的效果:

Sheen

通常用于模拟织物等材质表面微小的光泽效果,这种光泽一般在一定的观察角度下可以看到,类似于一些丝绸、天鹅绒或其他细致纤维材料表面的光散射特性。

参数描述
sheenColor物体表面基础光泽颜色,此属性决定了当光线与表面交互时,表面上观察到的光泽颜色。
sheenColorTexture用于为光泽效果提供更复杂和细致的颜色变化,通过使用该纹理,可以实现光泽颜色在表面上的不同区域具有不同的表现。
sheenRoughness定义表面粗糙度,较低的数值表示表面更光滑,光泽更集中;较高的数值意味着表面更粗糙,光泽更柔和且扩散。
sheenRoughnessTexture允许粗糙度在不同区域具有不同的特性,通过纹理来定义这种变化,这样可以在同一表面上实现复杂的粗糙度表现。
不同角度下织物表面的光泽变化

启用 sheen

  • 选中 material ,调节对应的参数获取想要的效果:

Thin Film Iridescence

通常表现为物体表面颜色随着观察角度和光照角度的变化而变化,这种效应在自然界中可以于肥皂泡、昆虫翅膀、珍珠等地方看到。
参数描述
iridescence薄膜干涉强度,范围从 0 到 1。
iridescenceTexture指定一张纹理,用于控制薄膜干涉效果的强度。
iridescenceIOR薄膜干涉折射率,该值决定了光线的弯曲程度,对于薄膜干涉而言,它影响所得光线的颜色。
iridescenceThicknessRange用于控制薄膜干涉厚度,决定了最终薄膜干涉的颜色变化。
iridescenceThicknessTexture指定一张纹理,用于控制薄膜干涉效果的厚度,同时也会影响到最终效果颜色。
薄膜干涉效果

启用 Iridescence

Transmission

描述了光线穿过物体而不是被反射或吸收的部分,当一个光照到透明或半透明物体时,部分光会穿过该物体,这就是透射的基本表现。
transmission 从 0 到 1 的变化
参数描述
transmission控制材质的透射强度,范围为 0 到 1 之间,0 表示不透射,1 表示完全透射。
transmissionTexture透射纹理,采样 R 通道,与 transmission 相乘,用于控制材质表面不同区域的透射强度。

启用 transmission

  • 首先需要分别打开 Camera 下和场景中的 Opaque Texture:
  • 然后选中 material 调节 transmission 相关的参数:

根据物理规律,我们认为 折射 是建立在 透射 的基础上,这意味着只有当光线穿过材质 透射 时, 折射 现象才会发生,即 transmission 大于 0 , 折射 才会生效。

Refraction

参数描述
attenuationColor吸收颜色,决定光线在物体内部传播时颜色的变化,通过设置该颜色,可以模拟如彩色玻璃、液体或宝石内部的光学吸收效果。
attenuationDistance衰减距离,定义光线在物体内部传播时衰减的距离范围,当衰减距离较短时,材质会显得更浓密,颜色变化更明显;当衰减距离较长时,光线穿透距离更大,颜色变化较缓,值为 0 时,表示光线不会随距离衰减。
thickness折射厚度,用于控制光线通过物体时的折射效果,较大的厚度值会导致光线发生更明显的弯曲,而较小的值则让光线更加直线传播。
thicknessTexture折射厚度纹理,采样 G 通道,白色区域表示较大的厚度,黑色区域表示较小的厚度,与 thickness 相乘。
attenuationDistance 逐渐增大,颜色的变化

启用 Refraction

  • 确保 transmission 打开后,将 thickness 设置为大于 0,即可打开折射
  • 可以调整衰减颜色、衰减距离等参数配合折射使用

我们为了实现折射算法,做了以下假设:

用一个简单的几何形状近似模拟物体表面特性,并使用 refractionMode 表示材质的折射模式。

refractionMode描述
Sphere使用球体作为几何形状近似模拟物体的表面,可以高效地处理光线在曲面上的折射行为。
Planar使用平面作为几何形状近似模拟物体的表面,适合处理光线在平坦材质上的透射和折射行为。

PBRSpecularMaterial

参数应用
specularColor高光度。不同于金属粗糙度工作流的根据金属度和基础颜色计算镜面反射,而是直接使用高光度来表示镜面反射颜色。(注,只有关闭金属粗糙工作流才生效) 。
glossiness光泽度。模拟光滑程度,与粗糙度相反。(注,只有关闭金属粗糙工作流才生效)。
specularGlossinessTexture高光光泽度纹理。搭配高光光泽度使用,是相乘的关系。

:PBR 必须开启环境光

如果需要通过脚本使用材质,可以前往材质的使用教程

这篇文档对您有帮助吗?