Outline.shader 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. Shader "Custom/OutlineText"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Font Texture", 2D) = "white" {}
  6. _OutlineColor("Outline Color", Color) = (0,0,0,1)
  7. _OutlineSize("Outline Size", Float) = 1.0
  8. }
  9. SubShader
  10. {
  11. Tags { "Queue"="Transparent" }
  12. Lighting Off
  13. Blend SrcAlpha OneMinusSrcAlpha
  14. Pass
  15. {
  16. CGPROGRAM
  17. #pragma vertex vert
  18. #pragma fragment frag
  19. #include "UnityCG.cginc"
  20. struct appdata
  21. {
  22. float4 vertex : POSITION;
  23. float2 uv : TEXCOORD0;
  24. };
  25. struct v2f
  26. {
  27. float2 uv : TEXCOORD0;
  28. float4 vertex : SV_POSITION;
  29. };
  30. sampler2D _MainTex;
  31. float4 _MainTex_ST;
  32. float4 _OutlineColor;
  33. float _OutlineSize;
  34. v2f vert (appdata v)
  35. {
  36. v2f o;
  37. o.vertex = UnityObjectToClipPos(v.vertex);
  38. o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  39. return o;
  40. }
  41. half4 frag (v2f i) : SV_Target
  42. {
  43. fixed4 col = tex2D(_MainTex, i.uv);
  44. fixed4 outline = tex2D(_MainTex, i.uv + float2(_OutlineSize, 0));
  45. outline += tex2D(_MainTex, i.uv + float2(0, _OutlineSize));
  46. outline += tex2D(_MainTex, i.uv + float2(-_OutlineSize, 0));
  47. outline += tex2D(_MainTex, i.uv + float2(0, -_OutlineSize));
  48. col = lerp(col, _OutlineColor, outline.a); // Adjust blending as needed
  49. return col;
  50. }
  51. ENDCG
  52. }
  53. }
  54. }