#version 330
struct Material {
- vec3 ambient;
- vec3 diffuse;
+ vec4 ambient;
+ vec4 diffuse;
sampler2D diffuseMap;
- vec3 specular;
+ vec4 specular;
sampler2D specularMap;
float shininess;
diffTex = texture(material.diffuseMap, texCoord);
else
diffTex = vec4(1);
- vec4 diffuse = vec4(max(0, dot(lightDir, normal)) * material.diffuse, 1) * diffTex;
+
+ vec4 ambient = material.ambient * diffTex;
+
+ vec4 diffuse = max(0, dot(lightDir, normal)) * material.diffuse * diffTex;
vec3 viewDir = normalize(viewPos - fragPos);
vec3 reflectDir = reflect(-lightDir, normal);
-
vec4 specTex;
if (material.hasSpecularMap)
specTex = texture(material.specularMap, texCoord);
else
specTex = vec4(1);
- vec4 specular = vec4(pow(max(0, dot(viewDir, reflectDir)), material.shininess) * material.specular, 1) * specTex;
+ vec4 specular = pow(max(0, dot(viewDir, reflectDir)), material.shininess) * material.specular * specTex;
- vec4 lighting = (vec4(material.ambient, 1) + diffuse + specular) * lightColor;
+ vec4 lighting = (ambient + diffuse + specular) * lightColor;
FragColor = lighting;
}