[Vulkan] Builtin shaders and shaders offline compilation script
[platform/core/uifw/dali-core.git] / dali / graphics / vulkan / shaders / mesh-visual-normal-map-shader.frag
1 #version 430
2
3 layout(location=0) in vec2 vTexCoord;
4 layout(location=1) in vec3 vLightDirection;
5 layout(location=2) in vec3 vHalfVector;
6
7 layout( set = 0, binding = 1, std140 ) uniform FragData
8 {
9     vec4 uColor;
10     vec3 mixColor;
11     float opacity;
12     float preMultipliedAlpha;
13 };
14
15 layout( set = 0, binding = 2 ) uniform sampler2D sDiffuse;
16 layout( set = 0, binding = 3 ) uniform sampler2D sNormal;
17 layout( set = 0, binding = 4 ) uniform sampler2D sGloss;
18
19 layout( location = 0 ) out vec4 fragColor;
20
21 vec4 visualMixColor()
22 {
23     return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );
24 }
25 void main()
26 {
27     vec4 diffuse = texture( sDiffuse, vTexCoord );
28     vec3 normal = normalize( texture( sNormal, vTexCoord ).xyz * 2.0 - 1.0 );
29     vec4 glossMap = texture( sGloss, vTexCoord );
30     vec4 visualMixColor = visualMixColor();
31
32     float lightDiffuse = max( 0.0, dot( normal, normalize( vLightDirection ) ) );
33     lightDiffuse = lightDiffuse * 0.5 + 0.5;
34
35     float shininess = pow ( max ( dot ( normalize( vHalfVector ), normal ), 0.0 ), 16.0 );
36
37     fragColor = vec4( diffuse.rgb * uColor.rgb * visualMixColor.rgb * lightDiffuse + shininess * glossMap.rgb, diffuse.a * uColor.a * visualMixColor.a );
38 }