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)
                });
            }
        }