#version 330
-uniform vec3 color;
+in vec3 normal;
+in vec3 fragPos;
+uniform vec3 lightPos;
+uniform vec3 viewPos;
+uniform vec4 lightColor;
+uniform vec4 color;
out vec4 FragColor;
+
void main() {
- FragColor = vec4(color, 1);
+ float ambient = 0.1;
+ float specularStrength = 0.5;
+ vec3 lightDir = normalize(fragPos - lightPos);
+ float diffuse = max(0, dot(-normal, lightDir));
+
+ vec3 viewDir = normalize(fragPos - viewPos);
+ vec3 reflectDir = reflect(-lightDir, normal);
+ float specular = pow(max(0, dot(viewDir, reflectDir)), 128);
+
+ vec4 lighting = (ambient + diffuse + specular) * lightColor;
+
+ FragColor = lighting * color;
}
+