public override string GenerateShaderForOutput(int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalvar)
        {
            m_functionBodyStruct = string.Empty;
            if (!dataCollector.IsSRP)
            {
                GradientNode.GenerateGradientStruct(ref m_functionBodyStruct);
                dataCollector.AddFunctions(m_functionHeaderStruct, m_functionBodyStruct, "0");
            }
            else
            {
                dataCollector.AddToIncludes(UniqueId, "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl");
            }

            GenerateGradientSampler(dataCollector.IsSRP);

            string gradient = "(Gradient)0";

            if (m_inputPorts[0].IsConnected && m_gradientNode != null)
            {
                gradient = m_inputPorts[0].GeneratePortInstructions(ref dataCollector);
            }
            string time = m_inputPorts[1].GeneratePortInstructions(ref dataCollector);

            string functionResult = dataCollector.AddFunctions(m_functionHeader, m_functionBody, gradient, time);

            return(GetOutputVectorItem(0, outputId, functionResult));
        }
        public override void OnNodeLogicUpdate(DrawInfo drawInfo)
        {
            base.OnNodeLogicUpdate(drawInfo);

            if (m_gradPort.IsConnected)
            {
                m_gradientNode = RecursiveBackCheck(m_gradPort.GetOutputNode(0));
            }
            else
            {
                m_gradientNode = null;
            }
        }