Apply PreMultipliedAlpha on BorderlineColor
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / graphics / shaders / animated-gradient-visual-shader.frag
1 precision mediump float;
2
3 uniform mediump vec4 start_color;
4 uniform mediump vec4 end_color;
5 uniform mediump float gradient_offset;
6
7 varying mediump vec2 vTexCoord;
8 varying mediump vec2 vStart;
9 varying mediump vec2 vEnd;
10
11 float get_position(vec2 x, vec2 s, vec2 e)
12 {
13   vec2 df = e - s;
14   vec2 dx = x - s;
15
16 #ifdef GRADIENT_TYPE_LINEAR
17   return dot(dx,df)/dot(df,df);
18 #endif
19 /* GradientType::LINEAR */
20
21 #ifdef GRADIENT_TYPE_RADIAL
22   return sqrt(dot(dx,dx)/dot(df,df));
23 #endif
24 /* GradientType::RADIAL */
25 }
26
27 float recalculate(float r)
28 {
29 #ifdef SPREAD_TYPE_REFLECT
30   return 1.0 - abs(mod(r, 2.0) - 1.0);
31 #endif
32 /* SpreadType::REFLECT */
33
34 #ifdef SPREAD_TYPE_REPEAT
35   return fract(r);
36 #endif
37 /* SpreadType::REPEAT*/
38
39 #ifdef SPREAD_TYPE_CLAMP
40   return clamp(r, 0.0, 1.0);
41 #endif
42 /* SpreadType::CLAMP */
43 }
44
45 void main()
46 {
47   float r = get_position( vTexCoord, vStart, vEnd );
48   r = recalculate( r + gradient_offset );
49   vec4 color = mix( start_color, end_color, r );
50   gl_FragColor = color;
51 }