From e3695cd86df434014dce1622851f713a128e9821 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Fri, 10 Nov 2017 09:38:43 +0200 Subject: [PATCH] Make use of the Light's matrix in ShadowMap --- source/shadowmap.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/source/shadowmap.cpp b/source/shadowmap.cpp index 0390bdcb..51583046 100644 --- a/source/shadowmap.cpp +++ b/source/shadowmap.cpp @@ -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); -- 2.45.2