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);
        }
Пример #2
0
        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
        }
Пример #3
0
        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);
                }
            }
        }