マテリアルバリデーターは、Unity のスタンダードシェーダーまたはサーフェスシェーダーを使用するマテリアルで動作します。ただし、カスタムシェーダーには「“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);
}
}