-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathConfigurableUi.shader
More file actions
141 lines (120 loc) · 3.88 KB
/
Copy pathConfigurableUi.shader
File metadata and controls
141 lines (120 loc) · 3.88 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ConfigurableRendering.shader" company="Supyrb">
// Copyright (c) 2018 Supyrb. All rights reserved.
// </copyright>
// <repository>
// https://github.com/supyrb/ConfigurableShaders
// </repository>
// <author>
// Johannes Deml
// public@deml.io
// </author>
// <documentation>
// Wiki: https://github.com/supyrb/ConfigurableShaders/wiki/Blending
// Blending examples: https://wiki.popcornfx.com/index.php/Particle_tutorial_smoke#Setting_up_the_billboard_renderer
// </documentation>
// --------------------------------------------------------------------------------------------------------------------
Shader "Configurable/UI"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
[SimpleToggle] _UseVertexColor("Vertex color", Float) = 1.0
[SimpleToggle] _AlphaBrightnessControl("Alpha controls Brightness", Float) = 0.0
[HeaderHelpURL(Rendering, https, github.com supyrb ConfigurableShaders wiki Rendering)]
[Enum(None,0,Alpha,1,Red,8,Green,4,Blue,2,RGB,14,RGBA,15)]_ColorMask ("Color Mask", Float) = 14
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 1
[HeaderHelpURL(Blending, https, github.com supyrb ConfigurableShaders wiki Blending)]
[Enum(UnityEngine.Rendering.BlendMode)] _BlendSrc ("Blend mode Source", Int) = 5
[Enum(UnityEngine.Rendering.BlendMode)] _BlendDst ("Blend mode Destination", Int) = 10
[HeaderHelpURL(Stencil, https, github.com supyrb ConfigurableShaders wiki Stencil)]
[EightBit] _Stencil ("Stencil ID", Int) = 0
[Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Int) = 0
[Enum(UnityEngine.Rendering.StencilOp)] _StencilOp ("Stencil Operation", Int) = 0
[Enum(UnityEngine.Rendering.StencilOp)] _StencilFail ("Stencil Fail", Int) = 0
[Enum(UnityEngine.Rendering.StencilOp)] _StencilZFail ("Stencil ZFail", Int) = 0
[EightBit] _StencilReadMask ("Stencil Read Mask", Int) = 255
[EightBit] _StencilWriteMask ("Stencil Write Mask", Int) = 255
}
CGINCLUDE
#include "UnityCG.cginc"
#include "UnityUI.cginc"
half4 _Color;
half _UseVertexColor;
half _AlphaBrightnessControl;
fixed4 _TextureSampleAdd;
float4 _ClipRect;
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f
{
float4 vertex : SV_POSITION;
half4 color : COLOR;
float2 texcoord : TEXCOORD0;
float4 worldPosition : TEXCOORD1;
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);
OUT.texcoord = IN.texcoord;
half4 color = lerp(_Color, IN.color * _Color, _UseVertexColor);
color.rgb *= lerp(1.0, color.a, _AlphaBrightnessControl);
OUT.color = color;
return OUT;
}
sampler2D _MainTex;
half4 frag(v2f IN) : SV_Target
{
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
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend [_BlendSrc] [_BlendDst]
ColorMask [_ColorMask]
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile __ UNITY_UI_ALPHACLIP
ENDCG
}
}
}