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); } }
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); }
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); } } }