]> gitweb.ps.run Git - subsurface_scattering/blob - shaders/frag.glsl
render to framebufer
[subsurface_scattering] / shaders / frag.glsl
1 #version 330 core\r
2 \r
3 in vec3 FragPos;\r
4 in vec3 Normal;\r
5 \r
6 out vec4 FragColor;\r
7 \r
8 uniform vec3 objectColor;\r
9 uniform vec3 lightColor;\r
10 uniform vec3 lightPos;\r
11 uniform vec3 viewPos;\r
12 \r
13 void main()\r
14 {\r
15   vec3 norm = normalize(Normal);\r
16   vec3 lightDir = normalize(lightPos - FragPos);\r
17 \r
18   float diff = max(dot(norm, lightDir), 0.0);\r
19   vec3 diffuse = diff * lightColor;\r
20 \r
21   float ambientStrength = 0.1;\r
22   vec3 ambient = ambientStrength * lightColor;\r
23 \r
24   float specularStrength = 0.5;\r
25   vec3 viewDir = normalize(viewPos - FragPos);\r
26   vec3 reflectDir = reflect(-lightDir, norm);\r
27   float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);\r
28   vec3 specular = specularStrength * spec * lightColor;\r
29 \r
30   vec3 result = (ambient + diffuse + specular) * objectColor;\r
31   FragColor = vec4(result, 1.0f);\r
32 }\r