]> git.tdb.fi Git - libs/gl.git/commitdiff
Make use of the Light's matrix in ShadowMap
authorMikko Rasa <tdb@tdb.fi>
Fri, 10 Nov 2017 07:38:43 +0000 (09:38 +0200)
committerMikko Rasa <tdb@tdb.fi>
Fri, 10 Nov 2017 07:38:43 +0000 (09:38 +0200)
source/shadowmap.cpp

index 0390bdcbc5baa0c56540ae485dbcedad572d2390..515830461cd02b9ec103038336e34ee7d6f11269 100644 (file)
@@ -62,13 +62,10 @@ void ShadowMap::setup_frame(Renderer &renderer)
        renderable.setup_frame(renderer);
 
        Camera camera;
-       const Vector4 &lpos = light.get_position();
-       /* XXX Not really proper way to support positional lights, but good
-       enough when the light source is far away */
-       camera.set_look_direction(lpos.w*target-lpos.slice<3>(0));
-
-       camera.set_up_direction((abs(camera.get_look_direction().z)<0.99) ? Vector3(0, 0, 1) : Vector3(0, 1, 0));
+       camera.set_object_matrix(*light.get_matrix());
        camera.set_position(target);
+       // TODO support point and spot lights with a frustum projection.
+       // Omnidirectional lights also need a cube shadow map.
        camera.set_orthographic(radius*2, radius*2);
        camera.set_depth_clip(-radius, radius);