How could I combine these two shaders together. So pretty much what the first shader is doing is making the part of an object that is lit by a light visible, and the rest not lit by a light invisible which is what I want. Now, the problem is that when I place another object in front of the light that there is no shadow received from the object in front of the light (the shadow technically just makes that part of the object that is covered by the shadow invisible). I will have the shader code below and pictures for an example (I'm quite new to shaders, and am more used to using amplify or shader graph, but even with those I am not hugely experienced). Lighting only: Code (CSharp): Shader "Custom/LightingOnlyShader" { Properties{ _Color("Main Color", Color) = (1,1,1,1) _MainTex("Base (RGB)", 2D) = "white" {} } SubShader { Blend SrcAlpha One ZWrite Off Tags {Queue = Transparent} ColorMask RGB // Vertex lights Pass { Tags { "LightMode" = "Vertex" } Lighting On Material { Diffuse[_Color] } SetTexture[_MainTex] { constantColor[_Color] Combine texture * primary DOUBLE, texture * constant } } } Fallback "VertexLit", 2 } Shadow drawer: Code (CSharp): Shader "Custom/ShadowDrawer" { Properties { _Color("Shadow Color", Color) = (0, 0, 0, 0.6) } CGINCLUDE #include "UnityCG.cginc" #include "AutoLight.cginc" struct v2f_shadow { float4 pos : SV_POSITION; LIGHTING_COORDS(0, 1) }; half4 _Color; v2f_shadow vert_shadow(appdata_full v) { v2f_shadow o; o.pos = UnityObjectToClipPos(v.vertex); TRANSFER_VERTEX_TO_FRAGMENT(o); return o; } half4 frag_shadow(v2f_shadow IN) : SV_Target { half atten = LIGHT_ATTENUATION(IN); return half4(_Color.rgb, lerp(_Color.a, 0, atten)); } ENDCG SubShader { Tags{ "Queue" = "AlphaTest+49" } // Depth fill pass Pass { ColorMask 0 CGPROGRAM #pragma vertex vert #pragma fragment frag struct v2f { float4 pos : SV_POSITION; }; v2f vert(appdata_full v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; } half4 frag(v2f IN) : SV_Target { return (half4)0; } ENDCG } // Forward base pass Pass { Tags { "LightMode" = "ForwardBase" } Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert_shadow #pragma fragment frag_shadow #pragma multi_compile_fwdbase ENDCG } // Forward add pass Pass { Tags { "LightMode" = "ForwardAdd" } Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert_shadow #pragma fragment frag_shadow #pragma multi_compile_fwdadd_fullshadows ENDCG } } FallBack "VertexLit" }