版本:Unity 6 (6000.0)
语言:英语
验证和更正内置渲染管线中的材质
内置渲染管线材质验证器窗口参考

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

材质验证器适用于使用 Unity 标准着色器表面着色器一种为内置渲染管线编写着色器的简化方法。 更多信息
参见 术语表
的任何材质。 但是,自定义 着色器在 GPU 上运行的程序。 更多信息
参见 术语表
需要一个名为 “META” 的通道。 大多数支持光照贴图的自定义着色器已经定义了此通道。 有关更多详细信息,请参见有关 光照贴图和着色器 的文档。

执行以下步骤以使您的自定义着色器与材质验证器兼容

  1. 将以下 pragma 添加到元数据通道:#pragma shader_feature EDITOR_VISUALIZATION
  2. UnityMetaInput 结构中,将材质的 镜面颜色镜面高光的颜色。
    参见 术语表
    分配给名为 SpecularColor 的字段,如以下代码示例所示。

以下是一个自定义元数据通道示例

Pass
{
    Name "META" 
    Tags { "LightMode"="Meta" }

    Cull Off

    CGPROGRAM
    #pragma vertex vert_meta
    #pragma fragment frag_meta

    #pragma shader_feature _EMISSION
    #pragma shader_feature _METALLICGLOSSMAP
    #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
    #pragma shader_feature ___ _DETAIL_MULX2
    #pragma shader_feature EDITOR_VISUALIZATION

    float4 frag_meta(v2f_meta i) : SV_TARGET
    {
        UnityMetaInput input;
        UNITY_INITIALIZE_OUTPUT(UnityMetaInput, input);
        float4 materialSpecularColor = float4(1.0f, 0.0f, 0.0f, 1.0f);
        float4 materialAlbedo = float4(0.0f, 1.0f, 0.0f, 1.0f);
        input.SpecularColor = materialSpecularColor;
        input.Albedo = materialAlbedo;

        return UnityMetaFragment(input);
    }  
}
验证和更正内置渲染管线中的材质
内置渲染管线材质验证器窗口参考