Fix opacity issue when we use corner radius
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / graphics / shaders / color-visual-rounded-corner-shader.frag
1 INPUT mediump vec2 vPosition;
2 INPUT mediump vec2 vRectSize;
3 INPUT mediump float vCornerRadius;
4
5 uniform lowp vec4 uColor;
6 uniform lowp vec3 mixColor;
7
8 void main()
9 {
10   OUT_COLOR = vec4(mixColor, 1.0) * uColor;
11   mediump vec2 diff = abs( vPosition ) - vRectSize;
12   mediump float dist = length( max( diff, vec2( 0.0 ) ) ) - vCornerRadius;
13   if( dist > 1.0 )
14   {
15     OUT_COLOR.a = 0.0;
16   }
17   else if( dist > -1.0 )
18   {
19     if( min( diff.x, diff.y ) < 0.0)
20     {
21       dist += min( diff.x, diff.y ) / vCornerRadius;
22     }
23     OUT_COLOR.a *= 1.0 - smoothstep( -1.0, 1.0, dist );
24   }
25 }