summaryrefslogtreecommitdiff
path: root/Assets/Resources/UIEffectSprite.cginc
blob: 77a69e30ac4a75a4c23f1347555b809709cb189a (plain)
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
#ifndef UI_EFFECT_SPRITE_INCLUDED
#define UI_EFFECT_SPRITE_INCLUDED

fixed4 _Color;
fixed4 _TextureSampleAdd;
float4 _ClipRect;
sampler2D _MainTex;
float4 _MainTex_TexelSize;

struct appdata_t
{
	float4 vertex   : POSITION;
	float4 color    : COLOR;
	float2 texcoord : TEXCOORD0;
#if EX
	float2	uvMask	: TEXCOORD1;
#endif
	UNITY_VERTEX_INPUT_INSTANCE_ID
};

struct v2f
{
	float4 vertex   : SV_POSITION;
	fixed4 color    : COLOR;
	half2 texcoord  : TEXCOORD0;
	float4 worldPosition : TEXCOORD1;
#if UI_DISSOLVE || UI_TRANSITION
	half3	eParam	: TEXCOORD2;
#elif UI_SHINY
	half2	eParam	: TEXCOORD2;
#else
	half	eParam	: TEXCOORD2;
#endif
#if EX
	half4	uvMask	: TEXCOORD3;
#endif
	UNITY_VERTEX_OUTPUT_STEREO
};

v2f vert(appdata_t IN)
{
	v2f OUT;
	UNITY_SETUP_INSTANCE_ID(IN);
	UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
	OUT.worldPosition = IN.vertex;
	OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);

	#if UI_EFFECT
	OUT.texcoord = UnpackToVec2(IN.texcoord.x) * 2 - 0.5;
	#else
	OUT.texcoord = UnpackToVec2(IN.texcoord.x);
	#endif
	
	#ifdef UNITY_HALF_TEXEL_OFFSET
	OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
	#endif

	OUT.color = IN.color * _Color;

	#if UI_DISSOLVE || UI_TRANSITION
	OUT.eParam = UnpackToVec3(IN.texcoord.y);
	#elif UI_SHINY
	OUT.eParam = UnpackToVec2(IN.texcoord.y);
	#else
	OUT.eParam = IN.texcoord.y;
	#endif

	#if EX
	OUT.uvMask = half4(UnpackToVec2(IN.uvMask.x), UnpackToVec2(IN.uvMask.y));
	#endif

	return OUT;
}

#endif // UI_EFFECT_SPRITE_INCLUDED