Shader "Unlit/ToolTipLine" { Properties { _MainTex ("Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) } SubShader { LOD 100 Pass { //线条未被遮挡住时,采用此Pass渲染 Tags { "RenderType" = "Transparent" } Blend SrcAlpha OneMinusSrcAlpha ZWrite On ZTest LEqual CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #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; fixed4 _Color; 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 { // sample the texture fixed4 col = tex2D(_MainTex, i.uv) * _Color; // apply fog UNITY_APPLY_FOG(i.fogCoord, col); //边缘渐变发光效果 /* 普通算法 if (i.uv.y <= 0.5) col.a = smoothstep(0, 0.5, i.uv.y); else col.a = 1 - smoothstep(0.5, 1, i.uv.y); */ //优化后的算法 col.a = smoothstep(0, 0.5, i.uv.y) * step(i.uv.y, 0.5) + (1 - smoothstep(0.5, 1, i.uv.y)) * step(0.5, i.uv.y); return col; } ENDCG } Pass { //线条被遮挡时,采用此Pass渲染 Tags { "RenderType" = "Transparent" } Blend SrcAlpha OneMinusSrcAlpha ZWrite On ZTest Greater CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #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; fixed4 _Color; 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 { // sample the texture fixed4 col = tex2D(_MainTex, i.uv) * _Color; // apply fog UNITY_APPLY_FOG(i.fogCoord, col); col.a = smoothstep(0, 0.5, i.uv.y) * step(i.uv.y, 0.5) + (1 - smoothstep(0.5, 1, i.uv.y)) * step(0.5, i.uv.y); col.a *= 0.1; return col; } ENDCG } } }
效果截图