1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| Shader "Custom/PlaneShadow" { Properties { [Header(Base)] [NoScaleOffset]_MainTex("MainTex", 2D) = "white"{} _Color ("Color", Color) = (0,0,0,0)
[Space(10)] [Header(Shadow)] _Shadow("Offset(XYZ)", vector) = (0.2,0,0.3,0) _ShadowColor ("Shadow Color", Color) = (0,0,0,0) }
SubShader { pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc"
sampler2D _MainTex; fixed4 _Color;
struct appdata { float4 vertex :POSITION; float4 uv :TEXCOORD; };
struct v2f { float4 pos :SV_POSITION; float4 uv :TEXCOORD; };
v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv.xy = v.uv.xy; return o; }
fixed4 frag(v2f i):SV_TARGET { fixed4 c; fixed4 tex = tex2D(_MainTex, i.uv.xy); c = tex; c *= _Color;
return c; }
ENDCG }
pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc"
float4 _Shadow; fixed4 _ShadowColor;
struct appdata { float4 vertex:POSITION; };
struct v2f { float4 pos:SV_POSITION; };
v2f vert(appdata v) { v2f o; float4 worldPos = mul(unity_ObjectToWorld,v.vertex); float worldPosY = worldPos.y; worldPos.y = _Shadow.y; worldPos.xz += _Shadow.xz * (worldPosY - _Shadow.y); o.pos = mul(UNITY_MATRIX_VP, worldPos); return o; }
fixed4 frag(v2f i):SV_TARGET { return _ShadowColor; } ENDCG } }
Fallback "Legacy Shaders/VertexLit" }
|