Shading models in Universal Render Pipeline
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
URP版本:8.2.0
URP提供了以的下着色模型
- 基于物理的着色模型(Physically Based Shading)
- 简单的着色模型(Simple Shading)
- 烘焙式光照的着色模型(Baked Lit Shading)
- 无光照的着色模型(No lighting)
Physically Based Shading
PBS模型遵循以下原则:
- 能量守恒定律:出射的光永远不会超过入射光的总和。唯一的例外是当物体自身是发光的
- 微表面:具有在微观水平上的几何形状。一些对象具有光滑的微几何形状,这使它们具有镜面般的外观。其他对象具有粗糙的微几何形状,这使它们看起来更暗淡。在URP中,可以对待渲染对象的表面的平滑度进行模拟。
- 当光线照射到待渲染对象的表面时,一部分光线会反射,一部分光线会折射进待渲染对象内部。反射的光称为镜面反射。这取决于相机的方向和光线照射表面的点(也称为入射角)而变化。在此着色模型中,镜面反射高光光斑的区域形状使用GGX函数近似。
- 对于金属物体,表面会吸收(absorb)并改变光。对于非金属物体(也称为介电物体),表面反射光的一部分。
- 光衰减仅受光强度影响。这意味着不必增加光的范围即可控制衰减。
以下URP着色器基于物理的着色模型实现:
注意:此阴影模型不适用于低端移动硬件。如果要使用此硬件,请使用简单的着色模型(Simple Shading)。
要了解有关基于物理的渲染的更多信息,请参阅Marmoset上的Joe Wilson的blog。
Simple shading
简单的着色模型(Simple Shading)基于Blinn-Phong模型。
在此简单着色模型中:
- “反射”将分解为漫反射光和镜面反射光,并且两者之间没有关联。漫反射和镜面反射光的量,取决于为材质选择的属性,因此总反射光可能会超过总入射光。镜面反射仅随相机方向而变化。
- 光衰减仅受光强度影响。
- 光衰减仅受光强度影响。这意味着不必增加光的范围即可控制衰减。
以下URP着色器基于简单的着色模型实现
Baked Lit shading
烘焙式光照的着色模型没有使用实时光进行照明计算。材质可以从光照贴图(lightmap)或 光探针(lighting) 获取到**预烘焙的光照信息(baked lighting)**以进行照明计算。 URP Baked Lit是唯一使用烘焙式光照的着色模型的着色器。
Shaders with no lighting
URP附带了一些不使用光照计算的着色器。这意味着它们不使用实时的光源,也不使用预烘焙的光照信息来进行照明计算。方向灯,也没有烘烤的照明。因为没有光照计算,所以这些着色器的编译速度比带光照的着色器要快。如果事先知道GameObject不需要照明,请选择“Unlit”着色器以节省计算时间并在最终产品中建立时间。
以下URP着色器没有照明: