// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// Shader created with Shader Forge v1.36 
// Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/
// Note: Manually altering this data may prevent you from opening it in Shader Forge
/*SF_DATA;ver:1.36;sub:START;pass:START;ps:flbk:,iptp:0,cusa:False,bamd:0,cgin:,lico:1,lgpr:1,limd:0,spmd:1,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:False,hqlp:False,rprd:False,enco:False,rmgx:True,imps:True,rpth:0,vtps:0,hqsc:True,nrmq:1,nrsp:0,vomd:0,spxs:False,tesm:0,olmd:1,culm:0,bsrc:0,bdst:1,dpts:2,wrdp:True,dith:0,atcv:False,rfrpo:True,rfrpn:Refraction,coma:15,ufog:False,aust:True,igpj:False,qofs:0,qpre:1,rntp:1,fgom:False,fgoc:False,fgod:False,fgor:False,fgmd:0,fgcr:0.5,fgcg:0.5,fgcb:0.5,fgca:1,fgde:0.01,fgrn:0,fgrf:300,stcl:False,stva:128,stmr:255,stmw:255,stcp:6,stps:0,stfa:0,stfz:0,ofsf:0,ofsu:0,f2p0:False,fnsp:False,fnfb:False,fsmp:False;n:type:ShaderForge.SFN_Final,id:3138,x:32719,y:32712,varname:node_3138,prsc:2|emission-7068-OUT,olwid-9834-OUT,olcol-8519-OUT;n:type:ShaderForge.SFN_ValueProperty,id:9834,x:32420,y:33026,ptovrint:False,ptlb:Outline,ptin:_Outline,varname:node_9834,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:0.1;n:type:ShaderForge.SFN_Tex2d,id:5955,x:32184,y:33137,ptovrint:False,ptlb:Rainbow Gradient (Outline),ptin:_RainbowGradientOutline,varname:node_5955,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:396c3e7aab904dd408b0e7d9e23e39ca,ntxv:0,isnm:False|UVIN-8672-OUT;n:type:ShaderForge.SFN_Time,id:8511,x:31127,y:33180,varname:node_8511,prsc:2;n:type:ShaderForge.SFN_ValueProperty,id:8452,x:31130,y:33329,ptovrint:False,ptlb:Speed Vertical,ptin:_SpeedVertical,varname:node_8452,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:0.1;n:type:ShaderForge.SFN_ValueProperty,id:2695,x:31130,y:33419,ptovrint:False,ptlb:Speed Horizontal,ptin:_SpeedHorizontal,varname:node_2695,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:0.1;n:type:ShaderForge.SFN_Append,id:8281,x:31376,y:33343,varname:node_8281,prsc:2|A-8452-OUT,B-2695-OUT;n:type:ShaderForge.SFN_Multiply,id:7062,x:31419,y:33137,varname:node_7062,prsc:2|A-8511-T,B-8281-OUT;n:type:ShaderForge.SFN_TexCoord,id:5435,x:31414,y:32983,varname:node_5435,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Add,id:8672,x:31623,y:33133,varname:node_8672,prsc:2|A-5435-UVOUT,B-7062-OUT;n:type:ShaderForge.SFN_Time,id:3241,x:31490,y:32553,varname:node_3241,prsc:2;n:type:ShaderForge.SFN_ValueProperty,id:8380,x:31480,y:32788,ptovrint:False,ptlb:Rainbow.M Speed Horizontal,ptin:_RainbowMSpeedHorizontal,varname:node_8380,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:-0.1;n:type:ShaderForge.SFN_ValueProperty,id:7184,x:31486,y:32703,ptovrint:False,ptlb:Rainbow.M Speed Vertical,ptin:_RainbowMSpeedVertical,varname:node_7184,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,v1:-0.1;n:type:ShaderForge.SFN_Add,id:1269,x:31936,y:32534,varname:node_1269,prsc:2|A-5629-UVOUT,B-8880-OUT;n:type:ShaderForge.SFN_Append,id:4754,x:31700,y:32732,varname:node_4754,prsc:2|A-7184-OUT,B-8380-OUT;n:type:ShaderForge.SFN_Multiply,id:8880,x:31662,y:32562,varname:node_8880,prsc:2|A-3241-T,B-4754-OUT;n:type:ShaderForge.SFN_TexCoord,id:5629,x:31673,y:32417,varname:node_5629,prsc:2,uv:0,uaff:False;n:type:ShaderForge.SFN_Tex2d,id:6111,x:32104,y:32749,ptovrint:False,ptlb:Rainbow Gradient (Main),ptin:_RainbowGradientMain,varname:node_6111,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,tex:396c3e7aab904dd408b0e7d9e23e39ca,ntxv:0,isnm:False|UVIN-1269-OUT;n:type:ShaderForge.SFN_Desaturate,id:7068,x:32411,y:32815,varname:node_7068,prsc:2|COL-6111-RGB,DES-8988-OUT;n:type:ShaderForge.SFN_Slider,id:8988,x:31955,y:32938,ptovrint:False,ptlb:Saturation,ptin:_Saturation,varname:node_8988,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:1,max:1;n:type:ShaderForge.SFN_Desaturate,id:8519,x:32446,y:33123,varname:node_8519,prsc:2|COL-5955-RGB,DES-1402-OUT;n:type:ShaderForge.SFN_Slider,id:1402,x:31953,y:33034,ptovrint:False,ptlb:Saturation (Outline),ptin:_SaturationOutline,varname:node_1402,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:1,max:1;proporder:9834-5955-8452-2695-8380-7184-6111-8988-1402;pass:END;sub:END;*/

