Convert shaders in dali-demo to use shader compilation tool
[platform/core/uifw/dali-demo.git] / examples / rendering-basic-light / shaders / rendering-basic-light.frag
1 varying mediump vec3 vNormal;
2 varying mediump vec3 vFragPos;
3 uniform mediump vec3 viewPos; // custom uniform
4
5 struct Material
6 {
7   mediump vec3 ambient;
8   mediump vec3 diffuse;
9   mediump vec3 specular;
10   mediump float shininess;
11 };
12
13 struct Light
14 {
15   mediump vec3 position;
16   mediump vec3 color;
17 };
18
19 uniform Material material; // custom uniform
20 uniform Light light;       // custom uniform
21
22 void main()
23 {
24   // Ambient
25   mediump vec3 ambient = material.ambient * light.color;
26   // Diffuse
27   mediump vec3 norm = normalize(vNormal);
28   mediump vec3 lightDir = normalize(light.position - vFragPos);
29   mediump float diff = max(dot(norm, lightDir), 0.0);
30   mediump vec3 diffuse = material.diffuse * diff * light.color;
31
32   // Specular
33   mediump vec3 viewDir = normalize(viewPos - vFragPos);
34   mediump vec3 reflectDir = reflect(-lightDir, norm);
35   mediump float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess);
36   mediump vec3 specular = material.specular * spec * light.color;
37   mediump vec3 result = (ambient + diffuse + specular);
38   gl_FragColor = vec4(result, 1.0);
39 }