- vec3 lightDir = normalize(fragPos - lightPos);
- vec3 diffuse = max(0, dot(-normal, lightDir)) * material.diffuse;
+ vec3 normal = texture(material.normalMap, texCoord).rgb;
+ normal = normalize(normal * 2 - 1);
+ if (!material.hasNormalMap)
+ normal = defNormal;
+
+ vec4 ambient = material.ambient * texture(material.diffuseMap, texCoord);
+ if (!material.hasTexture)
+ ambient = material.ambient;
+
+ ambient = mix(ambient, reflection(), material.reflectivity);
+ ambient = mix(ambient, refraction(), 1 - material.opacity);
+
+ vec3 lightDir = normalize(lightPos - fragPos);