Exemple #1
0
        public FloorNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Floor";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Any Float Input");
            output = new NodeOutput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this);

            Inputs.Add(input);

            Outputs.Add(output);
        }
Exemple #2
0
        public CurvesNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            Name = "Curves";
            Id   = Guid.NewGuid().ToString();

            width  = w;
            height = h;

            minValue = 0;
            maxValue = 1;

            points = new Dictionary <int, List <Point> >();

            previewProcessor = new BasicImageRenderer();

            tileX = tileY = 1;

            lutBrush = new FloatBitmap(256, 2);

            internalPixelType = p;

            curveLUT = new GLTextuer2D(GLInterfaces.PixelInternalFormat.Rgba8);
            curveLUT.Bind();
            curveLUT.SetFilter((int)GLInterfaces.TextureMinFilter.Nearest, (int)GLInterfaces.TextureMagFilter.Nearest);
            curveLUT.SetWrap((int)GLInterfaces.TextureWrapMode.Repeat);
            GLTextuer2D.Unbind();

            processor = new CurvesProcessor(curveLUT);

            //set defaults
            List <Point> pts = new List <Point>();

            pts.Add(new Point(0, 1));
            pts.Add(new Point(1, 0));

            points[0] = pts;
            points[1] = pts;
            points[2] = pts;
            points[3] = pts;

            input  = new NodeInput(NodeType.Color | NodeType.Gray, this, "Image Input");
            Output = new NodeOutput(NodeType.Color | NodeType.Gray, this);

            Inputs.Add(input);
            Outputs.Add(Output);
        }
Exemple #3
0
        public NotNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Not";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Bool, this, "Bool Input");
            output = new NodeOutput(NodeType.Bool, this);

            Inputs.Add(input);

            Outputs.Add(output);
        }
Exemple #4
0
        public ArgNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            //we ignore w,h,p

            inputType = NodeType.Float;

            inputName = "arg";

            CanPreview = false;

            Name     = "Arg";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            Inputs  = new List <NodeInput>();
            Outputs = new List <NodeOutput>();
        }
Exemple #5
0
        public BlendNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            Name = "Blend";

            width  = w;
            height = h;

            alpha     = 1;
            alphaMode = AlphaModeType.Background;
            mode      = BlendType.Copy;

            previewProcessor = new BasicImageRenderer();
            processor        = new BlendProcessor();

            internalPixelType = p;

            tileX = tileY = 1;

            Id     = Guid.NewGuid().ToString();
            Inputs = new List <NodeInput>();
            Output = new NodeOutput(NodeType.Color | NodeType.Gray, this);

            first  = new NodeInput(NodeType.Color | NodeType.Gray, this, "Foreground");
            second = new NodeInput(NodeType.Color | NodeType.Gray, this, "Background");
            mask   = new NodeInput(NodeType.Gray, this, "Mask");

            first.OnInputAdded   += OnInputAdded;
            first.OnInputRemoved += OnInputRemoved;
            first.OnInputChanged += OnInputChanged;

            second.OnInputRemoved += OnInputRemoved;
            second.OnInputAdded   += OnInputAdded;
            second.OnInputChanged += OnInputChanged;

            mask.OnInputRemoved += OnInputRemoved;
            mask.OnInputAdded   += OnInputAdded;
            mask.OnInputChanged += OnInputChanged;

            Inputs.Add(first);
            Inputs.Add(second);
            Inputs.Add(mask);

            Outputs = new List <NodeOutput>();
            Outputs.Add(Output);
        }
        public GraphInstanceNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            isDirty = true;
            width   = w;
            height  = h;

            nameMap = new Dictionary <string, GraphParameterValue>();

            Id = Guid.NewGuid().ToString();

            tileX = tileY = 1;

            internalPixelType = p;

            Name = "Graph Instance";

            path = "";
        }
Exemple #7
0
        public SequenceNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            CanPreview = false;

            Name = "Sequence";
            Id   = Guid.NewGuid().ToString();

            input = new NodeInput(NodeType.Bool | NodeType.Color | NodeType.Gray | NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Any Input");

            Inputs.Add(input);

            for (int i = 0; i < 4; ++i)
            {
                var output = new NodeOutput(NodeType.Bool | NodeType.Color | NodeType.Gray | NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, String.Format("{0:0}", Outputs.Count));
                output.OnOutputChanged += Output_OnOutputChanged;
                Outputs.Add(output);
            }
        }
