protected override Material GetMaterial() { if (isTMPro) { return(null); } return(MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName))); }
/// <summary> /// Gets the material. /// </summary> /// <returns>The material.</returns> protected override Material GetMaterial() { if (isTMPro) { return(null); } return(MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode, m_AdvancedBlur ? BlurEx.Ex : BlurEx.None)); }
/// <summary> /// Updates the material. /// </summary> /// <param name="ignoreInPlayMode">If set to <c>true</c> ignore in play mode.</param> protected void UpdateMaterial(bool ignoreInPlayMode) { if (!this || ignoreInPlayMode && Application.isPlaying) { return; } var mat = MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode); if (m_EffectMaterial != mat) { material = null; m_EffectMaterial = mat; _SetDirty(); } }
static void GenerateMaterialVariants(Shader shader, ToneMode[] tones, ColorMode[] colors, BlurMode[] blurs) { var combinations = (from tone in tones from color in colors from blur in blurs select new { tone, color, blur }).ToArray(); for (int i = 0; i < combinations.Length; i++) { var comb = combinations[i]; var name = MaterialResolver.GetVariantName(shader, comb.tone, comb.color, comb.blur); EditorUtility.DisplayProgressBar("Genarate Effect Material Bundle", name, (float)i / combinations.Length); MaterialResolver.GetOrGenerateMaterialVariant(shader, comb.tone, comb.color, comb.blur); } EditorUtility.ClearProgressBar(); }
/// <summary> /// Gets the material. /// </summary> /// <returns>The material.</returns> protected override Material GetMaterial() { return(MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode)); }
//#if UNITY_EDITOR // // protected override void OnValidate () // { // base.OnValidate (); // EditorApplication.delayCall += () => UpdateMaterial(false); // } // // public override void OnAfterDeserialize() // { // if (!m_CustomEffect) // { // EditorApplication.delayCall += () => UpdateMaterial (true); // } // } // // void UpdateMaterial(bool onlyEditMode) // { // if(!this || onlyEditMode && Application.isPlaying) // { // return; // } // // var mat = (0 == toneMode) && (0 == colorMode) && (0 == blurMode) // ? null // : GetOrGenerateMaterialVariant(Shader.Find(shaderName), toneMode, colorMode, blurMode); // // if (m_EffectMaterial != mat || targetGraphic.material != mat) // { // targetGraphic.material = m_EffectMaterial = mat; // EditorUtility.SetDirty(this); // EditorUtility.SetDirty(targetGraphic); // } // } // // // // public static Material GetOrGenerateMaterialVariant(Shader shader, ToneMode tone, ColorMode color, BlurMode blur) // { // if (!shader) // return null; // // Material mat = GetMaterial(shader, tone, color, blur); // // if (!mat) // { // Debug.Log("Generate material : " + GetVariantName(shader, tone, color, blur)); // mat = new Material(shader); // // if (0 < tone) // mat.EnableKeyword("" + tone.ToString().ToUpper()); // if (0 < color) // mat.EnableKeyword("UI_COLOR_" + color.ToString().ToUpper()); // if (0 < blur) // mat.EnableKeyword("UI_BLUR_" + blur.ToString().ToUpper()); // // mat.name = GetVariantName(shader, tone, color, blur); // mat.hideFlags |= HideFlags.NotEditable; // //#if UIEFFECT_SEPARATE // bool isMainAsset = true; // string dir = Path.GetDirectoryName(GetDefaultMaterialPath (shader)); // string materialPath = Path.Combine(Path.Combine(dir, "Separated"), mat.name + ".mat"); //#else // bool isMainAsset = (0 == tone) && (0 == color) && (0 == blur); // string materialPath = GetDefaultMaterialPath (shader); //#endif // if (isMainAsset) // { // Directory.CreateDirectory(Path.GetDirectoryName(materialPath)); // AssetDatabase.CreateAsset(mat, materialPath); // AssetDatabase.SaveAssets(); // } // else // { // mat.hideFlags |= HideFlags.HideInHierarchy; // AssetDatabase.AddObjectToAsset(mat, materialPath); // } // } // return mat; // } // // public static Material GetMaterial(Shader shader, ToneMode tone, ColorMode color, BlurMode blur) // { // string variantName = GetVariantName(shader, tone, color, blur); // return AssetDatabase.FindAssets("t:Material " + Path.GetFileName(shader.name)) // .Select(x => AssetDatabase.GUIDToAssetPath(x)) // .SelectMany(x => AssetDatabase.LoadAllAssetsAtPath(x)) // .OfType<Material>() // .FirstOrDefault(x => x.name == variantName); // } // // public static string GetDefaultMaterialPath(Shader shader) // { // var name = Path.GetFileName (shader.name); // return AssetDatabase.FindAssets("t:Material " + name) // .Select(x => AssetDatabase.GUIDToAssetPath(x)) // .FirstOrDefault(x => Path.GetFileNameWithoutExtension(x) == name) // ?? ("Assets/Coffee/UIExtensions/UIEffect/Materials/" + name + ".mat"); // } // // public static string GetVariantName(Shader shader, ToneMode tone, ColorMode color, BlurMode blur) // { // return //#if UIEFFECT_SEPARATE // "[Separated] " + Path.GetFileName(shader.name) //#else // Path.GetFileName(shader.name) //#endif // + (0 < tone ? "-" + tone : "") // + (0 < color ? "-" + color : "") // + (0 < blur ? "-" + blur : ""); // } //#endif #if UNITY_EDITOR /// <summary> /// Gets the material. /// </summary> /// <returns>The material.</returns> protected override Material GetMaterial() { return(MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_ToneMode, m_ColorMode, m_BlurMode)); }
/// <summary> /// Gets the material. /// </summary> /// <returns>The material.</returns> protected override Material GetMaterial() { return(m_EffectMode != EffectMode.None ? MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode) : null); }