diff --git a/spine-tk2d/Assets/Spine/Shaders/Skeleton.shader b/spine-tk2d/Assets/Spine/Shaders/Skeleton.shader index 80153083a..890aea1e3 100644 --- a/spine-tk2d/Assets/Spine/Shaders/Skeleton.shader +++ b/spine-tk2d/Assets/Spine/Shaders/Skeleton.shader @@ -1,21 +1,82 @@ Shader "Spine/Skeleton" { - Properties { - _MainTex ("Texture to blend", 2D) = "black" {} - } - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 + Properties { + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + _MainTex ("Texture to blend", 2D) = "black" {} + } + // 2 texture stage GPUs + SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 Cull Off - Lighting Off ZWrite Off Blend One OneMinusSrcAlpha + Lighting Off - Pass { - ColorMaterial AmbientAndDiffuse - SetTexture [_MainTex] { - Combine texture * primary - } - } - } + Pass { + ColorMaterial AmbientAndDiffuse + SetTexture [_MainTex] { + Combine texture * primary + } + } + + Pass { + Name "Caster" + Tags { "LightMode"="ShadowCaster" } + Offset 1, 1 + + Fog { Mode Off } + ZWrite On + ZTest LEqual + Cull Off + Lighting Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + }; + + uniform float4 _MainTex_ST; + + v2f vert (appdata_base v) { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + return o; + } + + uniform sampler2D _MainTex; + uniform fixed _Cutoff; + + float4 frag (v2f i) : COLOR { + fixed4 texcol = tex2D(_MainTex, i.uv); + clip(texcol.a - _Cutoff); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } + } + // 1 texture stage GPUs + SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Cull Off + ZWrite Off + Blend One OneMinusSrcAlpha + Lighting Off + + Pass { + ColorMaterial AmbientAndDiffuse + SetTexture [_MainTex] { + Combine texture * primary DOUBLE, texture * primary + } + } + } } \ No newline at end of file diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat index 64a0249cf..5f14c2b3f 100644 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat and b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat differ diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas1 material.mat b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas1 material.mat index 59e0e4c53..2007f57a2 100644 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas1 material.mat and b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas1 material.mat differ diff --git a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas2 material.mat b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas2 material.mat index ef5e27f63..a3e1ee686 100644 Binary files a/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas2 material.mat and b/spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas2 material.mat differ diff --git a/spine-unity/Assets/Spine/Shaders/Skeleton.shader b/spine-unity/Assets/Spine/Shaders/Skeleton.shader index 80153083a..890aea1e3 100644 --- a/spine-unity/Assets/Spine/Shaders/Skeleton.shader +++ b/spine-unity/Assets/Spine/Shaders/Skeleton.shader @@ -1,21 +1,82 @@ Shader "Spine/Skeleton" { - Properties { - _MainTex ("Texture to blend", 2D) = "black" {} - } - SubShader { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 100 + Properties { + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + _MainTex ("Texture to blend", 2D) = "black" {} + } + // 2 texture stage GPUs + SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 Cull Off - Lighting Off ZWrite Off Blend One OneMinusSrcAlpha + Lighting Off - Pass { - ColorMaterial AmbientAndDiffuse - SetTexture [_MainTex] { - Combine texture * primary - } - } - } + Pass { + ColorMaterial AmbientAndDiffuse + SetTexture [_MainTex] { + Combine texture * primary + } + } + + Pass { + Name "Caster" + Tags { "LightMode"="ShadowCaster" } + Offset 1, 1 + + Fog { Mode Off } + ZWrite On + ZTest LEqual + Cull Off + Lighting Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + }; + + uniform float4 _MainTex_ST; + + v2f vert (appdata_base v) { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + return o; + } + + uniform sampler2D _MainTex; + uniform fixed _Cutoff; + + float4 frag (v2f i) : COLOR { + fixed4 texcol = tex2D(_MainTex, i.uv); + clip(texcol.a - _Cutoff); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } + } + // 1 texture stage GPUs + SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Cull Off + ZWrite Off + Blend One OneMinusSrcAlpha + Lighting Off + + Pass { + ColorMaterial AmbientAndDiffuse + SetTexture [_MainTex] { + Combine texture * primary DOUBLE, texture * primary + } + } + } } \ No newline at end of file diff --git a/spine-unity/Assets/examples/dragon/dragon.mat b/spine-unity/Assets/examples/dragon/dragon.mat index 47ebfa052..57cb7c9ed 100644 Binary files a/spine-unity/Assets/examples/dragon/dragon.mat and b/spine-unity/Assets/examples/dragon/dragon.mat differ diff --git a/spine-unity/Assets/examples/dragon/dragon.unity b/spine-unity/Assets/examples/dragon/dragon.unity index e6bf9cbae..4258bd4df 100644 Binary files a/spine-unity/Assets/examples/dragon/dragon.unity and b/spine-unity/Assets/examples/dragon/dragon.unity differ diff --git a/spine-unity/Assets/examples/dragon/dragon2.mat b/spine-unity/Assets/examples/dragon/dragon2.mat index 19a78e53a..e4431d44b 100644 Binary files a/spine-unity/Assets/examples/dragon/dragon2.mat and b/spine-unity/Assets/examples/dragon/dragon2.mat differ