65ac91762f5a88b965e0b91227e0a431d59d6aa2
[platform/core/uifw/dali-core.git] / dali / internal / render / shader-source / distance-field-font.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
10   varying   mediump vec2  vTexCoord;
11
12 #ifdef USE_GRADIENT
13   uniform   lowp    vec4  uGradientColor;
14   uniform   mediump vec4  uGradientLine;
15   uniform   mediump vec2  uInvTextSize;
16
17   varying   lowp    vec4  vColor;
18 #endif
19
20   void main()
21   {
22     gl_Position = uMvpMatrix * vec4(aPosition, 1.0);
23     vTexCoord = aTexCoord;
24
25 #ifdef USE_GRADIENT
26     lowp float f = dot( aPosition.xy * uInvTextSize - uGradientLine.xy, uGradientLine.zw );
27     vColor = mix(uTextColor, uGradientColor, f);
28 #endif
29   }
30
31 </VertexShader>
32
33 <FragmentShader>
34
35 #extension GL_OES_standard_derivatives : enable
36
37   uniform mediump sampler2D sTexture;
38   uniform lowp    vec4      uColor;
39   uniform mediump float     uSmoothing;
40
41   varying mediump vec2      vTexCoord;
42
43 #ifdef USE_GRADIENT
44   varying lowp    vec4      vColor;
45 #else
46   uniform lowp    vec4      uTextColor;
47 #endif
48
49   void main()
50   {
51     // sample distance field
52     mediump float distance = texture2D(sTexture, vTexCoord).a;
53
54     mediump float smoothWidth = fwidth(distance) * 0.8;
55
56 #ifdef USE_GRADIENT
57     lowp vec4 color = clamp(vColor, 0.0, 1.0);
58 #else
59     lowp vec4 color = uTextColor;
60 #endif
61
62     // adjust fragment alpha by sampled distance
63     color.a *= smoothstep(uSmoothing - smoothWidth, uSmoothing + smoothWidth, distance);
64
65     // final color multiplied by Actor color
66     gl_FragColor = uColor * color;
67   }
68
69 </FragmentShader>