[Vulkan] Builtin shaders and shaders offline compilation script
[platform/core/uifw/dali-core.git] / dali / graphics / vulkan / shaders / text-visual-multi-color-text-with-style-shader.frag
1 #version 430
2
3 layout( location = 0 ) in vec2 vTexCoord;
4
5 layout( set = 1, binding = 0, std140 ) uniform FragData
6 {
7   vec4 uAtlasRect;
8   vec4 uColor;
9   vec3 mixColor;
10   float opacity;
11   float preMultipliedAlpha;
12 };
13
14 layout( set = 1, binding = 1 ) uniform sampler2D sTexture;
15 layout( set = 1, binding = 2 ) uniform sampler2D sStyle;
16
17 layout( location = 0 ) out vec4 fragColor;
18
19 vec4 visualMixColor()
20 {
21   return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );
22 }
23
24 void main()
25 {
26   vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );
27   vec4 textTexture = texture( sTexture, texCoord );
28   vec4 styleTexture = texture( sStyle, texCoord );
29   textTexture.rgb *= mix( 1.0, textTexture.a, preMultipliedAlpha );
30
31   // Draw the text as overlay above the style
32   fragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * visualMixColor();
33 }