Shader "New Amplify Shader" { Properties { _LightShadow("LightShadows", Range(0,1)) = 0.5 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull Off Pass { CGPROGRAM #pragma target 3.0 #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "UnityPBSLighting.cginc" #include "AutoLight.cginc" #pragma multi_compile_fwdbase struct appdata { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; float4 texcoord1 : TEXCOORD1; }; struct v2f { float4 pos : SV_POSITION; float4 texcoord : TEXCOORD0; LIGHTING_COORDS(2,3) }; uniform fixed4 _Color; uniform float _LightShadow; v2f vert ( appdata v ) { v2f o; o.texcoord.xy = v.texcoord.xy; o.texcoord.zw = v.texcoord1.xy; o.pos = UnityObjectToClipPos(v.vertex); TRANSFER_VERTEX_TO_FRAGMENT(o); return o; } fixed4 frag (v2f i ) : SV_Target { return lerp(_Color, LIGHT_ATTENUATION(i), _LightShadow); } ENDCG } Pass { Tags { "LightMode"="ShadowCaster" } CGPROGRAM #pragma target 3.0 #pragma multi_compile_shadowcaster #pragma vertex MyShadowVertexProgram #pragma fragment MyShadowFragmentProgram #include "Assets\Shaders\Toon\ShadowTests\My Shadows.cginc" ENDCG } } CustomEditor "ASEMaterialInspector" } //Contents of MyShadows.cginc /* #if !defined(MY_SHADOWS_INCLUDED) #define MY_SHADOWS_INCLUDED #include "UnityCG.cginc" struct VertexData { float4 position : POSITION; float3 normal : NORMAL; }; #if defined(SHADOWS_CUBE) struct Interpolators { float4 position : SV_POSITION; float3 lightVec : TEXCOORD0; }; Interpolators MyShadowVertexProgram (VertexData v) { Interpolators i; i.position = UnityObjectToClipPos(v.position); i.lightVec = mul(unity_ObjectToWorld, v.position).xyz - _LightPositionRange.xyz; return i; } float4 MyShadowFragmentProgram (Interpolators i) : SV_TARGET { float depth = length(i.lightVec) + unity_LightShadowBias.x; depth *= _LightPositionRange.w; return UnityEncodeCubeShadowDepth(depth); } #else float4 MyShadowVertexProgram (VertexData v) : SV_POSITION { float4 position = UnityClipSpaceShadowCasterPos(v.position.xyz, v.normal); return UnityApplyLinearShadowBias(position); } half4 MyShadowFragmentProgram () : SV_TARGET { return 0; } #endif #endif */