了解用于创建光照 2D 场景的工具和运行时组件。
这些工具旨在与 2D 渲染器(例如精灵渲染器 (Sprite Renderer)、瓦片地图渲染器 (Tilemap Renderer) 和../精灵形状渲染器 (Sprite Shape Renderer))无缝集成。这套工具和组件系统经过优化,适用于移动系统以及在多个平台上运行。
2D 光源与 3D 光源的实现及行为之间存在许多重要区别,包括以下几点:
2D 光照系统包括自己的一套 2D 光源组件、Shader Graph 子目标和一个自定义的 2D 渲染通道,这些都是专为 2D 光照和渲染而设计的。用于 2D 光源和通道配置的编辑器工具也包含在了包中。
2D 光照模型专门设计用于处理共面和多层的 2D 世界。2D 光源不需要在它和它所照射的对象之间进行深度分离。2D 阴影系统也支持共面,因此不需要深度分离。
2D 光源中的光照计算不像 3D 光源那样基于物理。此处介绍了光照模型计算的详细信息。
3D 和 2D 光源只能分别影响 3D 和 2D 渲染器。2D 光照对 3D 渲染器(例如网格渲染器 (Mesh Renderer))不起作用,也不会产生影响,而 3D 光照对 2D 渲染器(例如精灵渲染器 (Sprite Renderer))同样无效。目前,要在单个场景中实现 2D 和 3D 光源以及 2D 和 3D 渲染器的组合使用,可以使用多个摄像机,让其中一个摄像机渲染到渲染纹理,并在另一个摄像机渲染的材质中对该纹理进行采样。
2D 光照图形管线渲染过程可以分为两个不同的阶段: 1) 绘制光源渲染纹理 2) 绘制渲染器
光源渲染纹理包含有关光源在屏幕空间中的颜色和形状的信息,属于此类渲染纹理。
只会针对每组明显照亮的光源层重复这两个阶段。换句话说,如果 1 到 4 层排序具有相同的光源集,则只会执行上述操作集一次。
默认设置允许在绘制渲染器之前提前绘制多个批次以减少目标切换。理想的设置将允许管线渲染所有批次的光源渲染纹理,然后才继续绘制渲染器。这可以防止加载和卸载颜色目标。请参阅优化以了解更多详细信息。
在进行渲染阶段之前,2D 光照图形管线首先分析场景,以评估哪些层可以在单个绘制操作中一起进行批处理。以下是确定是否对层一起进行批处理的标准: 1. 它们是连续的层。 2. 它们共享完全相同的一组光源。
强烈建议对尽可能多的层进行批处理,以最大限度减少光源渲染纹理绘制操作的数量并提高性能。
在前期阶段的批处理之后,管线会为该批次绘制光源纹理。此操作实质上是将光源的形状绘制到渲染纹理上。根据光源的设置,可以使用加法 (Additive) 还是 Alpha 混合 (Alpha Blended) 将光源的颜色和形状混合到目标光源渲染纹理上。
值得注意的是,仅在至少有一个 2D 光源以某个光源渲染纹理为目标时才会创建这个光源渲染纹理。例如,如果某个层的所有光源仅使用 Blendstyle #1,则仅创建一个光源渲染纹理。
绘制完所有光源渲染纹理后,管线将继续绘制渲染器。系统将跟踪哪组渲染器由哪组光源渲染纹理绘制。它们在前期阶段批处理过程中相关联。
当绘制渲染器时,它将可以访问所有(每个混合样式一个)可用的光源渲染纹理。在着色器中会通过使用指定操作将输入颜色与光源渲染纹理中的颜色进行组合来计算最终颜色。
此设置示例具有四种活动混合样式,说明了多种混合样式如何组合在一起。在大多数情况下,通常只需要两种混合样式即可实现所需的效果。