Version: Unity 6.0 (6000.0)
语言 : 中文
内置渲染管线中的材质验证器
使着色器与内置渲染管线中的材质验证器兼容

验证并更正内置渲染管线中的材质

验证反照率

Unity 的材质图表定义了非金属的标准亮度范围为 50–243 sRGB,而金属的标准亮度范围为 186–255 sRGB。验证反照率 (Validate Albedo) 模式会使用不同颜色显示处于这些范围之外的任何像素,以指示该值太低或太高。

在下面的示例中,第一个纹理低于最小亮度值,因此太暗。第四个纹理高于最大亮度值,因此太亮。

一个场景(未启用材质验证器)中的第一个和第四个材质具有不正确的反照率值
一个场景(未启用材质验证器)中的第一个和第四个材质具有不正确的反照率值
启用了材质验证器并设置为 Validate Albedo 模式的相同场景。低于最小亮度值的纹理为红色。高于最小亮度值的纹理为蓝色
启用了材质验证器并设置为 Validate Albedo 模式的相同场景。低于最小亮度值的纹理为红色。高于最小亮度值的纹理为蓝色

材质图表提供常见材质的反照率值。反照率值的亮度对产生的漫射光量有巨大影响,因此全局光照 (Global Illumination) 烘焙必须确保不同的材质类型位于正确的亮度范围内(彼此成比例),这一点十分重要。为了方便正确设置这些值,可从亮度验证 (Luminance Validation) 下拉选单的预设选项中进行选择,该下拉选单提供了常用的材质反照率值以便验证特定材质类型的亮度范围。

验证镜面反射

Unity 的材质图表定义了两个独立的镜面反射颜色范围:

  • __非金属性材质__:40–75 sRGB
  • __金属性材质__:155 - 255 sRGB

在 Unity 中,所有非金属性材质都具有始终处于正确范围内的恒定镜面反射颜色。然而,金属性材质通常具有太低的镜面反射值。为了帮助您识别存在此问题的金属性材质,材质验证器的__验证金属镜面反射 (Validate Metal Specular)__ 模式使用颜色来标示镜面反射颜色值太低的所有像素。根据定义,这包括所有非金属性材质。

在下面的示例中,左侧材质低于最小镜面反射值,因此太暗。这也适用于场景的背景。右侧材质的镜面反射值处于有效范围内。

包含两种金属性材质的场景。左侧材质的金属性镜面反射值不正确
包含两种金属性材质的场景。左侧材质的金属性镜面反射值不正确
启用了材质验证器并设置为__验证金属镜面反射 (Validate Metal Specular)__ 模式的相同场景
启用了材质验证器并设置为__验证金属镜面反射 (Validate Metal Specular)__ 模式的相同场景

验证纯金属

Unity 将镜面反射颜色大于 155 sRGB 的基于物理的着色材质定义为金属性材质。Unity 将金属性材质定义为__纯金属__

如果非金属性表面的镜面反射颜色值太高,但反照率值为非零,则通常是由于创作错误导致的。材质验证器还有一个名为__检查纯金属 (Check Pure Metals)__ 的选项。启用此选项后,材质验证器会以黄色显示由 Unity 定义为金属性但具有非零反照率值的所有材质。在下面的图像中可以看到这方面的一个例子。此处显示了三种材质,左侧和右侧材质为纯金属,但中间的材质不是,因此材质验证器将其显示为黄色:

包含三种金属性材质的场景。中间的材质不是纯金属(它具有非零反照率值)
包含三种金属性材质的场景。中间的材质不是纯金属(它具有非零反照率值)
启用了__材质验证器、设置为__验证金属镜面反射 (Validate Metal Specular) 模式并启用了检查纯金属 (Check Pure Metals) 的相同场景
启用了__材质验证器、设置为__验证金属镜面反射 (Validate Metal Specular) 模式并启用了检查纯金属 (Check Pure Metals) 的相同场景

在上面的第二张图中,背景为红色,这是因为背景中的材质低于材质验证器的__验证金属镜面反射 (Validate Metal Specular)__ 模式下的最小镜面反射值。

对于金属性和非金属性属性相结合的复杂材质,纯金属检查器可能会拾取一些无效像素,但如果材质完全无效,则通常表示存在创作错误。

覆盖默认亮度值

根据项目的美术风格,您可能希望材质的亮度值与预设的亮度范围不同。在这种情况下,可使用自己的值覆盖材质验证器使用的内置反照率值。要覆盖预设亮度范围,请将每种所需材质类型的 AlbedoSwatchInfo 值数组分配给属性 EditorGraphicsSettings.albedoSwatches

内置渲染管线中的材质验证器
使着色器与内置渲染管线中的材质验证器兼容