Merge "[AT-SPI] Add SetTextContents, InsertText and DeleteText" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / graphics / shaders / gradient-visual-bounding-box-rounded-corner-shader.vert
index 79724e7..bd08a63 100644 (file)
@@ -5,7 +5,8 @@ uniform mediump mat3 uAlignmentMatrix;
 varying mediump vec2 vTexCoord;
 varying mediump vec2 vPosition;
 varying mediump vec2 vRectSize;
-varying mediump float vCornerRadius;
+varying mediump vec2 vOptRectSize;
+varying mediump vec4 vCornerRadius;
 
 //Visual size and offset
 uniform mediump vec2 offset;
@@ -13,19 +14,22 @@ uniform highp vec2 size;
 uniform mediump vec4 offsetSizeMode;
 uniform mediump vec2 origin;
 uniform mediump vec2 anchorPoint;
-uniform mediump float cornerRadius;
+uniform mediump vec4 cornerRadius;
 uniform mediump float cornerRadiusPolicy;
 
 vec4 ComputeVertexPosition()
 {
-  vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );
-  vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);
-  mediump float minSize = min( visualSize.x, visualSize.y );
-  vCornerRadius = mix( cornerRadius * minSize, cornerRadius, cornerRadiusPolicy);
-  vCornerRadius = min( vCornerRadius, minSize * 0.5 );
-  vRectSize = visualSize * 0.5 - vCornerRadius;
+  vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw);
+  vec2 visualOffset = mix(offset, offset/uSize.xy, offsetSizeMode.xy);
+  mediump float minSize = min(visualSize.x, visualSize.y);
+  vCornerRadius = mix(cornerRadius * minSize, cornerRadius, cornerRadiusPolicy);
+  vCornerRadius = min(vCornerRadius, minSize * 0.5);
+  vRectSize = visualSize * 0.5;
+  // Optimize fragment shader
+  mediump float maxRadius = max(max(vCornerRadius.x, vCornerRadius.y), max(vCornerRadius.z, vCornerRadius.w));
+  vOptRectSize = vRectSize - 0.2929 * maxRadius - 1.0;
   vPosition = aPosition * visualSize;
-  return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );
+  return vec4((aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0);
 }
 
 void main()