X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fgraphics%2Fshaders%2Fcolor-visual-rounded-corner-shader.vert;h=0a6a257d1c6c492df114ad7785b0f691b7bd6e66;hb=e015f32740b0efd126f0e314ee872474e1fe1e91;hp=33216e54ebcc687855eecd3bc3ac2aceb8019b93;hpb=d6c509f6c98e046bb4de0564f2088fb61b3f00da;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/graphics/shaders/color-visual-rounded-corner-shader.vert b/dali-toolkit/internal/graphics/shaders/color-visual-rounded-corner-shader.vert index 33216e5..0a6a257 100644 --- a/dali-toolkit/internal/graphics/shaders/color-visual-rounded-corner-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/color-visual-rounded-corner-shader.vert @@ -1,7 +1,8 @@ INPUT mediump vec2 aPosition; OUTPUT mediump vec2 vPosition; OUTPUT mediump vec2 vRectSize; -OUTPUT mediump float vCornerRadius; +OUTPUT mediump vec2 vOptRectSize; +OUTPUT mediump vec4 vCornerRadius; uniform highp mat4 uMvpMatrix; uniform highp vec3 uSize; @@ -13,7 +14,7 @@ uniform mediump vec2 extraSize; 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() @@ -23,8 +24,10 @@ vec4 ComputeVertexPosition() mediump float minSize = min( visualSize.x, visualSize.y ); vCornerRadius = mix( cornerRadius * minSize, cornerRadius, cornerRadiusPolicy); vCornerRadius = min( vCornerRadius, minSize * 0.5 ); - vRectSize = visualSize / 2.0 - vCornerRadius; - vCornerRadius = max( vCornerRadius, 1.0 ); + vRectSize = visualSize / 2.0; + // 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( vPosition + anchorPoint*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); }