public ShaderGeneratorContext(ScriptHelper <TranslatedMaterialGraph.NodeInfo> graph, string name, Connection previewPin = null) { Name = name; Parameters = graph.Nodes.Where(_ => NodeTypes.IsParameter(_.Type)).ToList(); Samplers = graph.Nodes.Where(_ => NodeTypes.IsSampler(_.Type)).ToList(); TranslatedMaterialGraph.Preprocess(graph, previewPin); var finalColorByPass = graph.Nodes.Where(_ => NodeTypes.IsFinalColor(_.Type)).ToLookup(_ => _.Value); foreach (var pass in finalColorByPass) { var passGraph = graph.Clone(); passGraph.Nodes.RemoveWhere(_ => NodeTypes.IsFinalColor(_.Type) && _.Value != pass.Key); Passes.Add(new Pass { Key = pass.Key, Graph = TranslatedMaterialGraph.Translate(passGraph) }); } }