Exemple #8
0
        public PowNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Pow";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float, this, "Value");
            input2 = new NodeInput(NodeType.Float, this, "Raise");
            output = new NodeOutput(NodeType.Float, this);

            Inputs.Add(input);
            Inputs.Add(input2);

            Outputs.Add(output);
        }
Exemple #9
0
        public DotProductNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Dot Product";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Vector Float 0");
            input2 = new NodeInput(NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Vector Float 1");

            output = new NodeOutput(NodeType.Float, this);

            Inputs.Add(input);
            Inputs.Add(input2);
            Outputs.Add(output);
        }
Exemple #10
0
        public AndNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "And";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            output = new NodeOutput(NodeType.Bool, this);

            for (int i = 0; i < 2; ++i)
            {
                var input = new NodeInput(NodeType.Bool, this, "Bool Input " + i);
                Inputs.Add(input);
            }
            Outputs.Add(output);
        }
Exemple #11
0
        public TextNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            Name = "Text";

            Id = Guid.NewGuid().ToString();

            tileX = tileY = 1;

            width  = w;
            height = h;

            fontSize   = 32;
            fontFamily = "Arial";
            text       = "";
            fonts      = FontManager.GetAvailableFonts();
            position   = new MVector();
            rotation   = 0;
            scale      = new MVector(1, 1);
            style      = FontStyle.Regular;
            alignment  = TextAlignment.Center;
            spacing    = 1;


            processor = new TextProcessor();

            //establish character holder texture
            character = new GLTextuer2D(GLInterfaces.PixelInternalFormat.Rgba);
            character.Bind();
            character.Linear();
            character.ClampToEdge();
            GLTextuer2D.Unbind();

            internalPixelType = p;

            previewProcessor = new BasicImageRenderer();

            Output = new NodeOutput(NodeType.Gray, this);

            Inputs = new List <NodeInput>();

            Outputs = new List <NodeOutput>();
            Outputs.Add(Output);
        }
Exemple #12
0
        public DistanceNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Distance";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            output = new NodeOutput(NodeType.Float, this);

            for (int i = 0; i < 2; ++i)
            {
                var input = new NodeInput(NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Vector Input " + i);
                Inputs.Add(input);
            }
            Outputs.Add(output);
        }
Exemple #13
0
        public NormalizeNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Normalize";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Any Vector Type");
            output = new NodeOutput(NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this);

            Inputs.Add(input);

            input.OnInputAdded   += Input_OnInputAdded;
            input.OnInputChanged += Input_OnInputChanged;
            Outputs.Add(output);
        }
Exemple #14
0
        public InputNode(GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            Id = Guid.NewGuid().ToString();

            Name = "Input";

            internalPixelType = p;

            //this actually does nothing for this node
            width  = 16;
            height = 16;
            tileX  = tileY = 1;

            previewProcessor = new BasicImageRenderer();

            //only an output is present
            Output = new NodeOutput(NodeType.Color | NodeType.Gray, this);
            Outputs.Add(Output);
        }
Exemple #15
0
        public FloatConstantNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            //we ignore w,h,p

            val = 0;

            CanPreview = false;

            Name     = "Float Constant";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            output = new NodeOutput(NodeType.Float, this);

            Inputs = new List <NodeInput>();

            Outputs = new List <NodeOutput>();
            Outputs.Add(output);
        }
Exemple #16
0
        public MeshNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            Name = "Mesh";

            Id = Guid.NewGuid().ToString();

            width  = w;
            height = h;

            tileX = tileY = 1;

            meshtileX = meshtileY = 1;

            scale      = new MVector(1, 1, 1);
            rotation   = new MVector(0, 0, 0);
            position   = new MVector(0, 0, 0);
            cameraZoom = 3;

            previewProcessor = new BasicImageRenderer();
            processor        = new MeshProcessor();

            internalPixelType = p;

            inputAlbedo    = new NodeInput(NodeType.Color, this, "Albedo");
            inputHeight    = new NodeInput(NodeType.Gray, this, "Height");
            inputMetallic  = new NodeInput(NodeType.Gray, this, "Metallic");
            inputRoughness = new NodeInput(NodeType.Gray, this, "Roughness");
            inputOcclusion = new NodeInput(NodeType.Gray, this, "Occlusion");
            inputNormal    = new NodeInput(NodeType.Color, this, "Normal");
            inputThickness = new NodeInput(NodeType.Gray, this, "Thickness");

            Inputs.Add(inputAlbedo);
            Inputs.Add(inputMetallic);
            Inputs.Add(inputRoughness);
            Inputs.Add(inputNormal);
            Inputs.Add(inputHeight);
            Inputs.Add(inputOcclusion);
            Inputs.Add(inputThickness);

            Output = new NodeOutput(NodeType.Gray, this);
            Outputs.Add(Output);
        }
