Merge branch 'tizen' into new_text
[platform/core/uifw/dali-core.git] / dali / internal / render / shader-source / text-distance-field-outline-glow.txt
1 <VertexShader>
2
3 attribute mediump vec3  aPosition;
4 attribute mediump vec2  aTexCoord;
5
6 uniform   mediump mat4  uMvpMatrix;
7 uniform   lowp    vec4  uColor;
8 uniform   lowp    vec4  uTextColor;
9 uniform   lowp    vec4  uGradientColor;
10 uniform   mediump vec4  uGradientLine;
11 uniform   mediump vec2  uInvTextSize;
12
13 varying   mediump vec2  vTexCoord;
14 varying   lowp    vec4  vColor;
15
16 void main()
17 {
18   gl_Position = uMvpMatrix * vec4(aPosition, 1.0);
19   vTexCoord = aTexCoord;
20
21   lowp float f = dot( aPosition.xy * uInvTextSize - uGradientLine.xy, uGradientLine.zw );
22
23   vColor = mix(uTextColor, uGradientColor, f);
24 }
25
26 </VertexShader>
27
28 <FragmentShader>
29
30 uniform mediump sampler2D sTexture;
31 uniform lowp    vec4      uColor;
32 uniform highp   vec2      uSmoothing;
33 uniform highp   vec2      uOutline;
34 uniform lowp    vec4      uOutlineColor;
35 uniform highp   float     uGlow;
36 uniform lowp    vec4      uGlowColor;
37
38 varying mediump vec2      vTexCoord;
39 varying lowp vec4         vColor;
40
41 void main()
42 {
43   // sample distance field
44   mediump float distance = texture2D(sTexture, vTexCoord).a;
45
46   // blend fragment color between outline color and text color
47   mediump float outlineBlend = smoothstep(uOutline[0], uOutline[1], distance);
48
49   lowp vec4 clampedColor = clamp( vColor, 0.0, 1.0 );
50
51   // create blend between text color and outline color using outlineBlend
52   lowp vec4 outlineColor = vec4( uOutlineColor.rgb, uOutlineColor.a * clampedColor.a );
53   lowp vec4 color = mix(outlineColor, clampedColor, outlineBlend);
54
55   mediump float glowBlend = smoothstep(uSmoothing[0], uSmoothing[1], distance);
56
57   // blend fragment color between glow color and text color
58   lowp vec4 glowColor = vec4( uGlowColor.rgb, uGlowColor.a * clampedColor.a );
59   color = mix(glowColor, color, glowBlend);
60
61   // fade out glow between uSmoothing and uGlow
62   color.a *= smoothstep(uGlow, uSmoothing[0], distance);
63
64   // final color multiplied by Actor color
65   gl_FragColor = uColor * color;
66 }
67
68 </FragmentShader>