标准着色器
Unity 标准着色器是一个内置着色器,具有非常全面的功能。它可以用于渲染『真实世界』的对象,例如,石头、木材、玻璃、塑料和金属,并支持各种各样的着色器类型和组合。通过使用或不使用材质编辑器中的各种纹理插槽和参数,可以很容易地启动或禁用其功能。
标准着色器还包括一个称为 物理着色器(Physically Based Shading,PBS) 的高级光照模型。物理着色器以模拟真实世界的方式模拟材质和光照之间的相互作用。物理着色器最近才在实时图形中变为可能。最适合物理着色器的场景是,光照和材质需要直观并真实地共存时。
物理着色器背后的目标是,在不同光照条件下,以用户友好的方式,实现一致、可信的视觉效果。它模拟了光照在真实世界中的行为,并且不需要使用其他特殊模型(不管特殊模型是否可以运行)。为此,物理着色器遵循物理学法则,包括能量守恒(对象反射的光永远不会超过接收的光)、菲涅尔反射(所有表面在掠射角时反射更多的光),和表面如何闭合自身(几何术语)。
标准着色器的设计考虑了硬表面(也成为『建筑材料』),可以处理大多数真实世界的材料,如石头、玻璃、陶瓷、黄铜或橡胶。它甚至还可以处理非硬材料,如皮肤、头发和衣服。
在所有模型上使用标准着色器渲染的场景
通过标准着色器,大量的着色器类型(例如,漫反射、镜面、凹凸镜面、反射)被合并为单个着色器,并应用于所有材质类型。这么做的好处是,在场景的所有区域都使用同样的光照计算,从而为使用标准着色器的所有模型提供真实、一直、可信的光照和阴影分布。
术语
在谈论 Unity 的物理着色器时,有许多概念非常有用。包括:
- 能量守恒 —— 这是一个物理概念,确保对象反射的光不会超过接收的光。材质越接近镜面,散射的光越少;表面越光滑,反射的光越强,反射的光束越小。
在表面每个点处渲染的光与从环境接收的光的数量相等。粗糙表面的细微颗粒受到来自更大区域的光的影响。越平滑的表面,反射的光越越强,反射的光束越小。点 A 将光从光源反射到摄像机。点 B 从天空的环境光获得蓝色色调。点 C 接收环境光,并反射来自周围地面的光。
- 高动态范围图像(High Dynamic Range,HDR) — 通常指 0 - 1 范围之外的光。例如,太阳光的亮度比蓝天高 10 倍。相关的深入讨论,请参阅 Unity 手册的 HDR 页。
一个使用高动态范围图像的场景。从车窗反射的太阳光比场景中的其他对象明亮的多,因为它已经用 HDR 处理过。