|
@@ -8,8 +8,9 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|
|
[Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
|
|
|
[Toggle(_CANVAS_GROUP_COMPATIBLE)] _CanvasGroupCompatible("CanvasGroup Compatible", Int) = 0
|
|
|
|
|
|
- _Color ("Tint", Color) = (1,1,1,1)
|
|
|
- _Black ("Black Point", Color) = (0,0,0,0)
|
|
|
+ _Color ("Tint Color", Color) = (1,1,1,1)
|
|
|
+ _Black ("Dark Color", Color) = (0,0,0,0)
|
|
|
+ [Toggle(_DARK_COLOR_ALPHA_ADDITIVE)] _DarkColorAlphaAdditive("Additive DarkColor.A", Int) = 0
|
|
|
|
|
|
[HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
|
|
|
[HideInInspector] _Stencil ("Stencil ID", Float) = 0
|
|
@@ -66,6 +67,7 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|
|
CGPROGRAM
|
|
|
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
|
|
#pragma shader_feature _ _CANVAS_GROUP_COMPATIBLE
|
|
|
+ #pragma shader_feature _ _DARK_COLOR_ALPHA_ADDITIVE
|
|
|
#pragma vertex vert
|
|
|
#pragma fragment frag
|
|
|
|
|
@@ -87,9 +89,8 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|
|
float4 vertex : SV_POSITION;
|
|
|
fixed4 color : COLOR;
|
|
|
half2 texcoord : TEXCOORD0;
|
|
|
- float2 uv1 : TEXCOORD1;
|
|
|
- float2 uv2 : TEXCOORD2;
|
|
|
- float4 worldPosition : TEXCOORD3;
|
|
|
+ float3 darkColor : TEXCOORD1;
|
|
|
+ float4 worldPosition : TEXCOORD2;
|
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
|
};
|
|
|
|
|
@@ -108,34 +109,28 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|
|
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;
|
|
|
- OUT.uv2 = IN.uv2;
|
|
|
+ OUT.color = IN.color * _Color;
|
|
|
+ OUT.darkColor = float3(IN.uv1.r, IN.uv1.g, IN.uv2.r);
|
|
|
return OUT;
|
|
|
}
|
|
|
|
|
|
sampler2D _MainTex;
|
|
|
+ #include "../CGIncludes/Spine-Skeleton-Tint-Common.cginc"
|
|
|
|
|
|
fixed4 frag (VertexOutput IN) : SV_Target
|
|
|
{
|
|
|
half4 texColor = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd);
|
|
|
-
|
|
|
- #if defined(_STRAIGHT_ALPHA_INPUT)
|
|
|
- texColor.rgb *= texColor.a;
|
|
|
- #endif
|
|
|
-
|
|
|
texColor *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
|
|
-
|
|
|
#ifdef UNITY_UI_ALPHACLIP
|
|
|
- clip (texColor.a - 0.001);
|
|
|
+ clip(texColor.a - 0.001);
|
|
|
#endif
|
|
|
|
|
|
- half4 color = (texColor * IN.color) + float4(((1-texColor.rgb) * (_Black.rgb + float3(IN.uv1.r, IN.uv1.g, IN.uv2.r)) * texColor.a * _Color.a * IN.color.a), 0);
|
|
|
- #ifdef _CANVAS_GROUP_COMPATIBLE
|
|
|
+ float4 fragColor = fragTintedColor(texColor, _Black.rgb + IN.darkColor, IN.color, _Black.a);
|
|
|
+ #ifdef _CANVAS_GROUP_COMPATIBLE
|
|
|
// CanvasGroup alpha sets vertex color alpha, but does not premultiply it to rgb components.
|
|
|
- color.rgb *= IN.color.a;
|
|
|
- #endif
|
|
|
- return color;
|
|
|
+ fragColor.rgb *= IN.color.a;
|
|
|
+ #endif
|
|
|
+ return fragColor;
|
|
|
}
|
|
|
ENDCG
|
|
|
}
|