public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,ref int UVDimensions,ref int TypeDimensions){ if (TypeDimensions==3){ if (UVDimensions == 1) Map = "float3("+Map+",0,0)"; if (UVDimensions == 2) Map = "float3("+Map+",0)"; UVDimensions = 3; if (SL.LayerType.Type==(int)LayerTypes.Noise) return "("+Map+"+float3("+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+","+SE.Inputs[2].Get(1f/3f)+"))"; else return "("+Map+"+float3("+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+","+SE.Inputs[2].Get(1f)+"))"; } if (TypeDimensions==2){ if (UVDimensions == 1) Map = "float2("+Map+",0)"; if (UVDimensions<3){ UVDimensions = 2; return "("+Map+"+float2("+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+"))"; } else{ return "("+Map+"+float3("+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+",0))"; } } if (TypeDimensions==1) return "("+Map+"+("+SE.Inputs[0].Get()+"))"; return Map; }
public static void Activate(ShaderEffect SE,bool BInputs,ShaderLayer SL){ SE.TypeS = "SSEUVSet"; SE.Name = "Mapping/Set";//+UnityEngine.Random.value.ToString(); SE.Function = ""; SE.LinePre = ""; if (BInputs==true||SE.Inputs.Count!=2){ SE.Inputs = new List<ShaderVar>(); SE.Inputs.Add(new ShaderVar("Values (RGBA)","ListOfObjects")); SE.Inputs.Add(new ShaderVar("Scale",1)); } //if (SL!=null) //Debug.Log(SL.IsLighting); if (SL!=null) SE.Inputs[0].LightingMasks = SL.IsLighting; SE.Inputs[0].SetToMasks(null,0); SE.Inputs[0].NoInputs = true; SE.Inputs[0].RGBAMasks = true; SE.Inputs[1].NoSlider = true; SE.WorldPos = false; SE.WorldRefl = false; SE.WorldNormals = false; SE.IsUVEffect = true; }
public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,ref int UVDimensions,ref int TypeDimensions){ if (TypeDimensions==3){ if (UVDimensions == 1) Map = "float3("+Map+",0,0)"; if (UVDimensions == 2) Map = "float3("+Map+",0)"; UVDimensions = 3; return "(((float3("+SE.Inputs[0].GetMaskName()+".r,"+SE.Inputs[0].GetMaskName()+".g,"+SE.Inputs[0].GetMaskName()+".b))*"+SE.Inputs[1].Get()+"))"; } if (TypeDimensions==2){ if (UVDimensions == 1) Map = "float2("+Map+",0)"; if (UVDimensions<3){ UVDimensions = 2; return "(((float2("+SE.Inputs[0].GetMaskName()+".r,"+SE.Inputs[0].GetMaskName()+".g))*"+SE.Inputs[1].Get()+"))"; } else{ return "(((float3("+SE.Inputs[0].GetMaskName()+".r,"+SE.Inputs[0].GetMaskName()+".g,0))*"+SE.Inputs[1].Get()+"))"; } } if (TypeDimensions==1){ //if (UVDimensions==1) return "((("+SE.Inputs[0].GetMaskName()+".r)*"+SE.Inputs[1].Get()+"))"; } return Map; }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ SE.Inputs[0].Float = Mathf.Round(SE.Inputs[0].Float); if (SE.Inputs[0].Get()=="0") return "fmod("+Line+",1)"; return "fmod("+Line+"*"+SE.Inputs[0].Get()+",1)"; }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ string[] Colors = new string[]{"r","g","b","a"}; string Line1 = "(("+Line+"."+Colors[SE.Inputs[2].Type]+"-"+SL.StartNewBranch(SG,SL.GCUVs(SG,SE.Inputs[0].Get(),"0","0"),Effect)+"."+Colors[SE.Inputs[2].Type]+")*"+SE.Inputs[1].Get()+")"; string Line2 = "(("+Line+"."+Colors[SE.Inputs[2].Type]+"-"+SL.StartNewBranch(SG,SL.GCUVs(SG,"0",SE.Inputs[0].Get(),"0"),Effect)+"."+Colors[SE.Inputs[2].Type]+")*"+SE.Inputs[1].Get()+")"; //string retVal = "(float4("+Line1+","+Line2+","+"sqrt((1-pow("+Line1+",2)-pow("+Line2+",2))),"+Line+".a))";///2+0.5"; string retVal = "(float4("+Line1+","+Line2+",1,"+Line+".a))";///2+0.5"; return retVal; }
private static void RegisterShader( string name, ChromaShader shader, ChromaCondition condition, ShaderLayer layer) { ChromaInitializer._engine.RegisterShader(shader, condition, layer); }
public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,ref int UVDimensions,ref int TypeDimensions){ //return "float3("+((SE.Inputs[0].On)?"1-":"")+")"; if (UVDimensions==3) return "float3("+((SE.Inputs[0].On)?"1-":"")+Map+".x,"+((SE.Inputs[1].On)?"1-":"")+Map+".y,"+((SE.Inputs[2].On)?"1-":"")+Map+".z)"; if (UVDimensions==2) return "float2("+((SE.Inputs[0].On)?"1-":"")+Map+".x,"+((SE.Inputs[1].On)?"1-":"")+Map+".y)"; if (UVDimensions==1) return ""+(((SE.Inputs[0].On)?"1-":"")+Map); return Map; }
public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,ref int UVDimensions,ref int TypeDimensions){ //return "float3("+((SE.Inputs[0].On)?"1-":"")+")"; string MapX = "0"; string MapY = "0"; //string MapZ = Map+".z"; //Debug.Log(UVDimensions); bool UpSize1 = false; if (UVDimensions==1&&TypeDimensions>1) UpSize1 = true; if (SE.Inputs[0].Type==0){ MapX = Map+".x"; if (!UpSize1) MapY = Map+".y"; } if (SE.Inputs[0].Type==1){ if (!UpSize1){ MapX = "1-"+Map+".y"; MapY = Map+".x"; } else{ MapY = "1-"+Map+".x"; } } if (SE.Inputs[0].Type==2){ MapX = "1-"+Map+".x"; if (!UpSize1) MapY = "1-"+Map+".y"; } if (SE.Inputs[0].Type==3){ if (!UpSize1){ MapX = Map+".y"; MapY = "1-"+Map+".x"; } else{ MapY = Map+".x"; } } if (UVDimensions==3) return "float3("+MapX+","+MapY+","+Map+".z)"; if (UVDimensions==2) return "float2("+MapX+","+MapY+")"; if (UVDimensions==1) return "("+MapX+")"; return Map; }
public static string GetAddBlurString(ShaderGenerate SG,ShaderLayer SL,ShaderEffect SE,int Effect,int XAdd,int YAdd){ string XAnti = "AntiAlias";//IN.screenPos.z/300"; string YAnti = XAnti;//"IN.screenPos.z"; //if (SE.Inputs[1].Input!=null) string XX = ((float)XAdd/SE.Inputs[0].Float).ToString()+"*"+XAnti; //if (SE.Inputs[2].Input!=null) string YY = ((float)YAdd/SE.Inputs[0].Float).ToString()+"*"+YAnti; //if (!SE.Inputs[0].On){ // if (SE.Inputs[1].Input!=null) // YY = ((float)YAdd/SE.Inputs[0].Float).ToString()+"*"+XAnti; //} return "+("+SL.StartNewBranch(SG,SL.GCUVs(SG,XX,YY,"0"),Effect)+")"; //return OldColors[ShaderUtil.FlatArray(XX,YY,W,H)]; }
public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,ref int UVDimensions,ref int TypeDimensions){ if (!SE.Inputs[0].On){ if (UVDimensions==3) return "("+Map+"*float3("+SE.Inputs[1].Get()+","+SE.Inputs[1].Get()+","+SE.Inputs[1].Get()+"))"; if (UVDimensions==2) return "("+Map+"*float2("+SE.Inputs[1].Get()+","+SE.Inputs[1].Get()+"))"; if (UVDimensions==1) return "("+Map+"*("+SE.Inputs[1].Get()+"))"; } else{ if (UVDimensions==3) return "("+Map+"*float3("+SE.Inputs[1].Get()+","+SE.Inputs[2].Get()+","+SE.Inputs[3].Get()+"))"; if (UVDimensions==2) return "("+Map+"*float2("+SE.Inputs[1].Get()+","+SE.Inputs[2].Get()+"))"; if (UVDimensions==1) return "("+Map+"*("+SE.Inputs[1].Get()+"))"; } return Map; }
public static string GenerateBase(ShaderEffect SE,ShaderLayer SL,string PixCol,string Map){ if (SL.LayerType.Type == (int)LayerTypes.Texture){ PixCol = "tex2Dlod("+SL.Image.Input.Get()+",float4("+Map+",0,"+SE.Inputs[0].Get()+"))"; } if (SL.LayerType.Type == (int)LayerTypes.Cubemap){ PixCol = "texCUBElod("+SL.Cube.Input.Get()+",float4("+Map+","+SE.Inputs[0].Get()+"))"; } if (SL.LayerType.Type == (int)LayerTypes.GrabDepth){ if (SL.SpecialType.Type==0) PixCol = "tex2Dlod( _GrabTexture, float4("+Map+",0,"+SE.Inputs[0].Get()+"))"; else{ if (SL.LinearizeDepth.On) PixCol = "(LinearEyeDepth(tex2Dlod(_CameraDepthTexture, floatt4("+Map+",0,"+SE.Inputs[0].Get()+")).r).rrrr)"; else PixCol = "(tex2Dlod(_CameraDepthTexture, float4("+Map+",0,"+SE.Inputs[0].Get()+")).rrrr)"; } } return PixCol; }
public static string GenerateMap(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Map,int UVDimensions,int TypeDimensions){ if (!SE.Inputs[0].On){ SE.Inputs[2].Float = SE.Inputs[1].Float; SE.Inputs[3].Float = SE.Inputs[1].Float; SE.Inputs[2].Input = SE.Inputs[1].Input; SE.Inputs[3].Input = SE.Inputs[1].Input; } string Mapping=""; if (UVDimensions==3) Mapping = "float3("+SE.Inputs[1].Get()+","+SE.Inputs[2].Get()+","+SE.Inputs[3].Get()+")"; if (UVDimensions==2) Mapping = "float2("+SE.Inputs[1].Get()+","+SE.Inputs[2].Get()+")"; if (UVDimensions==1) Mapping = "("+SE.Inputs[1].Get()+")"; if (Mapping!="") return "(round("+Map+"/"+Mapping+")*"+Mapping+")"; return Map; }
public static string GetAddBlurString(ShaderGenerate SG,ShaderLayer SL,ShaderEffect SE,int Effect,int XAdd,int YAdd){ string XX = ((float)XAdd*SE.Inputs[1].Float/SE.Inputs[4].Float).ToString(); string YY = ((float)YAdd*SE.Inputs[2].Float/SE.Inputs[4].Float).ToString(); if (!SE.Inputs[0].On){ YY = ((float)YAdd*SE.Inputs[1].Float/SE.Inputs[4].Float).ToString(); } if (SE.Inputs[1].Input!=null) XX = ((float)XAdd/SE.Inputs[4].Float).ToString()+"*"+SE.Inputs[1].Get(); if (SE.Inputs[2].Input!=null) YY = ((float)YAdd/SE.Inputs[4].Float).ToString()+"*"+SE.Inputs[2].Get(); if (!SE.Inputs[0].On){ if (SE.Inputs[1].Input!=null) YY = ((float)YAdd/SE.Inputs[4].Float).ToString()+"*"+SE.Inputs[1].Get(); } return "+("+SL.StartNewBranch(SG,SL.GCUVs(SG,XX,YY,"0"),Effect)+")"; //return OldColors[ShaderUtil.FlatArray(XX,YY,W,H)]; }
public static string Generate(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ if (!SL.IsVertex){ string retVal = "((("+Line+")"; int AddCount = 0; for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i+=2){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,i,i);AddCount+=1;}} for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i+=2){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,-i,-i);AddCount+=1;}} for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i+=2){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,-i,i);AddCount+=1;}} for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i+=2){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,i,-i);AddCount+=1;}} for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i++){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,i,0);AddCount+=1;}} for(int i = (int)(-SE.Inputs[0].Float);i<=(int)(SE.Inputs[0].Float);i++){ if (i!=0){retVal+=GetAddBlurString(SG,SL,SE,Effect,0,i);AddCount+=1;}} retVal += ")/"+(AddCount+1).ToString()+")"; //+("+SL.GetSubPixel(SG,SL.GCUVs(SG,"0.01","0","0"),Effect)+"))/2)"; return retVal; } return Line; }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return GenerateGeneric(SE,Line); }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ if (SE.Inputs[0].Get()=="0"&&SE.Inputs[0].Get()=="1") return "saturate("+Line+")"; return "clamp("+Line+","+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+")"; }
private static void RegisterShader(string name, ChromaShader shader, ChromaCondition condition, ShaderLayer layer) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) _engine.RegisterShader(shader, condition, layer); }
public static string Generate(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "("+Line+"/2+0.5)";///2+0.5)"; }
public static string GenerateBase(ShaderGenerate SG, ShaderEffect SE,ShaderLayer SL,string PixCol,string Map){ if (SL.LayerType.Type == (int)LayerTypes.Texture){ if (SG.InVertex) PixCol = "tex2Dlod("+SL.Image.Input.Get()+",float4("+Map+",0,0))"; else PixCol = "tex2D("+SL.Image.Input.Get()+","+Map+",ddx("+SL.GCUVs(SG,false)+"), ddy("+SL.GCUVs(SG,false)+"))"; } //if (SL.LayerType.Type == (int)LayerTypes.Cubemap){ // PixCol = "texCUBE("+SL.Cube.Input.Get()+",float4("+Map+","+SE.Inputs[0].Get()+"))"; //} return PixCol; }
public static string Generate(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "float3(dot(float3(0.3,0.59,0.11),"+Line+".rgb),dot(float3(0.3,0.59,0.11),"+Line+".rgb),dot(float3(0.3,0.59,0.11),"+Line+".rgb))"; }
public static string GenerateAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "pow("+Line+","+SE.Inputs[0].Get()+")"; }
public void LayerCopy(object SL){ClipboardLayer = ((ShaderLayer)SL).Copy();}
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "lerp(float4(0,0,0,0),"+Line+",ceil(dot(float3(0.3,0.59,0.11),"+Line+".rgb)-"+SE.Inputs[0].Get()+")*ceil("+Line+".a-"+SE.Inputs[0].Get()+"))"; }
public void ChangeSaveTemp_Real(ShaderLayer Up,bool UpdateInputs){ if (GUI.changed) ValueChanged = true; if (ValueChanged&&OpenShader!=null){//DrawLayer!=null&& if (Up!=null){ Up.Parent.UpdateIcon(new Vector2(70,70)); //Debug.Log("UpdatedIcon"); } if (UpdateInputs){ OpenShader.RecalculateAutoInputs();} UpdateShaderPreview(); } if (!GUI.changed&&OpenShader!=null){ GUIChangedTimer-=1; if (GUIChangedTimer==0){ RegenShaderPreview(); UpdateShaderPreview(); } } else{ GUIChangedTimer=20; } }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "lerp(float4(0.5,0.5,0.5,0.5),"+Line+","+SE.Inputs[0].Get()+")"; }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "(round("+Line+"*"+SE.Inputs[0].Get()+")/"+SE.Inputs[0].Get()+")"; }
public static string Generate(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "(normalize("+Line+"))"; }
public static string GenerateWAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ if (SE.Inputs[0].On) return "((sin("+Line+")+1)/2)"; else return "sin("+Line+")"; }
public static string GenerateAlpha(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "("+Line+")"; }
public void ChangeSaveTemp(ShaderLayer Up){ ChangeSaveTemp_Real(Up,true); }
public static string Generate(ShaderGenerate SG,ShaderEffect SE, ShaderLayer SL,string Line,int Effect){ return "hsv2rgb(rgb2hsv("+Line+")+float3("+SE.Inputs[0].Get()+","+SE.Inputs[1].Get()+","+SE.Inputs[2].Get()+"))"; }
public void ChangeSaveTemp(ShaderLayer Up,bool UpdateInputs){ ChangeSaveTemp_Real(Up,UpdateInputs); }