private string[] GetExistingShaderKeywords(Shader shader, IList <ShaderCompilerData> data)
 {
     return(data.SelectMany(d => d.shaderKeywordSet.GetShaderKeywords())
            .Where(k => ShaderKeyword.IsKeywordLocal(k))
            .Select(k => ShaderKeyword.GetKeywordName(shader, k))
            .Where(kwd => WFCommonUtility.IsEnableKeyword(kwd)).Distinct().ToArray());
 }
Пример #2
0
        public static void DeleteShaderKeyword(SerializedObject so)
        {
            var prop = so.FindProperty("m_ShaderKeywords");

            if (prop == null || string.IsNullOrEmpty(prop.stringValue))
            {
                return;
            }
            var keywords = prop.stringValue;

            keywords = string.Join(" ", keywords.Split(' ').Where(kwd => !WFCommonUtility.IsEnableKeyword(kwd)).OrderBy(kwd => kwd));
            if (!string.IsNullOrWhiteSpace(keywords))
            {
                UnityEngine.Debug.Log("[WF][Tool] Deleted Shaderkeyword: " + keywords);
            }
            prop.stringValue = "";
            so.ApplyModifiedProperties();
        }
            private void AppendUsedShaderVariant(Material mat, Shader shader)
            {
                // マテリアルから _XX_ENABLE となっているキーワードを回収
                IEnumerable <string> keywords = mat.shaderKeywords.Where(kwd => WFCommonUtility.IsEnableKeyword(kwd));

                UsedShaderVariant usv = new UsedShaderVariant(shader.name, keywords);

                if (!usedShaderVariantList.Contains(usv))
                {
                    usedShaderVariantList.Add(usv);

                    // 直接のシェーダではなく、そのフォールバックを利用できるならばそれも追加する
                    if (settings == null || !settings.stripFallback)
                    {
                        var name     = WFCommonUtility.GetShaderFallBackTarget(shader);
                        var fallback = name == null ? null : Shader.Find(name);
                        if (IsStripTargetShader(fallback))
                        {
                            AppendUsedShaderVariant(mat, fallback);
                        }
                    }
                }
            }