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); } } } }
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); } }, }); }
public bool IsEnable(Material mat) { if (!WFCommonUtility.IsSupportedShader(mat)) { return(false); } return(_contains(this, mat)); }
public bool Contains(Material mat) { if (mat == null || !WFCommonUtility.IsSupportedShader(mat.shader)) { return(false); } return(_contains(this, mat)); }
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); }
public static bool IsSupportedShader(Shader shader) { return(WFCommonUtility.IsSupportedShader(shader) && !shader.name.Contains("WF_DebugView")); }
protected override bool Validate(Material mat) { // UnlitWF系ではないマテリアルを対象に処理する return(!WFCommonUtility.IsSupportedShader(mat)); }
protected override bool Validate(Material mat) { // UnlitWFのマテリアルを対象に、URPではない場合に変換する return(WFCommonUtility.IsSupportedShader(mat) && !WFCommonUtility.IsMobileSupportedShader(mat) && !IsURP()); }