光源层 (Light Layers)
高清渲染管线 (High Definition Render Pipeline, HDRP) 允许您使用光源层(即 LayerMasks)使场景中的光源仅照亮特定的网格。通过为光源和网格设置光源层,可以使光源仅影响相应光源层上的网格。
启用光源层
要使用光源层,必须在项目的 HDRP 资源中启用光源层。然后,可以在默认的帧设置 (Frame Settings) 中启用光源层,从而设置摄像机来处理光源层。
- 在 Project 窗口中选择 HDRP 资源,然后在 Inspector 中找到 Lighting > Light Layers,并启用 Enable 复选框。
- 要在所有摄像机的默认帧设置中启用光源层,请在 Default Settings 窗口中找到 Default Frame Settings For 部分,从下拉选单中选择 Camera,然后在 Lighting 部分中启用 Light Layers 复选框。
要覆盖摄像机的帧设置并单独设置光源层,请执行以下操作:
- 在 Scene 视图或 Hierarchy 窗口中单击摄像机以在 Inspector 中查看其属性。
- 找到 General 部分并启用 Custom Frame Settings 复选框。这会显示 Frame Settings Overrides,仅可用于自定义此摄像机。
- 在 Lighting 部分中,启用 Light Layers 复选框以使此摄像机使用光源层。
使用光源层
启用光源层后,可以使用光源层将网格与场景中的某些光源分离。为此需要执行以下操作:
- 单击 Hierarchy 或 Scene 视图中的光源以在 Inspector 中查看该光源。
- 显示 General 部分中的更多选项以显示 Light Layer 属性。
- 使用 Light Layer 属性下拉选单选择此光源所影响的光源层。
- 单击 Hierarchy 或 Scene 视图中的网格渲染器 (Mesh Renderer) 或地形 (Terrain) 以在 Inspector 中查看该网格渲染器或地形。
- 使用 Rendering Layer Mask 属性下拉选单(对于游戏对象,请参阅 MeshRenderer,对于地形,请参阅 OtherSettings)选择影响此网格渲染器或地形的光源层。启用光源层时,光源影响网格渲染器或地形的前提是二者都使用匹配的光源层。
阴影光源层
使用光源层时,网格仅将光源的阴影投射在与网格相同的光源层上。这是因为 HDRP 会在默认情况下同步光源层和阴影光源层,所以每个接收光的网格都会为光源投射阴影。要使网格投射阴影而又不让光源影响网格的光照,必须将阴影光源层与该光源的光源层分离。
为此需要执行以下操作:
- 单击 Hierarchy 或 Scene 视图中的光源以在 Inspector 中查看该光源。
- 找到 Shadows 部分并禁用 Link Light Layers 复选框。
现在可以使用 Shadows 部分中的 Light Layers 下拉选单来设置光源用于阴影处理的光源层。此外还仍然可以使用 General 部分中的 Light Layers 下拉选单来设置光源用于光照的光源层。
重命名光源层
默认情况下,在光源、网格渲染器或地形的 UI 中,光源层被命名为 Light Layer 1-7。为了更容易区分这些光源层,可以为每个光源层指定一个特定的名称。为此,请打开 Default Settings 窗口,然后找到 Light Layer Names。在此处可以分别设置每个光源层的名称。
光源层的示例情形
对灯具使用剪影 (cookie) 有时会对灯泡产生负面视觉效果,例如自身阴影或透射影响。可以使用光源层使灯泡网格不从光源的剪影接收任何光线,而从单独的小型点光源接收光线。
光照剪影会对此灯泡几何体的透射产生不良影响。
将灯泡的网格渲染器分配给特定的光源层意味着光照剪影不再影响灯泡的网格渲染器。
要恢复透射效果,请创建一个点光源并将其分配给与灯泡的网格渲染器相同的光源层。现在,此点光源仅影响灯泡的网格渲染器,不会影响场景光照的其余部分。
如需了解此过程的更多信息,请参阅 Pierre Donzallaz 关于在 Unity 中创建高质量灯具的专家指南。