Shader "Shader Forge/Rainbow 2" {
    Properties {
        _Outline ("Outline", Float ) = 0.1
        _RainbowGradientOutline ("Rainbow Gradient (Outline)", 2D) = "white" {}
        _SpeedVertical ("Speed Vertical", Float ) = 0.1
        _SpeedHorizontal ("Speed Horizontal", Float ) = 0.1
        _RainbowMSpeedHorizontal ("Rainbow.M Speed Horizontal", Float ) = -0.1
        _RainbowMSpeedVertical ("Rainbow.M Speed Vertical", Float ) = -0.1
        _RainbowGradientMain ("Rainbow Gradient (Main)", 2D) = "white" {}
        _Saturation ("Saturation", Range(0, 1)) = 1
        _SaturationOutline ("Saturation (Outline)", Range(0, 1)) = 1
    }
    SubShader {
        Tags {
            "RenderType"="Opaque"
        }
        Pass {
            Name "Outline"
            Tags {
            }
            Cull Front
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            #pragma fragmentoption ARB_precision_hint_fastest
            #pragma multi_compile_shadowcaster
            #pragma only_renderers d3d9 d3d11 glcore gles 
            #pragma target 3.0
            uniform float4 _TimeEditor;
            uniform float _Outline;
            uniform sampler2D _RainbowGradientOutline; uniform float4 _RainbowGradientOutline_ST;
            uniform float _SpeedVertical;
            uniform float _SpeedHorizontal;
            uniform float _SaturationOutline;
            struct VertexInput {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                float2 texcoord0 : TEXCOORD0;
            };
            struct VertexOutput {
                float4 pos : SV_POSITION;
                float2 uv0 : TEXCOORD0;
            };
            VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                o.uv0 = v.texcoord0;
                o.pos = UnityObjectToClipPos(float4(v.vertex.xyz + v.normal*_Outline,1) );
                return o;
            }
            float4 frag(VertexOutput i) : COLOR {
                float4 node_8511 = _Time + _TimeEditor;
                float2 node_8672 = (i.uv0+(node_8511.g*float2(_SpeedVertical,_SpeedHorizontal)));
                float4 _RainbowGradientOutline_var = tex2D(_RainbowGradientOutline,TRANSFORM_TEX(node_8672, _RainbowGradientOutline));
                return fixed4(lerp(_RainbowGradientOutline_var.rgb,dot(_RainbowGradientOutline_var.rgb,float3(0.3,0.59,0.11)),_SaturationOutline),0);
            }
            ENDCG
        }
        Pass {
            Name "FORWARD"
            Tags {
                "LightMode"="ForwardBase"
            }
            
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #define UNITY_PASS_FORWARDBASE
            #include "UnityCG.cginc"
            #pragma multi_compile_fwdbase_fullshadows
            #pragma only_renderers d3d9 d3d11 glcore gles 
            #pragma target 3.0
            uniform float4 _TimeEditor;
            uniform float _RainbowMSpeedHorizontal;
            uniform float _RainbowMSpeedVertical;
            uniform sampler2D _RainbowGradientMain; uniform float4 _RainbowGradientMain_ST;
            uniform float _Saturation;
            struct VertexInput {
                float4 vertex : POSITION;
                float2 texcoord0 : TEXCOORD0;
            };
            struct VertexOutput {
                float4 pos : SV_POSITION;
                float2 uv0 : TEXCOORD0;
            };
            VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                o.uv0 = v.texcoord0;
                o.pos = UnityObjectToClipPos(v.vertex );
                return o;
            }
            float4 frag(VertexOutput i) : COLOR {
////// Lighting:
////// Emissive:
                float4 node_3241 = _Time + _TimeEditor;
                float2 node_1269 = (i.uv0+(node_3241.g*float2(_RainbowMSpeedVertical,_RainbowMSpeedHorizontal)));
                float4 _RainbowGradientMain_var = tex2D(_RainbowGradientMain,TRANSFORM_TEX(node_1269, _RainbowGradientMain));
                float3 emissive = lerp(_RainbowGradientMain_var.rgb,dot(_RainbowGradientMain_var.rgb,float3(0.3,0.59,0.11)),_Saturation);
                float3 finalColor = emissive;
                return fixed4(finalColor,1);
            }
            ENDCG
        }
    }
    FallBack "Diffuse"
    CustomEditor "ShaderForgeMaterialInspector"
}
