分层光照着色器 (Layered Lit Shader)
分层光照着色器允许你在高清渲染管线 (High Definition Render Pipeline, HDRP) 中的同一游戏对象上最多堆叠四种材质。该着色器用于每一层的材质是 HDRP 光照材质。这样可以轻松地在 HDRP 中创建逼真且多样化的材质。Main Layer 是最底层,可以影响具有反照率、法线和高度的上层。HDRP 在 Main Layer 之上依次渲染 Layer 1、Layer 2 和 Layer 3。有关材质、着色器和纹理的更多信息,请参阅 Unity 用户手册。
分层光照着色器非常适合用于摄影测量法。有关如何在摄影测量工作流程中使用该着色器的教程,请参阅使用分层着色器进行摄影测量的专家指南 (Photogrammetry with the Layered Shader Expert Guide)。
创建分层光照材质 (Layered Lit Material)
要创建新的分层光照材质,请导航到项目的 Asset 窗口,在窗口中单击鼠标右键,然后选择 Create > Material。这会在 Unity 项目的 Asset 文件夹中添加一个新材质。材质默认使用光照着色器。要使材质使用分层光照着色器,请执行以下操作:
- 单击材质以在 Inspector 中查看该材质。
- 在 Shader 下拉选单中,选择 HDRP > LayeredLit。
属性
Surface Options
属性 | 描述 |
---|---|
Surface Type | 使用下拉选单定义材质是否支持透明度。具有 Transparent Surface Type 的材质比具有 Opaque Surface Type 的材质在渲染时更耗资源。根据选择的 Surface Type,HDRP 会显示更多属性。有关该功能的更多信息以及每个 Surface Type 显示的属性列表,请参阅 Surface Type 文档。 |
- Render Pass | 使用下拉选单设置 HDRP 处理此材质使用的渲染通道。有关此属性的更多信息,请参阅 Surface Type 文档。 |
Double-Sided | 启用此复选框可以使 HDRP 渲染几何体中多边形的两个面。有关该功能的更多信息以及该功能可显示的属性列表,请参阅 Double-Sided 文档。 |
Alpha Clipping | 启用此复选框可以使该材质像镂空着色器 (Cutout Shader) 一样。启用此功能会显示更多属性。有关该功能的更多信息以及该功能显示的属性列表,请参阅 Alpha Clipping 文档。 |
材质类型 | 指定材质类型,允许根据选择的 Material Type 使用不同的设置对材质进行自定义。对于分层光照材质,只能使用 Subsurface Scattering、Standard 或 Translucent Material Type。有关该功能的更多信息以及每个 Material Type 显示的属性列表,请参阅 Material Type 文档。 |
Receive Decals | 启用此复选框可以允许 HDRP 在该材质的表面上绘制贴花。 |
Receive SSR (Transparent) | 启用此复选框可以在处理屏幕空间反射通道时使 HDRP 包含该材质。有一个用于透明表面类型的单独选项。 |
Geometric Specular AA | 启用此复选框可以指示 HDRP 对该材质执行几何抗锯齿。这会修改曲面几何体表面上的平滑度值,从而消除镜面反射瑕疵。有关该功能的更多信息以及该功能显示的属性列表,请参阅几何镜面反射抗锯齿 (Geometric Specular Anti-aliasing) 文档。 |
Displacement Mode | 使用此下拉选单选择 HDRP 用于更改材质表面高度的方法。有关该功能的更多信息以及每个 Displacement Mode 显示的属性列表,请参阅 Displacement Mode 文档。 |
Vertex Animation
属性 | 描述 |
---|---|
Motion Vector For Vertex Animation | 启用此复选框可以使 HDRP 为使用顶点动画的游戏对象编写运动矢量。这将消除顶点动画可能导致的重影。 |
Surface Inputs
属性 | 描述 |
---|---|
Layer Count | 使用滑动条设置此材质使用的层数。最多可以设置四层。 |
Layer Mask | 向该字段分配一个纹理以管理每一层的可见性。如果未分配纹理,则材质将为每个通道使用最大值。 • Alpha 通道适用于 Main Layer。 • 红色通道适用于 Layer 1。 • 绿色通道适用于 Layer 2。 • 蓝色通道适用于 Layer |
BlendMask UV Mapping | 使用下拉选单选择 HDRP 用于映射 Layer Mask 的 UV 贴图类型。 • Unity 为一个顶点管理四个 UV 通道:UV0、UV1、UV2 和 UV3。 • Planar:从上到下的平面投影。 • Triplanar:三个方向的平面投影:X 轴:从左到右。Y 轴:从上到下。Z 轴:从前到后。Unity 将这三个投影混合在一起产生最终结果。 |
World Scale | 设置纹理的世界空间大小(以米为单位)。如果将此值设置为 1,则 HDRP 会将纹理映射到世界空间中的 1 米。如果将此值设置为 2,则 HDRP 会将纹理映射到世界空间中的 0.5 米。仅当从 BlendMask UV Mapping 下拉选单中选择 Planar 或 Triplanar 时,才显示此属性。 |
Tiling | 设置 Layer Mask UV 的 X 和 Y 平铺率。HDRP 使用这些 X 和 Y 值在材质表面上平铺指定给 Layer Mask 的纹理(在对象空间中)。 |
Offset | 设置 Layer Mask UV 的 X 和 Y 偏移。HDRP 使用这些 X 和 Y 值从材质表面上偏移指定给 Layer Mask 的纹理(在对象空间中)。 |
Vertex Color Mode | 使用下拉选单选择 HDRP 将 Layer Mask 结合到管理器层可见性所使用的方法。 • None:仅 Layer Mask 影响可见性。HDRP 不会将其与顶点颜色结合在一起。 • Multiply:将一个层中的顶点颜色与代表该层的 Layer Mask 中的通道中的对应值相乘。遮罩中像素的默认值为 1。一个层的顶点颜色乘以 Layer Mask 会降低该层的强度,除非 Layer Mask 中的值为 1。 • Add:将顶点颜色值重新映射到 0 到 1 之间,然后将这些值与代表该层的 Layer Mask 中的通道中的对应值相加。介于 0 和 0.5 之间的 Layer Mask 值会降低该层的效果,介于 0.5 和 1 之间的值会增加该层的效果。 |
Main Layer Influence | 启用此复选框可以允许 Main Layer 影响 Layer 1、Layer 2 和 Layer 3 的反照率、法线和高度。您可以更改每个层的影响强度。 |
Use Height Based Blend | 启用此复选框可以将层与高度贴图混合。然后,HDRP 会计算每个层的高度,以检查是显示该层还是上面的层。 |
Height Transition | 使用滑动条设置每层材质之间的过渡混合大小。 |
Lock Layers 123 Tiling With Object Scale | 启用此复选框可以将材质的平铺率乘以游戏对象的缩放比例。缩放游戏对象时,此设置可使高度贴图的外观保持一致。 |
Layer List
此部分包含由此分层材质用作层的材质列表。要将材质分配给层,请将材质拖放到该层的属性字段中,或者:
- 单击该层右侧的单选按钮以打开 Select Material 窗口。
- 从窗口中的材质列表中找到所需的材质,然后双击该材质。
如果以任何方式修改引用的材质,则可以通过按 Reset 按钮来同步属性。这会将所有属性从引用的材质复制到相关的分层材质层中。
如果指定由 Shader Graph 制成的材质作为层材质 (Layer Material),请确保属性的引用与 LayeredLit 材质中相应属性的名称匹配。 有关这一点的含义的示例,请参阅以下屏幕截图中的 _BaseColorMap:
Layers
Unity 最多显示四个材质层供您在分层材质中使用。使用 Layer Count 滑动条可以设置 Unity 显示的层数。每个层具有相同的 Surface Inputs 和 Detail Inputs。唯一的区别在 Main Layer 和编号层(Layer 1、Layer 2 和 Layer 3)之间,它们具有不同的 Layering Options。
Layering Options - Main Layer
属性 | 描述 |
---|---|
Layer Influence Mask | 指定一个纹理来定义 Main Layer 可以影响编号层的区域。白色像素表示完全影响,黑色像素表示没有影响。 仅当启用 Main Layer Influence 复选框时,才显示此属性。 |
Layering Options - 编号层
属性 | 描述 |
---|---|
Use Opacity map as Density map | 指示是否使用 Base Map 的 Alpha 通道作为不透明度阈值。 |
BaseColor Influence | Main Layer 对此层的基色的影响强度。增加此值时,Main Layer 颜色将变得更加可见,但材质将保持其他图层的差异。 仅当启用 Main Layer Influence 复选框时,才显示此属性。 |
Normal Influence | Main Layer 对此层的法线的影响强度。HDRP 将 Main Layer 的法线值与该层的法线值相加。 仅当启用 Main Layer Influence 复选框时,才显示此属性。 |
Heightmap Influence | Main Layer 对此层的高度贴图的影响强度。HDRP 将 Main Layer 的高度贴图值与该层的高度贴图值相加。 仅当启用 Main Layer Influence 复选框时,才显示此属性。 |
Surface Inputs
属性 | 描述 |
---|---|
Base Map | 指定一个纹理,用于控制材质的颜色和不透明度。要为此字段指定纹理,请单击单选按钮,然后在 Select Texture 窗口中选择纹理。使用拾色器来选择材质的颜色。如果不指定纹理,这将是材质的绝对颜色。如果指定了纹理,则材质的最终颜色是您指定的纹理和所选颜色的组合。如果从 Surface Type 下拉选单中选择 Transparent,则颜色的 Alpha 值将控制材质的透明度级别。 |
Metallic | 使用此滑动条调整材质表面的金属性程度(介于 0 和 1 之间)。当表面具有较高的金属性时,它会在更大程度上反射环境,并且反照率颜色将变得不那么明显。在最高金属性级别下,表面颜色完全由来自环境的反射驱动。当表面的金属度较低时,其反照率颜色会更清晰,并且所有表面反射均在表面颜色的基础之上可见,而不是遮挡住表面颜色。 仅当在 Mask Map 中取消分配纹理并将 Material Type 设置为 Standard 时,才显示此属性。 |
Smoothness | 使用滑动条调整材质的平滑度。照射到光滑表面的每条光线都将以可预测且一致的角度反弹。对于像镜子一样反射光线的完美光滑表面,应将此属性设置为值 1。较不光滑的表面在较宽的角度范围内反射光线(因为光线会照射到微表面上的凸起),所以反射的细节较少,以更加分散的模式在表面上扩散。 仅当在 Mask Map 中取消分配纹理时,才显示此属性。 |
Metallic Remapping | 使用此最小值/最大值滑动条将 Mask Map 中的金属度值重新映射到指定的范围。Unity 不会将值钳制到新范围,而是将原始范围均匀压缩到新范围。 仅当分配一个 Mask Map 时,才显示此属性。 |
Smoothness Remapping | 使用此最小值/最大值滑动条将 Mask Map 中的平滑度值重新映射到您指定的范围。Unity 不会将值钳制到新范围,而是将原始范围均匀压缩到新范围。 仅当分配一个 Mask Map 时,才显示此属性。 |
Ambient Occlusion Remapping | 使用此最小值/最大值滑动条将 Mask Map 中的环境光遮挡值重新映射到您指定的范围。Unity 不会将值钳制到新范围,而是将原始范围均匀压缩到新范围。 仅当分配一个 Mask Map 时,才显示此属性。 |
Mask Map | 指定一个通道打包的纹理并确保其 RGBA 通道中包含以下材质贴图。 • Red:存储金属性贴图。 • Green:存储环境光遮挡贴图。 • Blue:存储细节遮罩贴图。 • Alpha:存储平滑度贴图。 有关通道打包的纹理和遮罩贴图的更多信息,请参阅遮罩贴图。 |
Normal Map Space | 使用此下拉选单选择该材质使用的法线贴图空间类型。 • TangentSpace:定义 UV 空间中的法线贴图;使用此类型可以在网格上平铺纹理。法线贴图纹理必须是 BC7、BC5 或 DXT5nm 格式。 • ObjectSpace:定义世界空间中的法线贴图。此类型用于平面贴图的对象,如地形。法线贴图必须是 RGB 纹理。 |
Normal Map | 指定一个纹理来定义此材质的切线空间法线贴图。使用滑动条在 0 到 8 之间调节法线强度。 仅当从 Normal Map Space 下拉选单中选择 TangentSpace 时,才显示此属性。 |
Normal Map OS | 指定一个纹理来定义此材质的对象空间法线贴图。使用控制柄在 0 到 8 之间调节法线强度。 仅当从 Normal Map Space 下拉选单中选择 ObjectSpace 时,才显示此属性。 |
Bent Normal Map | 指定一个纹理来定义此材质在切线空间中的弯曲法线贴图。HDRP 使用弯曲法线贴图来模拟更精确的环境光遮挡。注意:弯曲法线贴图仅适用于漫射光照。 仅当从 Normal Map Space 下拉选单中选择 TangentSpace 时,才显示此属性。 |
Bent Normal Map OS | 指定一个纹理来定义此材质在对象空间中的弯曲法线贴图。HDRP 使用弯曲法线贴图来模拟更精确的环境光遮挡。注意:弯曲法线贴图仅适用于漫射光照。 仅当从 Normal Map Space 下拉选单中选择 ObjectSpace 时,才显示此属性。 |
Height Map | 指定一个纹理来定义此材质的高度贴图。Unity 使用此贴图来混合该层。 |
- Parametrization | 使用下拉选单选择用于 Height Map 的参数化方法。 • Min/Max:HDRP 比较 Min 和 Max 值以计算高度贴图的峰值、谷值和基准位置。如果 Min 为 -1 且 Max 为 3,则基准值为纹理值 0.25。这会使用高度贴图的完整范围。 • Amplitude:允许手动设置高度贴图的幅度和基准位置。这会使用高度贴图的完整范围。在此模式下,Amplitude 设置值的范围,Base 定义零值(基准值)在该范围内的距离。例如,如果 Amplitude 为 100 且 Base 为 0.5(默认值),则最小值为 -50,最大值为 50。如果随后将 Base 设置为 0,则最小值变为 0,最大值变为 100。 |
- Min | 设置 Height Map 中的最小值。 仅当 Parametrization 设置为 Min/Max 时,才显示此属性。 |
- Max | 设置 Height Map 中的最大值。 仅当 Parametrization 设置为 Min/Max 时,才显示此属性。 |
- Offset | 设置 HDRP 应用于 Height Map 的偏移。 |
- Amplitude | 设置 Height Map 的幅度。这是高度贴图表示的值的范围。 仅当 Parametrization 设置为 Amplitude 时,才显示此属性。 |
- Base | 使用滑动条设置 Height Map 的基准位置。这是高度贴图中的级别 0 的值。如果将此值设置为 0.5,并将 Amplitude 设置为 100,则最小值为 -50,最大值为 50。 仅当 Parametrization 设置为 Amplitude 时,才显示此属性。 |
Diffusion Profile | 指定一个扩散配置文件以控制次表面散射行为。要快速查看当前选定的扩散配置文件的 Inspector,请在分配字段中双击扩散配置文件资源 (Diffusion Profile Asset)。如果未指定扩散配置文件,则 HDRP 不会处理次表面散射。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 或 Translucent 时,才显示此属性。 |
Subsurface Mask | 使用滑动条设置屏幕空间模糊效果的强度。如果设置了 Subsurface Mask Map,这将用作该贴图的乘数。如果未设置 Subsurface Mask Map,此属性会增强该材质上的整个次表面散射效果。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 时,才显示此属性。 |
Subsurface Mask Map | 指定灰度纹理,其值为 0 到 1,用于控制材质上模糊效果的强度。值为 1 的纹素对应于最高强度,而值为 0 的纹素将禁用次表面散射模糊效果。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 时,才显示此属性。 |
Thickness Map/Thickness | 指定灰度纹理,其值为 0 到 1,对应于纹理像素位置处的网格的平均厚度。值越大意味着区域越厚,而区域越厚传输的光量越少。如果未给该属性指定纹理,则名称为 Thickness,并由滑动条控制网格的整体厚度。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 或 Translucent 时,才显示此属性。 |
Thickness Remapping | 使用滑动条设置透射效果的强度。表示厚度贴图的乘数。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 或 Translucent 时,才显示此属性。 |
Base UV Mapping | 使用下拉选单选择 HDRP 用于将纹理贴图到此材质表面的 UV 贴图类型。 • Unity 为一个顶点管理四个 UV 通道:UV0、UV1、UV2 和 UV3。 • Planar:从上到下的平面投影。 • Triplanar:三个方向的平面投影:X 轴:从左到右。Y 轴:从上到下。Z 轴:从前到后。Unity 将这三个投影混合在一起产生最终结果。 |
Tiling | 为 Surface Inputs 部分中的所有纹理设置 X 和 Y UV 平铺率。HDRP 使用这些 X 和 Y 值在材质表面上平铺这些纹理(在对象空间中)。 |
Offset | 为 Surface Inputs 部分中的所有纹理设置 X 和 Y UV 偏移。HDRP 使用这些 X 和 Y 值在材质表面上偏移这些纹理(在对象空间中)。 |
Detail Inputs
属性 | 描述 |
---|---|
Detail Map | 指定一个通道打包的纹理,由 HDRP 用于将微观细节添加到材质中。Detail Map 使用以下通道设置: • Red:存储灰度作为反照率。 • Green:存储细节法线贴图的绿色通道。 • Blue:存储细节平滑度。 • Alpha:存储细节法线贴图的红色通道。 有关通道打包的纹理和细节贴图的更多信息,请参阅细节贴图。 |
Detail UV Mapping | 指定要用于 Detail Map 的 UV 贴图类型。如果材质的 Base UV mapping 属性设置为 Planar 或 Triplanar,则 Detail UV Mapping 也会设置为 Planar 或 Triplanar。 Detail Map 纹理会修改材质的外观,因此默认情况下,HDRP 将 Base UV Map 的 Tiling 和 Offset 应用于 Detail Map 以同步 Detail Map 和其余材质纹理。然后,HDRP 将 Detail Map Tiling 和 Offset 属性应用于 Base Map Tiling 和 Offset 之上。例如,在平面上,如果 Base UV Mapping 的 Tiling 为 2,且此值也设置为 2,则 Detail Map 纹理在平面上的平铺率为 4。 此工作流程允许更改材质上的纹理 Tiling,而无需同时设置 Detail UV 的 Tiling。 要将 Detail UV Map 与 Base UV Map 分开单独设置,请禁用 Lock to Base Tiling/Offset 复选框。 |
- Lock to Base Tiling/Offset | 指示 Base UV Map 的 Tiling 和 Offset 属性是否影响 Detail Map。启用后,HDRP 分别将这些属性乘以 Detail UV Map 的 Tiling 和 Offset 属性。要将 Detail UV Map 与 Base UV Map 分开单独设置,请禁用此复选框。 |
Tiling | Detail Map UV 每个轴的平铺率。HDRP 使用这些 X 和 Y 值在材质表面上平铺指定给 Detail Map 的纹理(在对象空间中)。 |
Offset | Detail Map UV 每个轴的偏移。HDRP 使用这些 X 和 Y 值在材质表面上偏移指定给 Detail Map 的纹理(在对象空间中)。 |
Detail Albedo Scale | 在 0 到 2 之间调节细节贴图的反照率(红色通道)。这是一种叠加效果。默认值为 1 且不应用缩放。 |
Detail Normal Scale | 在 0 到 2 之间调节细节法线贴图的强度(绿色通道和 Alpha 通道)。默认值为 1 且不应用缩放。 |
Detail Smoothness Scale | 在 0 到 2 之间调节细节平滑度贴图的强度(蓝色通道)。这是一种叠加效果。默认值为 1 且不应用缩放。 |
Emission Inputs
属性 | 描述 |
---|---|
Use Emission Intensity | 启用此复选框可以使用单独的 LDR 颜色和强度值来设置此材质的发射颜色。禁用此复选框则仅使用 HDR 颜色来处理颜色和发射颜色强度。启用此复选框后,将显示 Emission Intensity 属性。 |
Emission Map | 指定此材质用于发射的纹理。还可以使用拾色器选择 HDRP 乘以纹理的颜色。如果未设置发射纹理,则 HDRP 仅使用 HDR 颜色计算材质的最终发射颜色。可以在 HDR 拾色器中设置 HDR 颜色的强度。 |
Emission UV Mapping | 使用下拉选单选择 HDRP 用于 Emission Map 的 UV 贴图类型。 • Unity 为一个顶点管理四个 UV 通道:UV0、UV1、UV2 和 UV3。 • Planar:从上到下的平面投影。 • Triplanar:三个方向的平面投影: X 轴:从左到右 Y 轴:从上到下 Z 轴:从前到后 Unity 将这三个投影混合在一起产生最终结果。 • Same as Base:Unity 将使用在 Surface Inputs 中选择的 Base UV Mapping。如果表面启用了 Pixel displacement,此选项也会在发光贴图上应用位移。 |
- Tiling | 设置 Emission Map UV 的 X 和 Y 平铺率。HDRP 使用这些 X 和 Y 值在材质表面上平铺指定给 Emission Map 的纹理(在对象空间中)。 |
- Offset | 设置 Emission Map UV 的 X 和 Y 偏移。HDRP 使用这些 X 和 Y 值在材质表面上偏移指定给 Emission Map 的纹理(在对象空间中)。 |
Emission Intensity | 设置此材质的发射效果的总体强度。使用下拉选单选择以下物理光单位之一表示强度: • 尼特 • EV100 |
Exposure Weight | 使用滑动条设置曝光对发射强度的影响程度。例如,如果创建霓虹灯管,则需要在每次曝光时应用发光效果。 |
Emission Multiply with Base | 启用此复选框可以使 HDRP 在计算发射的最终颜色时使用材质的基色。启用后,HDRP 将发光颜色乘以基色以计算最终发射颜色。 |
Emission | 控制发射是否影响全局光照。 |
- Global Illumination | HDRP 使用此模式确定颜色发射与全局光照的相互影响。 • Realtime:选择此选项可使发射影响实时全局光照的结果。 • Baked:选择此选项可使发射仅影响烘焙过程中的全局光照。 • None:选择此选项可使发射不影响全局光照。 |
Advanced Options
属性 | 描述 |
---|---|
Enable GPU Instancing | 启用此复选框可以指示 HDRP 在一个批次中使用相同的几何体和材质来渲染网格(如果可能)。这样可以加快渲染速度。如果网格具有不同的材质或者硬件不支持 GPU 实例化,则 HDRP 无法在一个批次中渲染这些网格。例如,如果游戏对象具有基于对象轴心的动画,则不能对它们进行静态批处理,但 GPU 可以实例化它们。 |
Baked Emission | 指示发射颜色是否影响全局光照。 |
Motion Vector For Vertex Animation | 指示 HDRP 是否为使用顶点动画的游戏对象编写运动矢量。这将消除顶点动画可能导致的重影。 |
Specular Occlusion Mode | HDRP 用于计算镜面反射遮挡的模式。选项包括: • Off:禁用镜面反射遮挡。 • From AO:根据环境光遮挡贴图和摄像机的视图矢量来计算镜面反射遮挡。 • From AO and Bent Normal:根据环境光遮挡贴图、弯曲法线贴图和摄像机的视图矢量来计算镜面反射遮挡。 • Custom:允许你指定自己的镜面反射遮挡值。 |
Add Precomputed Velocity | 指示是否使用存储在 Alembic 文件中的预先计算的速度信息。 |