X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fgraphics%2Fshaders%2Fimage-visual-rounded-corner-shader.frag;h=6eacb9382c868c1e2fdc3f3e5cd03c64875454d0;hb=3907251e7ae113572a758325504a1211dbcb4038;hp=0e2c1d85902537eef801ec3eb8f2ff659be3008a;hpb=41134cc67674fd29f22f0badcd8a757332ba669d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-rounded-corner-shader.frag b/dali-toolkit/internal/graphics/shaders/image-visual-rounded-corner-shader.frag index 0e2c1d8..6eacb93 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-rounded-corner-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/image-visual-rounded-corner-shader.frag @@ -1,7 +1,8 @@ INPUT mediump vec2 vTexCoord; INPUT mediump vec2 vPosition; INPUT mediump vec2 vRectSize; -INPUT mediump float vCornerRadius; +INPUT mediump vec2 vOptRectSize; +INPUT mediump vec4 vCornerRadius; uniform sampler2D sTexture; uniform lowp vec4 uColor; @@ -10,23 +11,35 @@ uniform lowp float preMultipliedAlpha; void main() { - mediump vec2 diff = abs( vPosition ) - vRectSize; - mediump float dist = length( max( diff, vec2( 0.0 ) ) ) - vCornerRadius; + if(abs(vPosition.x) < vOptRectSize.x && abs(vPosition.y) < vOptRectSize.y) + { + OUT_COLOR = TEXTURE(sTexture, vTexCoord) * uColor * vec4(mixColor, 1.0); + return; + } + mediump float radius = + mix( + mix(vCornerRadius.x, vCornerRadius.y, sign(vPosition.x) * 0.5 + 0.5), + mix(vCornerRadius.w, vCornerRadius.z, sign(vPosition.x) * 0.5 + 0.5), + sign(vPosition.y) * 0.5 + 0.5 + ); + + mediump vec2 diff = abs(vPosition) - vRectSize + radius; + mediump float dist = length(max(diff, vec2(0.0))) - radius; mediump float opacity = 1.0; - if( dist > 1.0 ) + if(dist > 1.0) { opacity = 0.0; } - else if( dist > -1.0 ) + else if(dist > -1.0) { - if( min( diff.x, diff.y ) < 0.0 ) + if(min(diff.x, diff.y) < 0.0) { - dist += min( diff.x, diff.y ) / vCornerRadius; + dist += min(diff.x, diff.y) / max(radius, 1.0); } - opacity = 1.0 - smoothstep( -1.0, 1.0, dist ); + opacity = 1.0 - smoothstep(-1.0, 1.0, dist); } - OUT_COLOR = TEXTURE( sTexture, vTexCoord ) * uColor * vec4( mixColor, 1.0 ); + OUT_COLOR = TEXTURE(sTexture, vTexCoord) * uColor * vec4(mixColor, 1.0); OUT_COLOR.a *= opacity; - OUT_COLOR.rgb *= mix( 1.0, opacity, preMultipliedAlpha ); + OUT_COLOR.rgb *= mix(1.0, opacity, preMultipliedAlpha); }