X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fshadowmap.cpp;h=bc46f2c1b298827738a9db5c6d5140c1362edb50;hb=9afdf8a0813de5c4d5277b0ccbfe86051af5624e;hp=dd689935055093c5b5652b9e0c7a216099265bfd;hpb=f1b12c992db974c679d85ae6ec22cd318199d0d5;p=libs%2Fgl.git diff --git a/source/shadowmap.cpp b/source/shadowmap.cpp index dd689935..bc46f2c1 100644 --- a/source/shadowmap.cpp +++ b/source/shadowmap.cpp @@ -61,8 +61,8 @@ void ShadowMap::setup_frame() const if(rendered) return; - renderable.setup_frame(); rendered = true; + renderable.setup_frame(); const Vector4 &lpos = light.get_position(); Vector3 back; @@ -70,10 +70,10 @@ void ShadowMap::setup_frame() const { /* XXX Not really proper way to support positional lights, but good enough when the light source is far away */ - back = Vector3(lpos)-target; + back = lpos.slice<3>(0)-target; } else - back = Vector3(lpos); + back = lpos.slice<3>(0); back.normalize(); Vector3 up; @@ -85,10 +85,10 @@ void ShadowMap::setup_frame() const Vector3 right = normalize(cross(up, back)); Vector4 columns[4]; - columns[0] = Vector4(right, 0.0f); - columns[1] = Vector4(normalize(cross(back, right)), 0.0f); - columns[2] = Vector4(back, 0.0f); - columns[3] = Vector4(target, 1.0f); + columns[0] = compose(right, 0.0f); + columns[1] = compose(normalize(cross(back, right)), 0.0f); + columns[2] = compose(back, 0.0f); + columns[3] = compose(target, 1.0f); light_matrix = Matrix::from_columns(columns); view_matrix = invert(light_matrix);