private void CollectVariants(List <ShaderVariantsInfo> shaderVariants, Shader shader, SerializedProperty variantsProp)
    {
        for (int i = 0; i < variantsProp.arraySize; ++i)
        {
            var variantProp = variantsProp.GetArrayElementAtIndex(i);
            var keywords    = variantProp.FindPropertyRelative("keywords").stringValue;
            var passType    = variantProp.FindPropertyRelative("passType").intValue;

            string[] keywordsArray = null;
            if (keywords != null)
            {
                keywords = keywords.Trim();
            }
            if (string.IsNullOrEmpty(keywords))
            {
                keywordsArray = new string[] { "" };
            }
            else
            {
                keywordsArray = keywords.Split(' ');
            }
            ShaderVariantsInfo variant = new ShaderVariantsInfo(shader, (PassType)passType, keywordsArray);
            shaderVariants.Add(variant);
        }
    }
Beispiel #2
0
        private bool IsExist(Dictionary <Shader, HashSet <ShaderVariantsInfo> > shaderVariants,
                             Shader shader, ShaderSnippetData snippet, ShaderCompilerData data)
        {
            var keywords        = data.shaderKeywordSet.GetShaderKeywords();
            var compiledKeyword = Convert(shader, keywords);
            var targetInfo      = new ShaderVariantsInfo(shader, snippet.passType, compiledKeyword.ToArray());

            if (compiledKeyword.Count == 0)
            {
                return(true);
            }
            HashSet <ShaderVariantsInfo> variantsHashSet = null;

            if (shaderVariants.TryGetValue(shader, out variantsHashSet))
            {
                bool flag = (variantsHashSet.Contains(targetInfo));
                return(flag);
            }
            return(false);
        }
Beispiel #3
0
        private void CollectVariants(Dictionary <Shader, HashSet <ShaderVariantsInfo> > variants, Shader shader, SerializedProperty variantsProp)
        {
            HashSet <ShaderVariantsInfo> targetHashset = null;

            if (!variants.TryGetValue(shader, out targetHashset))
            {
                targetHashset = new HashSet <ShaderVariantsInfo>(new ShaderVarintInfoComparerer());
                variants.Add(shader, targetHashset);
            }


            for (int i = 0; i < variantsProp.arraySize; ++i)
            {
                var variantProp = variantsProp.GetArrayElementAtIndex(i);
                var keywords    = variantProp.FindPropertyRelative("keywords").stringValue;
                var passType    = variantProp.FindPropertyRelative("passType").intValue;

                string[] keywordsArray = null;
                if (keywords != null)
                {
                    keywords = keywords.Trim();
                }
                if (string.IsNullOrEmpty(keywords))
                {
                    keywordsArray = new string[] { "" };
                }
                else
                {
                    keywordsArray = keywords.Split(' ');
                }
                ShaderVariantsInfo variant = new ShaderVariantsInfo(shader, (PassType)passType, keywordsArray);
                if (!targetHashset.Contains(variant))
                {
                    targetHashset.Add(variant);
                }
            }
        }