Fix refelctivity + refraction
[opengl.git] / texturefrag.glsl
index 24a54d56ea686420c083bf906976daae8991deed..ddd951ed11975ef3aec4ee3fbe46989004baed1c 100644 (file)
@@ -56,6 +56,13 @@ void main() {
        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);
        
        vec4 diffTex = texture(material.diffuseMap, texCoord);
@@ -63,11 +70,8 @@ void main() {
                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;
 
        vec3 viewDir = normalize(viewPos - fragPos);
@@ -80,6 +84,5 @@ void main() {
        vec4 specular = pow(max(0, dot(viewDir, reflectDir)), material.shininess) * specTex;
 
        FragColor = (ambient + diffuse + specular) * lightColor;
-
 }