public String Dump() { String result; var sb = new StringBuilder(); sb.Append(ShaderUtils.DumpShaderPasses(shader)); if (snippets != null && snippets.Count > 0) { sb.AppendFormat("// Total snippets: {0}", snippets.Count).AppendLine(); sb.AppendLine(); for (int i = 0; i < snippets.Count; ++i) { var snippet = snippets[i]; sb.AppendFormat("// Snippet #{0} platforms {1:x}:", snippet.id, snippet.platformBits).AppendLine(); sb.AppendLine(); if (snippet.shader_features != null && snippet.shader_features.Length > 0) { sb.AppendFormat("Keywords stripped away when not used:\n\n{0}", String.Join("\n", snippet.shader_features)).AppendLine(); sb.AppendLine(); } if (snippet.multi_compiles != null && snippet.multi_compiles.Length > 0) { sb.AppendFormat("Keywords always included into build:\n\n{0}", String.Join("\n", snippet.multi_compiles)).AppendLine(); sb.AppendLine(); } if (snippet.builtins != null && snippet.builtins.Length > 0) { sb.AppendFormat("Builtin keywords used:\n\n{0}", String.Join("\n", snippet.builtins)).AppendLine(); sb.AppendLine(); } sb.AppendLine(); if (snippet.variants != null && snippet.variants.Count > 0) { sb.AppendFormat("{0} keyword variants used in scene:", snippet.variants.Count).AppendLine(); sb.AppendLine(); for (int j = 0; j < snippet.variants.Count; ++j) { sb.AppendFormat("[{0}]:", j).AppendLine(); sb.Append(String.Join("\n", snippet.variants[j].ToArray())); sb.AppendLine(); sb.AppendLine(); } } else { sb.Append(TAG_NO_KEYWORDS_DEFINED).AppendLine(); } sb.AppendLine(); } result = sb.ToString(); } else { result = "Empty ShaderParsedCombinations."; } Debug.Log(result); return(result); }