材质验证器适用于使用 Unity 标准着色器 或 表面着色器一种为内置渲染管线编写着色器的简化方法。 更多信息
参见 术语表 的任何材质。 但是,自定义 着色器在 GPU 上运行的程序。 更多信息
参见 术语表 需要一个名为 “META”
的通道。 大多数支持光照贴图的自定义着色器已经定义了此通道。 有关更多详细信息,请参见有关 光照贴图和着色器 的文档。
执行以下步骤以使您的自定义着色器与材质验证器兼容
#pragma shader_feature EDITOR_VISUALIZATION
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);
}
}