Exemple #17
0
        public GreaterThanNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Greater Than";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float, this, "A (Float)");
            input2 = new NodeInput(NodeType.Float, this, "B (Float)");

            output = new NodeOutput(NodeType.Bool, this);

            Inputs.Add(input);
            Inputs.Add(input2);

            Outputs.Add(output);
        }
Exemple #18
0
        public OutputNode(GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            OutType = OutputType.basecolor;

            Name = "Output";

            Id = Guid.NewGuid().ToString();

            width = height = 16;
            tileX = tileY = 1;

            internalPixelType = p;

            previewProcessor = new BasicImageRenderer();

            input = new NodeInput(NodeType.Color | NodeType.Gray, this);
            Inputs.Add(input);

            Outputs = new List <NodeOutput>();
        }
Exemple #19
0
        public SamplerNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            CanPreview = false;

            Name = "Sampler";

            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float2, this, "Pos");
            output = new NodeOutput(NodeType.Float4, this);

            sampleIndex = 0;
            Inputs.Add(input);

            input.OnInputAdded   += Input_OnInputAdded;
            input.OnInputChanged += Input_OnInputChanged;

            Outputs.Add(output);
        }
Exemple #20
0
        public GraphInstanceNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            width  = w;
            height = h;

            Id = Guid.NewGuid().ToString();

            tileX = tileY = 1;

            Name = "Graph Instance";

            this.path = "";

            //we do not initialize the inputs and outputs here
            //instead they are loaded after the graph is loaded
            Inputs  = new List <NodeInput>();
            Outputs = new List <NodeOutput>();

            GraphParameterValue.OnGraphParameterUpdate += GraphParameterValue_OnGraphParameterUpdate;
        }
Exemple #21
0
        public BitmapNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            Name = "Bitmap";

            AbsoluteSize = true;

            Id = Guid.NewGuid().ToString();

            previewProcessor = new BasicImageRenderer();

            internalPixelType = p;

            tileX = tileY = 1;

            width  = w;
            height = h;

            Output = new NodeOutput(NodeType.Color | NodeType.Gray, this);
            Outputs.Add(Output);
        }
Exemple #22
0
        public MatrixNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Matrix";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float | NodeType.Float2, this, "Float Input");
            output = new NodeOutput(NodeType.Matrix, this);

            Inputs.Add(input);

            input.OnInputAdded   += Input_OnInputAdded;
            input.OnInputChanged += Input_OnInputChanged;

            Outputs.Add(output);
        }
Exemple #23
0
        public BreakFloat3Node(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Break Float3";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input   = new NodeInput(NodeType.Float3, this, "Float3 Type");
            output  = new NodeOutput(NodeType.Float, this, "X");
            output2 = new NodeOutput(NodeType.Float, this, "Y");
            output3 = new NodeOutput(NodeType.Float, this, "Z");

            Inputs.Add(input);

            Outputs.Add(output);
            Outputs.Add(output2);
            Outputs.Add(output3);
        }
Exemple #24
0
        public ClampNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Clamp";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Value");
            input2 = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Min");
            input3 = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Max");
            output = new NodeOutput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this);

            Inputs.Add(input);
            Inputs.Add(input2);
            Inputs.Add(input3);

            Outputs.Add(output);
        }
Exemple #25
0
        public CartesianNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Cartesian";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input   = new NodeInput(NodeType.Float, this, "Angle (Deg) Float Input");
            input2  = new NodeInput(NodeType.Float, this, "Radius Float Input");
            output  = new NodeOutput(NodeType.Float, this, "X Output");
            output2 = new NodeOutput(NodeType.Float, this, "Y Output");

            Inputs.Add(input);
            Inputs.Add(input2);

            Outputs.Add(output);
            Outputs.Add(output2);
        }
