三国卡牌客户端基础资源仓库
hch
8 天以前 e35c8e096041b3cf97d91677bf8d6c4587223a9b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef SPRITE_UNLIT_INCLUDED
#define SPRITE_UNLIT_INCLUDED
 
#include "ShaderShared.cginc"
#if defined(_ALPHAPREMULTIPLY_ON)
    #undef _STRAIGHT_ALPHA_INPUT
#else
    #define _STRAIGHT_ALPHA_INPUT
#endif
#include "../../CGIncludes/Spine-Skeleton-Tint-Common.cginc"
 
////////////////////////////////////////
// Vertex structs
//
 
struct VertexInput
{
    float4 vertex : POSITION;
    float4 texcoord : TEXCOORD0;
    fixed4 color : COLOR;
#if defined(_TINT_BLACK_ON)
    float2 tintBlackRG : TEXCOORD1;
    float2 tintBlackB : TEXCOORD2;
#endif
    UNITY_VERTEX_INPUT_INSTANCE_ID
};
 
struct VertexOutput
{
    float4 pos : SV_POSITION;
    float2 texcoord : TEXCOORD0;
    fixed4 color : COLOR;
#if defined(_FOG)
    UNITY_FOG_COORDS(1)
#endif // _FOG
 
#if defined(_TINT_BLACK_ON)
    float3 darkColor : TEXCOORD2;
#endif
 
    UNITY_VERTEX_OUTPUT_STEREO
};
 
////////////////////////////////////////
// Vertex program
//
 
VertexOutput vert(VertexInput input)
{
    VertexOutput output;
 
    UNITY_SETUP_INSTANCE_ID(input);
    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
 
    output.pos = calculateLocalPos(input.vertex);
    output.texcoord = calculateTextureCoord(input.texcoord);
    output.color = calculateVertexColor(input.color);
#if defined(_TINT_BLACK_ON)
    output.darkColor = GammaToTargetSpace(half3(input.tintBlackRG.r, input.tintBlackRG.g, input.tintBlackB.r))
        + (_Black.rgb * input.color.a);
#endif
 
#if defined(_FOG)
    UNITY_TRANSFER_FOG(output,output.pos);
#endif // _FOG
 
    return output;
}
 
////////////////////////////////////////
// Fragment program
//
fixed4 frag(VertexOutput input) : SV_Target
{
    fixed4 texureColor = calculateTexturePixel(input.texcoord.xy);
    RETURN_UNLIT_IF_ADDITIVE_SLOT_TINT(texureColor, input.color, input.darkColor, _Color.a, _Black.a) // shall be called before ALPHA_CLIP
    ALPHA_CLIP(texureColor, input.color)
 
#if defined(_TINT_BLACK_ON)
    texureColor = fragTintedColor(texureColor, input.darkColor, input.color, _Color.a, _Black.a);
#endif
 
    fixed4 pixel = calculatePixel(texureColor, input.color);
 
    COLORISE(pixel)
    APPLY_FOG(pixel, input)
 
    return pixel;
}
 
#endif // SPRITE_UNLIT_INCLUDED