Сделать шейдер совместимым с проверкой материалов во Встроенном Render Pipeline
Материал Validator работает с любыми материалами, которые используют Unity’s Стандартный шейдер или поверхностные шейдеры. Тем не менее, пользовательские шейдеры требуют пропуска с названием “META”. Большинство пользовательских шейдеров, поддерживающих lightmapping, уже имеют этот проход определен. См. документацию по Lightmapping и шейдеры для больше деталей.
Выполните следующие действия, чтобы сделать свой пользовательский шейдер совместимым с Material Validator:
- Добавить следующую прагму в мета-пропуск:
#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);
}
}