Shader "AwesomeTechnologies/Billboards/RenderDiffuseAtlasCTI" { Properties { [Enum(UnityEngine.Rendering.CullMode)] _Culling("Culling", Float) = 0 _MainTex ("Albedo (RGB)", 2D) = "white" {} _Cutoff("Cutoff" , Range(0,1)) = 0.5 _Color ("Color Variation", Color) = (0.9,0.5,0.0,0.1) _IsBark("Is Bark", Float) = 0 _ShowAlpha ("display name", Int) = 0 } SubShader { Cull [_Culling] Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma exclude_renderers d3d11_9x #include "UnityCG.cginc" sampler2D _MainTex; float _Cutoff; float4 _Color; float _IsBark; float _Culling; int _ShowAlpha; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float3 n : TEXCOORD1; float4 color : COLOR0; }; v2f vert(appdata_full v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = v.texcoord.xy; o.n = mul(UNITY_MATRIX_V,float4(v.normal.xyz,0)).xyz; o.color = v.color; return o; } half4 frag(v2f i, float face : VFACE) : SV_Target { half4 c = tex2D (_MainTex, i.uv); // detect bark if (_IsBark == 1) { c.a = 1; } else { clip(c.a - _Cutoff); } c.a = 1; c.rgb = lerp(c.rgb, (c.rgb + _Color.rgb) * 0.5, i.color.r * _Color.a); c.rgb = clamp(c.rgb, 0, 1); if (_ShowAlpha > 0) { c.rgb = float3(1,0,0); } return c; } ENDCG } } Fallback "VertexLit" }