mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-07 19:26:54 +08:00
[unity] Now supporting correct CanvasGroup alpha blending at SkeletonGraphic shaders via an additional parameter CanvasGroup Compatible. Closes #1576.
This commit is contained in:
parent
033703e900
commit
ce0b4ff2b2
@ -6,6 +6,7 @@ Shader "Spine/Outline/SkeletonGraphic"
|
|||||||
{
|
{
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
[Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
|
[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)
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
[HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
|
[HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
|||||||
@ -6,6 +6,7 @@ Shader "Spine/Outline/SkeletonGraphic Tint Black"
|
|||||||
{
|
{
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
[Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
|
[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)
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
_Black ("Black Point", Color) = (0,0,0,0)
|
_Black ("Black Point", Color) = (0,0,0,0)
|
||||||
|
|||||||
@ -6,6 +6,7 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|||||||
{
|
{
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
[Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
|
[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)
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
_Black ("Black Point", Color) = (0,0,0,0)
|
_Black ("Black Point", Color) = (0,0,0,0)
|
||||||
@ -64,6 +65,7 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
||||||
|
#pragma shader_feature _ _CANVAS_GROUP_COMPATIBLE
|
||||||
#pragma vertex vert
|
#pragma vertex vert
|
||||||
#pragma fragment frag
|
#pragma fragment frag
|
||||||
|
|
||||||
@ -128,7 +130,12 @@ Shader "Spine/SkeletonGraphic Tint Black"
|
|||||||
clip (texColor.a - 0.001);
|
clip (texColor.a - 0.001);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (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);
|
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
|
||||||
|
// CanvasGroup alpha sets vertex color alpha, but does not premultiply it to rgb components.
|
||||||
|
color.rgb *= IN.color.a;
|
||||||
|
#endif
|
||||||
|
return color;
|
||||||
}
|
}
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ Shader "Spine/SkeletonGraphic"
|
|||||||
{
|
{
|
||||||
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
[Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0
|
[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)
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
[HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
|
[HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
|
||||||
@ -62,6 +63,7 @@ Shader "Spine/SkeletonGraphic"
|
|||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
||||||
|
#pragma shader_feature _ _CANVAS_GROUP_COMPATIBLE
|
||||||
#pragma vertex vert
|
#pragma vertex vert
|
||||||
#pragma fragment frag
|
#pragma fragment frag
|
||||||
#pragma target 2.0
|
#pragma target 2.0
|
||||||
@ -119,6 +121,10 @@ Shader "Spine/SkeletonGraphic"
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
half4 color = (texColor + _TextureSampleAdd) * IN.color;
|
half4 color = (texColor + _TextureSampleAdd) * IN.color;
|
||||||
|
#ifdef _CANVAS_GROUP_COMPATIBLE
|
||||||
|
// CanvasGroup alpha sets vertex color alpha, but does not premultiply it to rgb components.
|
||||||
|
color.rgb *= IN.color.a;
|
||||||
|
#endif
|
||||||
|
|
||||||
color *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
color *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user