Эх сурвалжийг харах

[unity] Updated shaders to Unity 5.6.

pharan 8 жил өмнө
parent
commit
f1aa76570f

+ 1 - 1
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteLighting.cginc

@@ -26,7 +26,7 @@ struct VertexInput
 #if defined(_NORMALMAP)
 	float4 tangent : TANGENT;
 #endif // _NORMALMAP
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 
 ////////////////////////////////////////

+ 1 - 1
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteUnlit.cginc

@@ -12,7 +12,7 @@ struct VertexInput
 	float4 vertex : POSITION;
 	float4 texcoord : TEXCOORD0;
 	fixed4 color : COLOR;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 
 struct VertexOutput

+ 3 - 3
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthNormalsTexture.shader

@@ -286,7 +286,7 @@ struct appdata {
     float4 vertex : POSITION;
     float3 normal : NORMAL;
     fixed4 color : COLOR;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -327,7 +327,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -370,7 +370,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;

+ 3 - 3
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthTexture.shader

@@ -283,7 +283,7 @@ struct appdata {
     float4 vertex : POSITION;
     float3 normal : NORMAL;
     fixed4 color : COLOR;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -324,7 +324,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -367,7 +367,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;

+ 3 - 3
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraNormalsTexture.shader

@@ -286,7 +286,7 @@ struct appdata {
     float4 vertex : POSITION;
     float3 normal : NORMAL;
     fixed4 color : COLOR;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -327,7 +327,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;
@@ -370,7 +370,7 @@ struct appdata {
     float3 normal : NORMAL;
     fixed4 color : COLOR;
     float4 texcoord : TEXCOORD0;
-	UNITY_INSTANCE_ID
+	UNITY_VERTEX_INPUT_INSTANCE_ID
 };
 v2f vert( appdata v ) {
 	v2f o;

+ 0 - 2
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/ShaderShared.cginc

@@ -1,5 +1,3 @@
-// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
-
 #ifndef SHADER_SHARED_INCLUDED
 #define SHADER_SHARED_INCLUDED
 

+ 0 - 2
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteDepthNormalsTexture.shader

@@ -1,5 +1,3 @@
-// Upgrade NOTE: replaced 'UNITY_INSTANCE_ID' with 'UNITY_VERTEX_INPUT_INSTANCE_ID'
-
 Shader "Hidden/Internal-SpriteDepthNormalsTexture" {
 
 // Use this shader to render a DepthNormals texture for a camera with correct sprite normals (using camera.RenderWithShader)

+ 2 - 2
spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteVertexLighting.cginc

@@ -323,8 +323,8 @@ VertexOutput vert(VertexInput input)
 	output.pos = calculateLocalPos(input.vertex);
 	output.color = calculateVertexColor(input.color);
 	output.texcoord = float3(calculateTextureCoord(input.texcoord), 0);
-	
-	float3 viewPos = mul(UNITY_MATRIX_MV, input.vertex);
+
+	float3 viewPos = UnityObjectToViewPos(input.vertex);
 
 #if defined(PER_PIXEL_LIGHTING)
 	

+ 28 - 10
spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic-TintBlack.shader

@@ -15,6 +15,8 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
 		_StencilReadMask ("Stencil Read Mask", Float) = 255
 
 		_ColorMask ("Color Mask", Float) = 15
+
+		[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
 	}
 
 	SubShader
@@ -50,9 +52,11 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
 		CGPROGRAM
 			#pragma vertex vert
 			#pragma fragment frag
+
 			#include "UnityCG.cginc"
-			fixed4 _Color;
-			fixed4 _Black;
+			#include "UnityUI.cginc"
+
+			#pragma multi_compile __ UNITY_UI_ALPHACLIP
 
 			struct VertexInput {
 				float4 vertex   : POSITION;
@@ -60,6 +64,7 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
 				float2 texcoord : TEXCOORD0;
 				float2 uv1 : TEXCOORD1;
 				float2 uv2 : TEXCOORD2;
+				UNITY_VERTEX_INPUT_INSTANCE_ID
 			};
 
 			struct VertexOutput {
@@ -68,17 +73,24 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
 				half2 texcoord  : TEXCOORD0;
 				float2 uv1 : TEXCOORD1;
 				float2 uv2 : TEXCOORD2;
+				float4 worldPosition : TEXCOORD3;
+				UNITY_VERTEX_OUTPUT_STEREO
 			};
-			
+
+			fixed4 _Color;
+			fixed4 _Black;
+			fixed4 _TextureSampleAdd;
+			float4 _ClipRect;
 
 			VertexOutput vert (VertexInput IN) {
 				VertexOutput OUT;
-				OUT.vertex = UnityObjectToClipPos(IN.vertex);
-				OUT.texcoord = IN.texcoord;
 
-				#ifdef UNITY_HALF_TEXEL_OFFSET
-				OUT.vertex.xy += (_ScreenParams.zw-1.0) * float2(-1,1);
-				#endif
+				UNITY_SETUP_INSTANCE_ID(IN);
+				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
+
+				OUT.worldPosition = IN.vertex;
+				OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
+				OUT.texcoord = IN.texcoord;
 
 				OUT.color = IN.color * float4(_Color.rgb * _Color.a, _Color.a); // Combine a PMA version of _Color with vertexColor.
 				OUT.uv1 = IN.uv1;
@@ -90,8 +102,14 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
 
 			fixed4 frag (VertexOutput IN) : SV_Target
 			{
-				float4 texColor = tex2D(_MainTex, IN.texcoord);
-				//clip(color.a - 0.01);
+				half4 texColor = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd);
+
+				texColor.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
+
+				#ifdef UNITY_UI_ALPHACLIP
+				clip (texColor.a - 0.001);
+				#endif
+
 				return (texColor * IN.color) + float4(((1-texColor.rgb) * texColor.a * (_Black.rgb + float3(IN.uv1.r, IN.uv1.g, IN.uv2.r))), 0);
 			}
 		ENDCG

+ 29 - 6
spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic.shader

@@ -1,4 +1,4 @@
-// This is a premultiply-alpha adaptation of the built-in Unity shader "UI/Default" to allow Unity UI stencil masking.
+// This is a premultiply-alpha adaptation of the built-in Unity shader "UI/Default" in Unity 5.6.2 to allow Unity UI stencil masking.
 
 Shader "Spine/SkeletonGraphic (Premultiply Alpha)"
 {
@@ -14,6 +14,8 @@ Shader "Spine/SkeletonGraphic (Premultiply Alpha)"
 		_StencilReadMask ("Stencil Read Mask", Float) = 255
 
 		_ColorMask ("Color Mask", Float) = 15
+
+		[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
 	}
 
 	SubShader
@@ -49,25 +51,40 @@ Shader "Spine/SkeletonGraphic (Premultiply Alpha)"
 		CGPROGRAM
 			#pragma vertex vert
 			#pragma fragment frag
+			#pragma target 2.0
+
 			#include "UnityCG.cginc"
-			fixed4 _Color;
+			#include "UnityUI.cginc"
+
+			#pragma multi_compile __ UNITY_UI_ALPHACLIP
 
 			struct VertexInput {
 				float4 vertex   : POSITION;
 				float4 color    : COLOR;
 				float2 texcoord : TEXCOORD0;
+				UNITY_VERTEX_INPUT_INSTANCE_ID
 			};
 
 			struct VertexOutput {
 				float4 vertex   : SV_POSITION;
 				fixed4 color    : COLOR;
 				half2 texcoord  : TEXCOORD0;
+				float4 worldPosition : TEXCOORD1;
+				UNITY_VERTEX_OUTPUT_STEREO
 			};
-			
+
+			fixed4 _Color;
+			fixed4 _TextureSampleAdd;
+			float4 _ClipRect;
 
 			VertexOutput vert (VertexInput IN) {
 				VertexOutput OUT;
-				OUT.vertex = UnityObjectToClipPos(IN.vertex);
+
+				UNITY_SETUP_INSTANCE_ID(IN);
+				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
+
+				OUT.worldPosition = IN.vertex;
+				OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
 				OUT.texcoord = IN.texcoord;
 
 				#ifdef UNITY_HALF_TEXEL_OFFSET
@@ -82,8 +99,14 @@ Shader "Spine/SkeletonGraphic (Premultiply Alpha)"
 
 			fixed4 frag (VertexOutput IN) : SV_Target
 			{
-				half4 color = tex2D(_MainTex, IN.texcoord) * IN.color;
-				//clip(color.a - 0.01);
+				half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
+
+				color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
+
+				#ifdef UNITY_UI_ALPHACLIP
+				clip (color.a - 0.001);
+				#endif
+
 				return color;
 			}
 		ENDCG

+ 0 - 2
spine-unity/Assets/spine-unity/Shaders/Utility/Hidden-Spine-Bones.shader

@@ -1,5 +1,3 @@
-// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
-
 Shader "Hidden/Spine/Bones" {
 Properties {
 	_Color ("Color", Color) = (0.5,0.5,0.5,0.5)