Version: 6000.3
语言: 中文
验证和更正内置渲染管线中的材质
内置渲染管线的材质验证器窗口参考

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

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

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

  1. 将以下编译指示添加到元通道中:#pragma shader_feature EDITOR_VISUALIZATION
  2. UnityMetaInput结构,将镜面反射颜色(specular color镜面反射高光的颜色。
    请参阅术语表
    的 Material 到名为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);
    }  
}
验证和更正内置渲染管线中的材质
内置渲染管线的材质验证器窗口参考