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); }
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); }
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); }
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>(); }
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 = ""; }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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>(); }
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); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }