]> git.tdb.fi Git - libs/gl.git/blobdiff - shaderlib/phong.glsl
Support multiple lights in a single pass
[libs/gl.git] / shaderlib / phong.glsl
index 7d8dc295bc93ad95f26ef3d01143c63ec7d3ecb7..87eba5eadf38bce9ba1c6873a4dd18b2dcb2f841 100644 (file)
@@ -94,11 +94,14 @@ vec3 phong_one_light(vec3 light, vec3 normal, vec3 look, vec3 light_color, vec3
 
 vec3 phong_lighting(vec3 normal, vec3 look, vec3 surface_diffuse, vec3 surface_specular, float shininess)
 {
-       vec3 light = normalize(world_light_dir);
-
        vec3 color = phong_ambient(surface_diffuse);
-       float shadow = get_shadow_factor(0);
-       color += phong_one_light(light, normal, look, light_sources[0].color, surface_diffuse, surface_specular, shininess)*shadow;
+       for(int i=0; i<max_lights; ++i)
+               if(light_sources[i].enabled!=0)
+               {
+                       vec3 light = get_light_direction(i);
+                       float shadow = get_shadow_factor(i);
+                       color += phong_one_light(light, normal, look, light_sources[i].color, surface_diffuse, surface_specular, shininess)*shadow;
+               }
 
        if(use_emission)
                color += get_emission_color();