Shader "Custom/SaturateShader" {
    Properties{
        _MainTex("Texture", 2D) = "white" {}
        _Saturation("Saturation", Range(-1,2)) = 0
    }
        SubShader{
            Pass {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #include "UnityCG.cginc"

                struct appdata {
                    float4 vertex : POSITION;
                    float2 uv : TEXCOORD0;
                };

                struct v2f {
                    float2 uv : TEXCOORD0;
                    float4 vertex : SV_POSITION;
                };

                sampler2D _MainTex;
                float _Saturation;

                v2f vert(appdata v) {
                    v2f o;
                    o.vertex = UnityObjectToClipPos(v.vertex);
                    o.uv = v.uv;
                    return o;
                }

                fixed4 frag(v2f i) : SV_Target {
                    fixed4 col = tex2D(_MainTex, i.uv);
                    float grey = dot(col.rgb, fixed3(0.299, 0.587, 0.114));
                    col.rgb = lerp(fixed3(grey, grey, grey), col.rgb, _Saturation + 1);
                    return col;
                }
                ENDCG
            }
        }
}
