Version: Unity 6.0 (6000.0)
语言 : 中文
验证并更正内置渲染管线中的材质
内置渲染管线的材质验证器窗口参考

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

只要材质使用 Unity 标准着色器表面着色器,即可采用材质验证器。但是,自定义着色器需要一个名为 “META” 的 pass。大多数支持光照贴图的自定义着色器已经定义了此 pass。请参阅有关光照贴图和着色器的文档以了解更多详细信息。

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

  1. 将以下 pragma 添加到 Meta pass:#pragma shader_feature EDITOR_VISUALIZATION
  2. UnityMetaInput 结构中,将材质的镜面反射颜色分配给名为 SpecularColor 的字段,如下面的代码示例所示。

以下是自定义 Meta pass 的示例:

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);
    }  
}
验证并更正内置渲染管线中的材质
内置渲染管线的材质验证器窗口参考