X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fgraphics%2Fshaders%2Fcolor-visual-blur-edge-shader.vert;h=5306aefe88ba4fcdae9d1994058f19efeb3c19a8;hb=e015f32740b0efd126f0e314ee872474e1fe1e91;hp=e20110b0a82eaf7f75536c32b4a1b1f28e3aed27;hpb=c857a82d2a092fe17e654baf70afd454143310de;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/graphics/shaders/color-visual-blur-edge-shader.vert b/dali-toolkit/internal/graphics/shaders/color-visual-blur-edge-shader.vert index e20110b..5306aef 100644 --- a/dali-toolkit/internal/graphics/shaders/color-visual-blur-edge-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/color-visual-blur-edge-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; @@ -14,7 +15,7 @@ uniform mediump vec4 offsetSizeMode; uniform mediump vec2 origin; uniform mediump vec2 anchorPoint; uniform mediump float blurRadius; -uniform mediump float cornerRadius; +uniform mediump vec4 cornerRadius; uniform mediump float cornerRadiusPolicy; vec4 ComputeVertexPosition() @@ -24,7 +25,11 @@ 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 - vec2( vCornerRadius ); + 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 - blurRadius; + vPosition = aPosition * (visualSize + 2.0 * blurRadius); return vec4( vPosition + anchorPoint*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 ); }