머티리얼 검증기는 Unity의 스탠다드 셰이더 또는 표면 셰이더를 사용하는 모든 머티리얼에서 작동합니다. 그러나 커스텀 셰이더에는 “META”라는 이름의 패스가 필요합니다. 라이트매핑을 지원하는 대부분의 커스텀 셰이더에는 이미 이 패스가 정의되어 있습니다. 자세한 내용은 라이트매핑 및 셰이더에 대한 기술 자료를 참조하십시오.
커스텀 셰이더가 머티리얼 유효성 검사와 호환되도록 하려면 다음 절차를 수행하십시오.
#pragma shader_feature EDITOR_VISUALIZATION
UnityMetaInput 구조에서 아래 코드 예시와 같이 머티리얼의 스페큘러 컬러를 SpecularColor라는 필드에 할당합니다.다음은 커스텀 meta 패스의 예입니다.
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);
}
}