]> git.tdb.fi Git - libs/gl.git/blobdiff - source/shadowmap.cpp
Add a geometry flag to ProgramBuilder
[libs/gl.git] / source / shadowmap.cpp
index dd689935055093c5b5652b9e0c7a216099265bfd..bc46f2c1b298827738a9db5c6d5140c1362edb50 100644 (file)
@@ -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);