LineFill.shader 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright(c) 2017 Funly LLC
  2. //
  3. // Author: Jason Ederle
  4. // Description: Renders a soft line to avoid aliasing issues.
  5. // Contact: jason@funly.io
  6. Shader "Hidden/Funly/Sky/SoftLine"
  7. {
  8. Properties
  9. {
  10. }
  11. SubShader
  12. {
  13. Tags { "RenderType" = "Opaque" }
  14. LOD 100
  15. Pass
  16. {
  17. CGPROGRAM
  18. #pragma target 2.0
  19. #pragma vertex vert
  20. #pragma fragment frag
  21. #include "UnityCG.cginc"
  22. struct appdata
  23. {
  24. float4 vertex : POSITION;
  25. float2 uv : TEXCOORD0;
  26. };
  27. struct v2f
  28. {
  29. float2 uv : TEXCOORD0;
  30. float4 vertex : SV_POSITION;
  31. };
  32. fixed4 _LineColor;
  33. float _EdgeFeathering;
  34. float4 _BackgroundColor;
  35. v2f vert (appdata v)
  36. {
  37. v2f o;
  38. o.vertex = UnityObjectToClipPos(v.vertex);
  39. o.uv = v.uv;
  40. return o;
  41. }
  42. fixed4 frag (v2f i) : SV_Target
  43. {
  44. fixed4 lineColor = _LineColor;
  45. float mixPercent = smoothstep(0, _EdgeFeathering, i.uv.y);
  46. float4 lowerColor = lerp(_BackgroundColor, lineColor, mixPercent);
  47. mixPercent = smoothstep(1, (1 - _EdgeFeathering), i.uv.y);
  48. float4 upperColor = lerp(_BackgroundColor, lineColor, mixPercent);
  49. upperColor *= step((1 - _EdgeFeathering), i.uv.y);
  50. lowerColor *= step(i.uv.y, (1 - _EdgeFeathering));
  51. return lowerColor + upperColor;
  52. }
  53. ENDCG
  54. }
  55. }
  56. }