X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fcolor%2Fcolor-visual.cpp;h=492f20330a4f5eef68bbd2ae7a1853eaed849bf8;hb=refs%2Fchanges%2F03%2F251703%2F2;hp=68dc04ae6d606d08462a0c045385c6a554814f24;hpb=cea6f60f30c5a186b489e24fbbf3d5d53b2383d0;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/color/color-visual.cpp b/dali-toolkit/internal/visuals/color/color-visual.cpp index 68dc04a..492f203 100644 --- a/dali-toolkit/internal/visuals/color/color-visual.cpp +++ b/dali-toolkit/internal/visuals/color/color-visual.cpp @@ -31,6 +31,7 @@ #include #include #include +#include namespace Dali { @@ -41,145 +42,6 @@ namespace Toolkit namespace Internal { -namespace -{ - -const char* VERTEX_SHADER = - "INPUT mediump vec2 aPosition;\n" - - "uniform highp mat4 uMvpMatrix;\n" - "uniform highp vec3 uSize;\n" - - "//Visual size and offset\n" - "uniform mediump vec2 offset;\n" - "uniform highp vec2 size;\n" - "uniform mediump vec4 offsetSizeMode;\n" - "uniform mediump vec2 origin;\n" - "uniform mediump vec2 anchorPoint;\n" - "uniform mediump vec2 extraSize;\n" - - "vec4 ComputeVertexPosition()\n" - "{\n" - " vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize;\n" - " vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n" - " return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n" - "}\n" - - "void main()\n" - "{\n" - " gl_Position = uMvpMatrix * ComputeVertexPosition();\n" - "}\n"; - - -const char* FRAGMENT_SHADER = - "uniform lowp vec4 uColor;\n" - "uniform lowp vec3 mixColor;\n" - - "void main()\n" - "{\n" - " OUT_COLOR = vec4(mixColor, 1.0) * uColor;\n" - "}\n"; - -const char* VERTEX_SHADER_ROUNDED_CORNER = - "INPUT mediump vec2 aPosition;\n" - "OUTPUT mediump vec2 vPosition;\n" - "OUTPUT mediump vec2 vRectSize;\n" - "OUTPUT mediump float vCornerRadius;\n" - - "uniform highp mat4 uMvpMatrix;\n" - "uniform highp vec3 uSize;\n" - - "//Visual size and offset\n" - "uniform mediump vec2 offset;\n" - "uniform highp vec2 size;\n" - "uniform mediump vec2 extraSize;\n" - "uniform mediump vec4 offsetSizeMode;\n" - "uniform mediump vec2 origin;\n" - "uniform mediump vec2 anchorPoint;\n" - "uniform mediump float cornerRadius;\n" - "uniform mediump float cornerRadiusPolicy;\n" - - "vec4 ComputeVertexPosition()\n" - "{\n" - " vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize;\n" - " vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n" - " mediump float minSize = min( visualSize.x, visualSize.y );\n" - " vCornerRadius = mix( cornerRadius * minSize, cornerRadius, cornerRadiusPolicy);\n" - " vCornerRadius = min( vCornerRadius, minSize * 0.5 );\n" - " vRectSize = visualSize / 2.0 - vCornerRadius;\n" - " vPosition = aPosition* visualSize;\n" - " return vec4( vPosition + anchorPoint*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n" - "}\n" - - "void main()\n" - "{\n" - " gl_Position = uMvpMatrix * ComputeVertexPosition();\n" - "}\n"; - -//float distance = length( max( abs( position - center ), size ) - size ) - radius; -const char* FRAGMENT_SHADER_ROUNDED_CORNER = - "INPUT mediump vec2 vPosition;\n" - "INPUT mediump vec2 vRectSize;\n" - "INPUT mediump float vCornerRadius;\n" - - "uniform lowp vec4 uColor;\n" - "uniform lowp vec3 mixColor;\n" - - "void main()\n" - "{\n" - " mediump float dist = length( max( abs( vPosition ), vRectSize ) - vRectSize ) - vCornerRadius;\n" - " OUT_COLOR = vec4(mixColor, 1.0) * uColor;\n" - " OUT_COLOR.a *= 1.0 - smoothstep( -1.0, 1.0, dist );\n" - "}\n"; - -const char* VERTEX_SHADER_BLUR_EDGE = - "INPUT mediump vec2 aPosition;\n" - "OUTPUT mediump vec2 vPosition;\n" - "OUTPUT mediump vec2 vRectSize;\n" - - "uniform highp mat4 uMvpMatrix;\n" - "uniform highp vec3 uSize;\n" - - "//Visual size and offset\n" - "uniform mediump vec2 offset;\n" - "uniform highp vec2 size;\n" - "uniform mediump vec2 extraSize;\n" - "uniform mediump vec4 offsetSizeMode;\n" - "uniform mediump vec2 origin;\n" - "uniform mediump vec2 anchorPoint;\n" - "uniform mediump float blurRadius;\n" - - "vec4 ComputeVertexPosition()\n" - "{\n" - " vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize + blurRadius * 2.0;\n" - " vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n" - " vRectSize = visualSize / 2.0;\n" - " vPosition = aPosition* visualSize;\n" - " return vec4( vPosition + anchorPoint*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n" - "}\n" - - "void main()\n" - "{\n" - " gl_Position = uMvpMatrix * ComputeVertexPosition();\n" - "}\n"; - -const char* FRAGMENT_SHADER_BLUR_EDGE = - "INPUT mediump vec2 vPosition;\n" - "INPUT mediump vec2 vRectSize;\n" - - "uniform lowp vec4 uColor;\n" - "uniform lowp vec3 mixColor;\n" - "uniform mediump float blurRadius;\n" - - "void main()\n" - "{\n" - " mediump vec2 blur = 1.0 - smoothstep( vRectSize - blurRadius * 2.0, vRectSize, abs( vPosition ) );\n" - " OUT_COLOR = vec4(mixColor, 1.0) * uColor;\n" - " OUT_COLOR.a *= blur.x * blur.y;\n" - "}\n"; - -} - ColorVisualPtr ColorVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties ) { ColorVisualPtr colorVisualPtr( new ColorVisual( factoryCache ) ); @@ -363,7 +225,7 @@ Shader ColorVisual::GetShader() shader = mFactoryCache.GetShader( VisualFactoryCache::COLOR_SHADER_BLUR_EDGE ); if( !shader ) { - shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + VERTEX_SHADER_BLUR_EDGE, Dali::Shader::GetFragmentShaderPrefix() + FRAGMENT_SHADER_BLUR_EDGE ); + shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + SHADER_COLOR_VISUAL_BLUR_EDGE_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_COLOR_VISUAL_BLUR_EDGE_SHADER_FRAG.data() ); mFactoryCache.SaveShader( VisualFactoryCache::COLOR_SHADER_BLUR_EDGE, shader ); } } @@ -372,7 +234,7 @@ Shader ColorVisual::GetShader() shader = mFactoryCache.GetShader( VisualFactoryCache::COLOR_SHADER ); if( !shader ) { - shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + VERTEX_SHADER, Dali::Shader::GetFragmentShaderPrefix() + FRAGMENT_SHADER ); + shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + SHADER_COLOR_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_COLOR_VISUAL_SHADER_FRAG.data() ); mFactoryCache.SaveShader( VisualFactoryCache::COLOR_SHADER, shader ); } } @@ -381,7 +243,7 @@ Shader ColorVisual::GetShader() shader = mFactoryCache.GetShader( VisualFactoryCache::COLOR_SHADER_ROUNDED_CORNER ); if( !shader ) { - shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + VERTEX_SHADER_ROUNDED_CORNER, Dali::Shader::GetFragmentShaderPrefix() + FRAGMENT_SHADER_ROUNDED_CORNER ); + shader = Shader::New( Dali::Shader::GetVertexShaderPrefix() + SHADER_COLOR_VISUAL_ROUNDED_CORNER_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_COLOR_VISUAL_ROUNDED_CORNER_SHADER_FRAG.data() ); mFactoryCache.SaveShader( VisualFactoryCache::COLOR_SHADER_ROUNDED_CORNER, shader ); } }