 
 
             #include "UnityCG.cginc"
-//            #pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
-  //          #pragma shader_feature _METALLICGLOSSMAP
-    //        #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
-      //      #pragma skip_variants SHADOWS_SOFT
             #pragma multi_compile_shadowcaster
 
-
-
-            struct VertexInput {
-                 float4 vertex : POSITION;
+            /*
+            struct appdata_base {
+                float4 vertex : POSITION;
+                float3 normal : NORMAL;
+                float4 texcoord : TEXCOORD0;
+                UNITY_VERTEX_INPUT_INSTANCE_ID
             };
-            struct VertexOutput {
-                float4 pos : SV_POSITION ;
+
+             struct v2f {
+                float4 pos : SV_POSITION;
             };
-
-            VertexOutput vertShadowCaster (VertexInput v) {
-                VertexOutput o = (VertexOutput)0;
-                o.pos = UnityObjectToClipPos( v.vertex );
+            */
+
+             struct v2f {
+                V2F_SHADOW_CASTER;
+            };
+    
+            v2f vertShadowCaster (appdata_base v) {
+                v2f o = (v2f)0;
+                TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
                 return o;
             }
 
-            float4 fragShadowCaster(VertexOutput i) : SV_TARGET {
+            float4 fragShadowCaster(v2f i) : SV_TARGET {
                 SHADOW_CASTER_FRAGMENT(i)
             }
 

			#include "AutoLight.cginc"
            #pragma multi_compile_fwdbase

			struct appdata
			{
				float4 vertex : POSITION;

			};

			struct v2f{
				float4 pos : SV_POSITION;
				float4 vertexW: TEXCOORD0;
				float2 uv	  : TEXCOORD1;
				float3 normal : TEXCOORD2;
