3 attribute mediump vec3 aPosition;
4 attribute mediump vec2 aTexCoord;
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;
13 varying mediump vec2 vTexCoord;
14 varying lowp vec4 vColor;
18 gl_Position = uMvpMatrix * vec4(aPosition, 1.0);
19 vTexCoord = aTexCoord;
21 lowp float f = dot( aPosition.xy * uInvTextSize - uGradientLine.xy, uGradientLine.zw );
23 vColor = mix(uTextColor, uGradientColor, f);
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;
38 varying mediump vec2 vTexCoord;
39 varying lowp vec4 vColor;
43 // sample distance field
44 mediump float distance = texture2D(sTexture, vTexCoord).a;
46 // blend fragment color between outline color and text color
47 mediump float outlineBlend = smoothstep(uOutline[0], uOutline[1], distance);
49 lowp vec4 clampedColor = clamp( vColor, 0.0, 1.0 );
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);
55 mediump float glowBlend = smoothstep(uSmoothing[0], uSmoothing[1], distance);
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);
61 // fade out glow between uSmoothing and uGlow
62 color.a *= smoothstep(uGlow, uSmoothing[0], distance);
64 // final color multiplied by Actor color
65 gl_FragColor = uColor * color;