Skip to content

Instantly share code, notes, and snippets.

@xavierarpa
Created May 11, 2023 07:48
Show Gist options
  • Save xavierarpa/bd208a194b52b0f6046c7a40dc8a3fa7 to your computer and use it in GitHub Desktop.
Save xavierarpa/bd208a194b52b0f6046c7a40dc8a3fa7 to your computer and use it in GitHub Desktop.
Shader "Custom/UI Gradient" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_GradientDirection ("Gradient Direction", Range(0, 360)) = 0
_Color1 ("Color 1", Color) = (1,1,1,1)
_Color2 ("Color 2", Color) = (0,0,0,1)
}
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f {
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _GradientDirection;
float4 _Color1;
float4 _Color2;
v2f vert (appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target {
float2 uv = i.uv;
float4 tex = tex2D(_MainTex, uv);
float angle = (_GradientDirection + 45) / 180 * 3.14159265;
float2 direction = float2(cos(angle), sin(angle));
float2 gradientUV = uv - 0.5;
float gradient = dot(gradientUV, direction) + 0.5;
fixed4 color = lerp(_Color1, _Color2, gradient);
return tex * color;
}
ENDCG
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment