protected static List <Action <ConvertContext> > CreateConverterList() { return(new List <Action <ConvertContext> >() { ctx => { bool cnv = false; var shader = ctx.target.shader; while (WFCommonUtility.IsSupportedShader(shader) && !WFCommonUtility.IsMobileSupportedShader(shader)) { // シェーダ切り替え var fallback = WFCommonUtility.GetShaderFallBackTarget(shader) ?? "Hidden/UnlitWF/WF_UnToon_Hidden"; WFCommonUtility.ChangeShader(fallback, ctx.target); // シェーダ切り替え後に RenderQueue をコピー ctx.target.renderQueue = ctx.oldMaterial.renderQueue; shader = ctx.target.shader; cnv = true; } if (cnv) { WFCommonUtility.SetupShaderKeyword(ctx.target); EditorUtility.SetDirty(ctx.target); } }, ctx => { if (IsMatchShaderName(ctx.oldMaterial.shader, "Transparent3Pass") && !IsMatchShaderName(ctx.target.shader, "Transparent3Pass")) { // Transparent3Pass からそうではないシェーダの切り替えでは、_AL_ZWrite を ON に変更する ctx.target.SetInt("_AL_ZWrite", 1); } }, }); }
protected override bool Validate(Material mat) { // UnlitWFのマテリアルを対象に、URPではない場合に変換する return(WFCommonUtility.IsSupportedShader(mat) && !WFCommonUtility.IsMobileSupportedShader(mat) && !IsURP()); }