Quellcode durchsuchen

Shadows for non-lit shader.

NathanSweet vor 12 Jahren
Ursprung
Commit
0a74525261

+ 74 - 13
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
+		ZWrite Off
+		Blend One OneMinusSrcAlpha
 		Lighting Off
+
+		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
-            }
-        }
-    }
+		Pass {
+			ColorMaterial AmbientAndDiffuse
+			SetTexture [_MainTex] {
+				Combine texture * primary DOUBLE, texture * primary
+			}
+		}
+	}
 }

BIN
spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas0 material.mat


BIN
spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas1 material.mat


BIN
spine-tk2d/Assets/examples/spineboy/SpineboyAtlas Data/atlas2 material.mat


+ 74 - 13
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
+		ZWrite Off
+		Blend One OneMinusSrcAlpha
 		Lighting Off
+
+		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
-            }
-        }
-    }
+		Pass {
+			ColorMaterial AmbientAndDiffuse
+			SetTexture [_MainTex] {
+				Combine texture * primary DOUBLE, texture * primary
+			}
+		}
+	}
 }

BIN
spine-unity/Assets/examples/dragon/dragon.mat


BIN
spine-unity/Assets/examples/dragon/dragon.unity


BIN
spine-unity/Assets/examples/dragon/dragon2.mat