From f1aa76570f1a09d51bbf983eab36bb91dd74fde5 Mon Sep 17 00:00:00 2001 From: pharan Date: Thu, 29 Jun 2017 17:14:55 +0800 Subject: [PATCH] [unity] Updated shaders to Unity 5.6. --- .../Sprite/CGIncludes/SpriteLighting.cginc | 2 +- .../Sprite/CGIncludes/SpriteUnlit.cginc | 2 +- .../Sprite/CameraDepthNormalsTexture.shader | 6 +-- .../Shaders/Sprite/CameraDepthTexture.shader | 6 +-- .../Sprite/CameraNormalsTexture.shader | 6 +-- .../Modules/Shaders/Sprite/ShaderShared.cginc | 2 - .../Sprite/SpriteDepthNormalsTexture.shader | 2 - .../Shaders/Sprite/SpriteVertexLighting.cginc | 4 +- .../Spine-SkeletonGraphic-TintBlack.shader | 38 ++++++++++++++----- .../Shaders/Spine-SkeletonGraphic.shader | 35 ++++++++++++++--- .../Shaders/Utility/Hidden-Spine-Bones.shader | 2 - 11 files changed, 70 insertions(+), 35 deletions(-) diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteLighting.cginc b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteLighting.cginc index f2e5f1366..018ca93cd 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteLighting.cginc +++ b/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 }; //////////////////////////////////////// diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteUnlit.cginc b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteUnlit.cginc index 0a40e5b64..4385ffcc5 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CGIncludes/SpriteUnlit.cginc +++ b/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 diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthNormalsTexture.shader b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthNormalsTexture.shader index 5de9bae59..0c80ebc3e 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthNormalsTexture.shader +++ b/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; diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthTexture.shader b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthTexture.shader index ecf76e1d8..3a7f60d55 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraDepthTexture.shader +++ b/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; diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraNormalsTexture.shader b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraNormalsTexture.shader index 2f26ff033..1cf6a7778 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/CameraNormalsTexture.shader +++ b/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; diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/ShaderShared.cginc b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/ShaderShared.cginc index 8fbd5934c..65d6f274d 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/ShaderShared.cginc +++ b/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 diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteDepthNormalsTexture.shader b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteDepthNormalsTexture.shader index 5c164e8f6..4d834a267 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteDepthNormalsTexture.shader +++ b/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) diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteVertexLighting.cginc b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteVertexLighting.cginc index e985daf2a..aae3b2771 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/SpriteVertexLighting.cginc +++ b/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) diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic-TintBlack.shader b/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic-TintBlack.shader index 0976edd75..b45e14749 100644 --- a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic-TintBlack.shader +++ b/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 diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic.shader b/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic.shader index f09740549..66dd907a2 100644 --- a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/Spine-SkeletonGraphic.shader +++ b/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 diff --git a/spine-unity/Assets/spine-unity/Shaders/Utility/Hidden-Spine-Bones.shader b/spine-unity/Assets/spine-unity/Shaders/Utility/Hidden-Spine-Bones.shader index 76887ac41..ee2045d4c 100644 --- a/spine-unity/Assets/spine-unity/Shaders/Utility/Hidden-Spine-Bones.shader +++ b/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)