public override bool Equals(object obj) { ShaderInfoData data = (ShaderInfoData)obj; if (data.shader != this.shader) { return(false); } if (this.snippetData.passName == data.snippetData.passName && this.snippetData.passType == data.snippetData.passType && this.snippetData.shaderType == data.snippetData.shaderType) { return(true); } return(false); }
public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList <ShaderCompilerData> shaderCompilerData) { this.Initialize(); #if DEBUG_LOG_STRIPPING_VARIANT this.includeVariantsBuffer.Length = 0; this.excludeVariantsBuffer.Length = 0; #endif bool isExistShader = IsExistShader(this.shaderVariants, shader); for (int i = 0; i < shaderCompilerData.Count; ++i) { bool shouldRemove = false; if (isExistShader && StripEnableChecker.IsEnable) { bool isExistsVariant = IsExist(this.shaderVariants, shader, snippet, shaderCompilerData[i]); shouldRemove = !isExistsVariant; } #if DEBUG_LOG_STRIPPING_VARIANT if (shouldRemove) { AppendShaderInfo(excludeVariantsBuffer, shader, snippet, shaderCompilerData[i]); } else { AppendShaderInfo(includeVariantsBuffer, shader, snippet, shaderCompilerData[i]); } #endif if (shouldRemove) { shaderCompilerData.RemoveAt(i); --i; } } #if DEBUG_LOG_STRIPPING_VARIANT var data = new ShaderInfoData(shader, snippet); if (!alreadyWriteShader.Contains(data)) { SaveResult(shader, snippet); alreadyWriteShader.Add(data); } #endif }
public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList <ShaderCompilerData> shaderCompilerData) { this.Initialize(); if (!StripShaderConfig.IsEnable) { LogAllInVariantColllection(shader, snippet, shaderCompilerData); return; } double startTime = EditorApplication.timeSinceStartup; int startVariants = shaderCompilerData.Count; this.includeVariantsBuffer.Length = 0; this.excludeVariantsBuffer.Length = 0; bool isExistShader = IsExistShader(this.shaderVariants, shader); if (!isExistShader) { if (StripShaderConfig.StrictVariantStripping) { if (StripShaderConfig.IsLogEnable) { LogNotInVariantColllection(shader, snippet, shaderCompilerData); } shaderCompilerData.Clear(); } else if (StripShaderConfig.IsLogEnable) { LogAllInVariantColllection(shader, snippet, shaderCompilerData); } return; } this.compileResultBuffer.Clear(); for (int i = 0; i < shaderCompilerData.Count; ++i) { bool isExistsVariant = IsExist(this.shaderVariants, shader, snippet, shaderCompilerData[i]); if (StripShaderConfig.IsLogEnable) { if (isExistsVariant) { AppendShaderInfo(includeVariantsBuffer, shader, snippet, shaderCompilerData[i]); } else { AppendShaderInfo(excludeVariantsBuffer, shader, snippet, shaderCompilerData[i]); } } if (isExistsVariant) { this.compileResultBuffer.Add(shaderCompilerData[i]); } } shaderCompilerData.Clear(); foreach (var data in this.compileResultBuffer) { shaderCompilerData.Add(data); } if (StripShaderConfig.IsLogEnable) { double endTime = EditorApplication.timeSinceStartup; int endVariants = shaderCompilerData.Count; string dir = LogDirectory + "/" + dateTimeStr; if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } System.IO.File.AppendAllText(dir + "/" + shader.name.Replace("/", "_") + "_execute.log", "ExecuteTime:" + (endTime - startTime) + " sec\n" + "Variants:" + startVariants + "->" + endVariants + "\n"); var data = new ShaderInfoData(shader, snippet); if (!alreadyWriteShader.Contains(data)) { SaveResult(shader, snippet); alreadyWriteShader.Add(data); } } }