Shader "Outline/SolidUnlit" { SubShader { Tags { "RenderType" = "TransparentCutout" } ZWrite Off ZTest LEqual Lighting Off // Set up alpha blending Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 vertex : SV_POSITION; float4 projPos : TEXCOORD0; float2 convertedNormal : TEXCOORD1; }; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.projPos = ComputeScreenPos(o.vertex); COMPUTE_EYEDEPTH(o.projPos.z); //o.viewNormal = COMPUTE_VIEW_NORMAL; // work out camera position to vert position float3 normalDir = UnityObjectToWorldNormal(v.normal); float3 viewDir = normalize(WorldSpaceViewDir(v.vertex)); float3 upDir = float3(0.0, 1.0, 0.0); float3 rightDir = normalize(cross(viewDir, upDir)); upDir = cross(rightDir, viewDir); o.convertedNormal.x = dot(rightDir, normalDir); o.convertedNormal.y = dot(upDir, normalDir); return o; } float4 _Color; float _Alpha; fixed4 frag(v2f i) : COLOR0 { fixed4 output = _Color; output.a = output.a * _Alpha; clip((output.a - 0)); return output; } ENDCG } } }