Exemple #26
0
        public ChannelSwitchNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            Name = "Channel Switch";
            Id   = Guid.NewGuid().ToString();

            width  = w;
            height = h;

            redChannel   = 0;
            greenChannel = 1;
            blueChannel  = 2;
            alphaChannel = 3;

            tileX = tileY = 1;

            processor        = new ChannelSwitchProcessor();
            previewProcessor = new BasicImageRenderer();

            internalPixelType = p;

            input  = new NodeInput(NodeType.Color | NodeType.Gray, this, "Input 0");
            input2 = new NodeInput(NodeType.Color | NodeType.Gray, this, "Input 1");
            output = new NodeOutput(NodeType.Color | NodeType.Gray, this);

            input.OnInputAdded   += Input_OnInputAdded;
            input.OnInputChanged += Input_OnInputChanged;
            input.OnInputRemoved += Input_OnInputRemoved;

            input2.OnInputAdded   += Input_OnInputAdded;
            input2.OnInputChanged += Input_OnInputChanged;
            input2.OnInputRemoved += Input_OnInputRemoved;

            Inputs  = new List <NodeInput>();
            Outputs = new List <NodeOutput>();

            Inputs.Add(input);
            Inputs.Add(input2);

            Outputs.Add(output);
        }
Exemple #27
0
        public MakeFloat4Node(int w, int h, GraphPixelType p = GraphPixelType.RGBA)
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Make Float4";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            vec = new MVector();

            input  = new NodeInput(NodeType.Float, this, "X (Float)");
            input2 = new NodeInput(NodeType.Float, this, "Y (Float)");
            input3 = new NodeInput(NodeType.Float, this, "Z (Float)");
            input4 = new NodeInput(NodeType.Float, this, "W (Float)");

            output = new NodeOutput(NodeType.Float4, this);

            Inputs = new List <NodeInput>();
            Inputs.Add(input);
            Inputs.Add(input2);
            Inputs.Add(input3);
            Inputs.Add(input4);

            input.OnInputAdded   += Input_OnInputAdded;
            input.OnInputChanged += Input_OnInputChanged;

            input2.OnInputAdded   += Input_OnInputAdded;
            input2.OnInputChanged += Input_OnInputChanged;

            input3.OnInputAdded   += Input_OnInputAdded;
            input3.OnInputChanged += Input_OnInputChanged;

            input4.OnInputAdded   += Input_OnInputAdded;
            input4.OnInputChanged += Input_OnInputChanged;

            Outputs = new List <NodeOutput>();
            Outputs.Add(output);
        }
Exemple #28
0
        public ForLoopNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "For Loop";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            initialInput   = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Any Float Type");
            startInput     = new NodeInput(NodeType.Float, this, "Start");
            endInput       = new NodeInput(NodeType.Float, this, "End");
            incrementInput = new NodeInput(NodeType.Float, this, "Increment By");

            loopOutput      = new NodeOutput(NodeType.Float | NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Loop");
            incrementOutput = new NodeOutput(NodeType.Float, this, "Current");
            completeOutput  = new NodeOutput(NodeType.Execute, this, "Done");

            Inputs.Add(initialInput);
            Inputs.Add(startInput);
            Inputs.Add(endInput);
            Inputs.Add(incrementInput);

            initialInput.OnInputAdded   += Input_OnInputAdded;
            initialInput.OnInputChanged += Input_OnInputChanged;

            startInput.OnInputAdded   += Input_OnInputAdded;
            startInput.OnInputChanged += Input_OnInputChanged;

            endInput.OnInputAdded   += Input_OnInputAdded;
            endInput.OnInputChanged += Input_OnInputChanged;

            incrementInput.OnInputAdded   += Input_OnInputAdded;
            incrementInput.OnInputChanged += Input_OnInputChanged;

            Outputs.Add(loopOutput);
            Outputs.Add(incrementOutput);
            Outputs.Add(completeOutput);
        }
Exemple #29
0
        public IfElseNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "If Else";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Bool, this, "Comparison");
            input2 = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "If");
            input3 = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "Else");

            output = new NodeOutput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this);

            Inputs.Add(input);
            Inputs.Add(input2);
            Inputs.Add(input3);

            Outputs.Add(output);
        }
Exemple #30
0
        public LerpNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) : base()
        {
            //we ignore w,h,p

            CanPreview = false;

            Name     = "Linear Interpolation";
            Id       = Guid.NewGuid().ToString();
            shaderId = "S" + Id.Split('-')[0];

            input  = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "From");
            input2 = new NodeInput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this, "To");
            input3 = new NodeInput(NodeType.Float, this, "Delta");

            output = new NodeOutput(NodeType.Float | NodeType.Float2 | NodeType.Float3 | NodeType.Float4, this);

            Inputs.Add(input);
            Inputs.Add(input2);
            Inputs.Add(input3);

            Outputs.Add(output);
        }