X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Feffects%2Fshadowmap.cpp;h=0af9327132cf88c8222b31e11d2846329219f605;hp=41a97f806b1da20480374f98fe99ac2e1071ed7a;hb=7db40551e9197142b0b6cb7fd883b325684bb8c2;hpb=54c7977189c95d9884fd75b7e32f2d68604ff05c diff --git a/source/effects/shadowmap.cpp b/source/effects/shadowmap.cpp index 41a97f80..0af93271 100644 --- a/source/effects/shadowmap.cpp +++ b/source/effects/shadowmap.cpp @@ -59,15 +59,14 @@ void ShadowMap::setup_frame(Renderer &renderer) rendered = true; renderable.setup_frame(renderer); - Camera camera; - camera.set_object_matrix(*light.get_matrix()); - camera.set_position(target); + shadow_camera.set_object_matrix(*light.get_matrix()); + shadow_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); + shadow_camera.set_orthographic(radius*2, radius*2); + shadow_camera.set_depth_clip(-radius, radius); - shadow_matrix = camera.get_object_matrix(); + shadow_matrix = shadow_camera.get_object_matrix(); shadow_matrix.scale(radius*2, radius*2, -radius*2); shadow_matrix.translate(-0.5, -0.5, depth_bias/size-0.5); shadow_matrix.invert(); @@ -77,7 +76,7 @@ void ShadowMap::setup_frame(Renderer &renderer) fbo.clear(DEPTH_BUFFER_BIT); Renderer::Push push(renderer); - renderer.set_camera(camera); + renderer.set_camera(shadow_camera); renderer.render(renderable, "shadow"); }