Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Сделать шейдер совместимым с проверкой материалов во Встроенном Render Pipeline

Материал Validator работает с любыми материалами, которые используют Unity’s Стандартный шейдер или поверхностные шейдеры. Тем не менее, пользовательские шейдеры требуют пропуска с названием “META”. Большинство пользовательских шейдеров, поддерживающих lightmapping, уже имеют этот проход определен. См. документацию по Lightmapping и шейдеры для больше деталей.

Выполните следующие действия, чтобы сделать свой пользовательский шейдер совместимым с Material Validator:

  1. Добавить следующую прагму в мета-пропуск: #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);
    }  
}