在思考 Unity 中的光照时,将概念划分为所谓的内容(光照和渲染的对象)和上下文(即场景中会影响光照对象的光照)会很方便。
对象发生光照时,了解哪些光源会影响对象非常重要。场景中通常有直接光源:可能是放置在场景中的游戏对象光源。此外还有间接光源,例如反射和反射光。这些光源都会对对象的材质产生影响,从而产生摄像机在对象表面上看到的最终结果。
这种划分并非硬性和绝对的,通常可能被认为的“内容”也可能是另一个对象的光照上下文的一部分。
在这方面,一个很好的例子就是位于沙漠景观中的建筑物。该建筑物将从天空盒获取光照信息,也可能会从周围地面的反射光获取这些信息。
但是,可能有一个角色站在建筑物的外墙附近。对于该角色,建筑物是光照上下文的一部分:建筑物可能投射阴影,建筑物可能将反射光从墙壁投射到角色身上,或者角色可能有直接反射建筑物本身的反射部分。
在启动时,Unity 显示一个空场景。此场景已具有默认的光照上下文,此上下文附带有环境、基于天幕的反射和方向光。默认情况下,放置在该场景中的任何对象都应有它需要的全部光照以让它看起来正确。
让我们在场景中添加一个球体来查看默认光照上下文的效果。
添加的球体在默认情况下将使用标准着色器。将摄像机对准球体会出现如下情况:
注意沿着球体边缘的反射以及从棕色(底部)到天蓝色(顶部)的微妙环境变化。默认情况下,在空场景中,所有光照上下文都是从天空盒和方向光(默认情况下会添加到场景中)派生的。
当然这是默认设置,在某些情况下,单个光照和天空反射可能还不够。您可以轻松添加更多光照和反射探针:
有关反射和光照探针的工作原理的深入探讨,请参阅光照探针和反射探针的文档。
天空盒(烘焙或程序化天空盒)可作为光照设置的组成部分。除渲染天空外,天空盒还可用于控制环境光照和对象反射。 程序化天空盒还允许您直接设置颜色并创建太阳圆盘而不是使用位图;如需更多信息,请参阅天空盒文档
虽然反射天空盒可能对场景中的许多对象(尤其是室外场景)非常有用,但通常情况下您需要改变对象使用的反射:室外场景中可能存在黑暗区域(例如小巷或茂密的森林),或者可能有室内区域需要反射以便与每个房间匹配。
为了满足这些各种反射要求,Unity 提供了反射探针,允许您在场景中某个空间点进行环境采样,从而将其用作该点附近的所有对象的环境光和反射源,而不是使用默认的天空盒。在场景中,场景的天空盒不足或不适用的任何位置,均可放置反射探针。
The concept of Global Illumination is integral to Unity. Both the Standard shader and Unity’s GI systems have been designed to play well with each other. The GI system takes care of creating and tracking bounced light, light from emissive materials and light from the environment. You can find the details here.
上下文是图像整体外观的关键部分。在以下示例中,可看到内容和摄像机保持不变的情况下,场景如何反映上下文的变化。
内容是用于描述场景中正在渲染的对象的术语。它们的外观是光照上下文作用于已应用到对象的材质的结果。
在使用标准着色器的检视面板中查看材质时,编辑器将显示材质的所有参数,包括纹理、混合模式、遮罩和辅助贴图。您可以一目了然地看到使用了哪些特性,并可预览材质。 由于标准着色器是数据驱动的,Unity 将仅使用用户为材质设置的配置所需的着色器代码。换句话说,如果未使用材质的某个特性或纹理字段,则不会有相关成本,并且着色器组合在幕后实现优化。
标准着色器允许进行多种配置,以便表示各种材质类型。可使用纹理贴图或拾色器和滑动条来设置值。通常需要 UV 贴图与纹理相结合来描述网格的哪个部分指向纹理贴图的哪个部分。因此,当与镜面反射和平滑度贴图或金属性贴图结合使用时,标准着色器材质允许在同一网格上具有不同的材质属性。换句话说,您可以在一个网格上创建橡胶、金属和木材,这种情况下的纹理分辨率可超过多边形拓扑,从而允许材质类型之间实现平滑的边界和过渡,当然这意味着工作流程的复杂性会增大,但这将取决于您的纹理创建方法。
材质的纹理往往通过以下两种方式之一生成:在 Photoshop 等 2D 图像编辑器中绘制并合成,或从 3D 资源包中渲染/烘焙,这种情况下除了反照率贴图、镜面贴图和其他贴图之外,还可使用更高分辨率的模型生成法线贴图和遮挡贴图。此工作流程因使用的外部资源包而不同。
通常,纹理贴图不应包含固有光照(阴影、高光等)。PBS 的一个优点是对象可以像您期望的那样对光做出反应,而如果贴图已经包含光照信息,则无法实现此目的。