public override SWOutput Process(SWNodeBase _node) { //step 1: Add colors colors = new List <SWOutputSub> (); base.Process(_node); foreach (var item in childOutputs) { foreach (var item2 in item.outputs) { if (item2.type == SWDataType._Color) { colors.Add(item2); } } } //step 2: Process colors colors.Sort(delegate(SWOutputSub x, SWOutputSub y) { return(x.depth - y.depth); }); var c = new SWShaderProcessReceiveColor(); for (int i = 0; i < colors.Count; i++) { var item = colors [i]; c.ProcessOutputSingle(this, item, i == 0? "first":""); } //step 3: Process Alpha GoOutput(SWNodeType.alpha, "final"); ProcessSpriteNormal(_node); return(null); }
public static SWShaderProcessReceiveBase CreateProcessorReceiver(SWNodeType type) { SWShaderProcessReceiveBase receiver = null; if (type == SWNodeType.root) { } else if (type == SWNodeType.mask) { } else if (type == SWNodeType.color) { receiver = new SWShaderProcessReceiveColor(); } else if (type == SWNodeType.image) { } else if (type == SWNodeType.uv) { receiver = new SWShaderProcessReceiveUV(); } else if (type == SWNodeType.alpha) { receiver = new SWShaderProcessReceiveAlpha(); } else if (type == SWNodeType.remap) { receiver = new SWShaderProcessReceiveRemap(); } else if (type == SWNodeType.blur) { receiver = new SWShaderProcessReceiveBlur(); } else if (type == SWNodeType.retro) { receiver = new SWShaderProcessReceiveRetro(); } else if (type == SWNodeType.coord) { receiver = new SWShaderProcessReceiveCoord(); } else if (type == SWNodeType.dummy) { } else if (type == SWNodeType.code) { } return(receiver); }