Beispiel #1
0
 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));
                     }
                 }
             }
         }
     }
 }
Beispiel #2
0
 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));
         }
     }
 }