Пример #1
0
 public static void PostChangeShader(Material material, Shader oldShader, Shader newShader)
 {
     if (material != null)
     {
         // DebugViewの保存に使っているタグはクリア
         WF_DebugViewEditor.ClearDebugOverrideTag(material);
         // 不要なシェーダキーワードは削除
         foreach (var key in DELETE_KEYWORD)
         {
             if (material.IsKeywordEnabled(key))
             {
                 material.DisableKeyword(key);
             }
         }
         // もし EmissionColor の Alpha が 0 になっていたら 1 にしちゃう
         if (!WFCommonUtility.IsSupportedShader(oldShader) && material.HasProperty("_EmissionColor"))
         {
             var em = material.GetColor("_EmissionColor");
             if (em.a < 1e-4)
             {
                 em.a = 1.0f;
                 material.SetColor("_EmissionColor", em);
             }
         }
     }
 }
Пример #2
0
        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);
                    }
                },
            });
        }
Пример #3
0
 public bool IsEnable(Material mat)
 {
     if (!WFCommonUtility.IsSupportedShader(mat))
     {
         return(false);
     }
     return(_contains(this, mat));
 }
Пример #4
0
 public bool Contains(Material mat)
 {
     if (mat == null || !WFCommonUtility.IsSupportedShader(mat.shader))
     {
         return(false);
     }
     return(_contains(this, mat));
 }
Пример #5
0
 private static bool Migration(Material mat)
 {
     if (!WFCommonUtility.IsSupportedShader(mat))
     {
         return(false);
     }
     WFMaterialEditUtility.MigrationMaterialWithoutUndo(mat);
     return(true);
 }
 private static bool IsStripTargetShader(Shader shader)
 {
     if (shader == null)
     {
         return(false);
     }
     if (!WFCommonUtility.IsSupportedShader(shader))
     {
         return(false);
     }
     if (shader.name.Contains("WF_DebugView"))
     {
         return(false);
     }
     if (shader.name.Contains("WF_UnToon_Hidden"))
     {
         return(false);
     }
     return(true);
 }
Пример #7
0
 public static bool IsSupportedShader(Shader shader)
 {
     return(WFCommonUtility.IsSupportedShader(shader) && !shader.name.Contains("WF_DebugView"));
 }
Пример #8
0
 protected override bool Validate(Material mat)
 {
     // UnlitWF系ではないマテリアルを対象に処理する
     return(!WFCommonUtility.IsSupportedShader(mat));
 }
Пример #9
0
 protected override bool Validate(Material mat)
 {
     // UnlitWFのマテリアルを対象に、URPではない場合に変換する
     return(WFCommonUtility.IsSupportedShader(mat) && !WFCommonUtility.IsMobileSupportedShader(mat) && !IsURP());
 }