- vec4 diffTex;
- if (material.hasTexture)
- diffTex = texture(material.diffuseMap, texCoord);
- else
- diffTex = vec4(1);
- vec4 diffuse = vec4(max(0, dot(lightDir, normal)) * material.diffuse, 1) * diffTex;
+ vec4 diffTex = texture(material.diffuseMap, texCoord);
+ if (!material.hasTexture)
+ diffTex = material.diffuse;
+
+ diffTex = mix(diffTex, reflection(), material.reflectivity);
+
+ diffTex = mix(diffTex, refraction(), 1 - material.opacity);
+
+ vec4 ambient = material.ambient * diffTex;
+
+ vec4 diffuse = max(0, dot(lightDir, normal)) * diffTex;