Esempio n. 1
0
        public override IEnumerator ExportBuildReport()
        {
            m_Report = new ShaderBuildReport();

            var c = kernels.Count;

            for (var i = 0; i < c; i++)
            {
                var kernel  = kernels[i];
                var program = m_Report.AddGPUProgram(
                    kernel.name,
                    sourceCode,
                    kernel.defines.ToArray(),
                    new ShaderBuildReport.DefineSet[0],
                    new ShaderBuildReport.DefineSet[0]);

                var unit = GetCompileUnitAt(i);
                program.AddCompileUnit(
                    -1,
                    unit.compileOptions.defines.ToArray(),
                    unit.warnings.ToArray(),
                    unit.errors.ToArray(),
                    ShaderProfile.ComputeProgram,
                    unit.compileOptions.entry
                    );

                var perf = GetPerfReportAt(i);
                program.AddPerformanceReport(-1, perf.rawReport, perf.parsedReport);
            }

            yield break;
        }
        public override IEnumerator ExportBuildReport()
        {
            m_Report = new ShaderBuildReport();

#if UNITY_2018_1_OR_NEWER
            foreach (var skippedPassIndex in m_SkippedPassesFromFilter)
            {
                var pass = shaderData.ActiveSubshader.GetPass(skippedPassIndex);
                m_Report.AddSkippedPass(skippedPassIndex, pass.Name);
            }
#endif

            var c = passes.Count;
            for (var i = 0; i < c; i++)
            {
                var pass    = passes[i];
                var program = m_Report.AddGPUProgram(
                    pass.name,
                    pass.sourceCode,
                    m_ShaderKeywords.ToArray(),
                    DefineSetFromHashSets(pass.multicompiles),
                    DefineSetFromHashSets(pass.combinedMulticompiles));

                var unitIndices = m_CompileUnitPerPass[i];
                for (var j = 0; j < unitIndices.Count; j++)
                {
                    var unit = GetCompileUnitAt(unitIndices[j]);
                    program.AddCompileUnit(j, unit.compileOptions.defines.ToArray(), unit.warnings.ToArray(), unit.errors.ToArray(), ShaderProfile.PixelProgram, unit.compileOptions.entry);
                }

                for (var j = 0; j < unitIndices.Count; j++)
                {
                    var indice = unitIndices[j];
                    if (indice >= perfReportCount)
                    {
                        continue;
                    }

                    var perf = GetPerfReportAt(unitIndices[j]);
                    program.AddPerformanceReport(j, perf.rawReport, perf.parsedReport);
                }
            }

            yield break;
        }