X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fgraphics%2Fshaders%2Fgradient-visual-radial-rounded-corner-shader.frag;h=68df0c52202bf436622278da89998d1884ad45cb;hp=10bf0fe544e26b78dd479d4deee71b961a834a87;hb=be75977689673c6a0467c051984f1b482f9f00b8;hpb=5f220b834bb3bfd53bf536485069addbaada1e39 diff --git a/dali-toolkit/internal/graphics/shaders/gradient-visual-radial-rounded-corner-shader.frag b/dali-toolkit/internal/graphics/shaders/gradient-visual-radial-rounded-corner-shader.frag index 10bf0fe..68df0c5 100644 --- a/dali-toolkit/internal/graphics/shaders/gradient-visual-radial-rounded-corner-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/gradient-visual-radial-rounded-corner-shader.frag @@ -4,23 +4,35 @@ uniform lowp vec3 mixColor; varying mediump vec2 vTexCoord; varying mediump vec2 vPosition; varying mediump vec2 vRectSize; -varying mediump float vCornerRadius; +varying mediump vec2 vOptRectSize; +varying mediump vec4 vCornerRadius; void main() { gl_FragColor = texture2D( sTexture, vec2( length(vTexCoord), 0.5 ) ) * vec4(mixColor, 1.0) * uColor; - mediump vec2 diff = abs( vPosition ) - vRectSize; - mediump float dist = length( max( diff, vec2( 0.0 ) ) ) - vCornerRadius; - if( dist > 1.0 ) + if(abs(vPosition.x) < vOptRectSize.x && abs(vPosition.y) < vOptRectSize.y) { - gl_FragColor = vec4( 0.0 ); + return; } - else if( dist > -1.0 ) + 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; + if(dist > 1.0) + { + gl_FragColor = vec4(0.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); } - gl_FragColor *= 1.0 - smoothstep( -1.0, 1.0, dist ); + gl_FragColor *= 1.0 - smoothstep(-1.0, 1.0, dist); } }