public override void ProcessOutput(SWShaderProcessBase processor, string keyword = "") { base.ProcessOutput(processor, keyword); foreach (var outp in processor.childOutputs) { foreach (var item in outp.outputs) { if (item.data.type == type) { if (keyword == "add") { //UV加上去,一个影像 if (item.type == SWDataType._UV && item.uvOp == SWUVop.add) { processor.StringAddLine(string.Format("\t\t\t\t{0} = {0} + {1}*{2};", processor.uvParam, item.param, item.opFactor)); } } else if (keyword == "lerp") { //原影像和 UV后影像叠加 if (item.type == SWDataType._UV && item.uvOp == SWUVop.lerp) { //iNormal processor.TextureSample(string.Format("color{0}_{1}", processor.node.data.iName, item.param), true, processor.node.TextureShaderName(), string.Format("{0}+{1}", processor.uvParam, item.param, processor.node.data.useNormal)); processor.StringAddLine(string.Format("\t\t\t\tcolor{0} = lerp(color{0},color{0}_{1},clamp({2},0,1)); ", processor.node.data.iName, item.param, item.opFactor)); } } } } } }
public override void ProcessOutputSingle(SWShaderProcessBase processor, SWOutputSub item, string keyword = "") { base.ProcessOutputSingle(processor, item, keyword); if (keyword == "add") { //UV加上去,一个影像 if (item.type == SWDataType._UV && item.uvOp == SWUVop.add) { processor.StringAddLine(string.Format("\t\t\t\t{0} = {0} + {1}*{2};", processor.uvParam, item.param, item.opFactor)); } } else if (keyword == "lerp") { //原影像和 UV后影像叠加 if (item.type == SWDataType._UV && item.uvOp == SWUVop.lerp) { //iNormal processor.TextureSample(string.Format("color{0}_{1}", processor.node.data.iName, item.param), true, processor.node.TextureShaderName(), string.Format("{0}+{1}", processor.uvParam, item.param, processor.node.data.useNormal)); processor.StringAddLine(string.Format("\t\t\t\tcolor{0} = lerp(color{0},color{0}_{1},clamp({2},0,1)); ", processor.node.data.iName, item.param, item.opFactor)); } } else if (keyword == "replace") { //UV加上去,一个影像 if (item.type == SWDataType._UV && item.uvOp == SWUVop.replace) { processor.StringAddLine(string.Format("\t\t\t\t{0} = lerp({0},{1},{2});", processor.uvParam, item.param, item.opFactor)); } } }