21 // These are all in tangent space
26 uniform vec4 lightColor;
28 uniform Material material;
35 if (material.hasNormalMap) {
36 normal = texture(material.normalMap, texCoord).rgb;
37 normal = normalize(normal * 2 - 1);
42 vec3 lightDir = normalize(lightPos - fragPos);
45 if (material.hasTexture)
46 diffTex = texture(material.diffuseMap, texCoord);
50 vec4 ambient = material.ambient * diffTex;
52 vec4 diffuse = max(0, dot(lightDir, normal)) * material.diffuse * diffTex;
54 vec3 viewDir = normalize(viewPos - fragPos);
55 vec3 reflectDir = reflect(-lightDir, normal);
58 if (material.hasSpecularMap)
59 specTex = texture(material.specularMap, texCoord);
63 vec4 specular = pow(max(0, dot(viewDir, reflectDir)), material.shininess) * material.specular * specTex;
65 vec4 lighting = (ambient + diffuse + specular) * lightColor;