Shader "UI/VerticalGradient" { Properties { _ColorTop("Top Color", Color) = (0, 0, 0, 0) _ColorBottom("Bottom Color", Color) = (0, 0, 0, 1) } SubShader { Tags { "Queue" = "Overlay" "RenderType" = "Transparent" } Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; fixed4 _ColorTop; fixed4 _ColorBottom; v2f vert(appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag(v2f i) : SV_Target { return lerp(_ColorBottom, _ColorTop, i.uv.y); } ENDCG } } }