标准着色器

Unity 标准着色器是一个内置着色器,具有非常全面的功能。它可以用于渲染『真实世界』的对象,例如,石头、木材、玻璃、塑料和金属,并支持各种各样的着色器类型和组合。通过使用或不使用材质编辑器中的各种纹理插槽和参数,可以很容易地启动或禁用其功能。

标准着色器还包括一个称为 物理着色器(Physically Based Shading,PBS) 的高级光照模型。物理着色器以模拟真实世界的方式模拟材质和光照之间的相互作用。物理着色器最近才在实时图形中变为可能。最适合物理着色器的场景是,光照和材质需要直观并真实地共存时。

物理着色器背后的目标是,在不同光照条件下,以用户友好的方式,实现一致、可信的视觉效果。它模拟了光照在真实世界中的行为,并且不需要使用其他特殊模型(不管特殊模型是否可以运行)。为此,物理着色器遵循物理学法则,包括能量守恒(对象反射的光永远不会超过接收的光)、菲涅尔反射(所有表面在掠射角时反射更多的光),和表面如何闭合自身(几何术语)。

标准着色器的设计考虑了硬表面(也成为『建筑材料』),可以处理大多数真实世界的材料,如石头、玻璃、陶瓷、黄铜或橡胶。它甚至还可以处理非硬材料,如皮肤、头发和衣服。

A scene rendered using the standard shader on all models

在所有模型上使用标准着色器渲染的场景

通过标准着色器,大量的着色器类型(例如,漫反射、镜面、凹凸镜面、反射)被合并为单个着色器,并应用于所有材质类型。这么做的好处是,在场景的所有区域都使用同样的光照计算,从而为使用标准着色器的所有模型提供真实、一直、可信的光照和阴影分布。

术语

在谈论 Unity 的物理着色器时,有许多概念非常有用。包括:

  • 能量守恒 —— 这是一个物理概念,确保对象反射的光不会超过接收的光。材质越接近镜面,散射的光越少;表面越光滑,反射的光越强,反射的光束越小。

The light rendered at each point on a surface is calculated to be the same as the amout of light received from its environment. The microfacets of rough surfaces are affected by light from a wider area. Smoother surfaces give stronger and smaller highlights. Point A reflects light from the source towards the camera. Point B takes on a blue tint from ambient light from the sky. Point C takes its ambient and reflective lighting from the surrounding ground colours.

在表面每个点处渲染的光与从环境接收的光的数量相等。粗糙表面的细微颗粒受到来自更大区域的光的影响。越平滑的表面,反射的光越越强,反射的光束越小。点 A 将光从光源反射到摄像机。点 B 从天空的环境光获得蓝色色调。点 C 接收环境光,并反射来自周围地面的光。

  • 高动态范围图像(High Dynamic Range,HDR) — 通常指 0 - 1 范围之外的光。例如,太阳光的亮度比蓝天高 10 倍。相关的深入讨论,请参阅 Unity 手册的 HDR 页。

A scene using High Dynamic Range. The sunlight reflecting in the car window appears far brighter than other objects in the scene, because it has been processed using HDR

一个使用高动态范围图像的场景。从车窗反射的太阳光比场景中的其他对象明亮的多,因为它已经用 HDR 处理过。