1 precision mediump float;
3 uniform mediump vec4 start_color;
4 uniform mediump vec4 end_color;
5 uniform mediump float gradient_offset;
7 varying mediump vec2 vTexCoord;
8 varying mediump vec2 vStart;
9 varying mediump vec2 vEnd;
11 float get_position(vec2 x, vec2 s, vec2 e)
16 #ifdef GRADIENT_TYPE_LINEAR
17 return dot(dx,df)/dot(df,df);
19 /* GradientType::LINEAR */
21 #ifdef GRADIENT_TYPE_RADIAL
22 return sqrt(dot(dx,dx)/dot(df,df));
24 /* GradientType::RADIAL */
27 float recalculate(float r)
29 #ifdef SPREAD_TYPE_REFLECT
30 return 1.0 - abs(mod(r, 2.0) - 1.0);
32 /* SpreadType::REFLECT */
34 #ifdef SPREAD_TYPE_REPEAT
37 /* SpreadType::REPEAT*/
39 #ifdef SPREAD_TYPE_CLAMP
40 return clamp(r, 0.0, 1.0);
42 /* SpreadType::CLAMP */
47 float r = get_position( vTexCoord, vStart, vEnd );
48 r = recalculate( r + gradient_offset );
49 vec4 color = mix( start_color, end_color, r );