]> git.tdb.fi Git - libs/gl.git/blobdiff - source/shadowmap.h
Automatically determine texture units for effects
[libs/gl.git] / source / shadowmap.h
index 986e0d96d039936b56758495da9a84954c007074..57adf298fd27271bff0e8f4bb80ea2f916c7fba0 100644 (file)
@@ -25,12 +25,15 @@ private:
        unsigned size;
        const Light &light;
        mutable Framebuffer fbo;
-       unsigned unit;
+       mutable Matrix light_matrix;
+       mutable Matrix view_matrix;
+       mutable Matrix shadow_matrix;
        Texture2D depth_buf;
        Vector3 target;
        float radius;
        float depth_bias;
-       ProgramData shdata;
+       mutable ProgramData shdata;
+       mutable bool rendered;
 
 public:
        ShadowMap(unsigned, const Renderable &, const Light &);
@@ -51,10 +54,8 @@ public:
        thin objects from casting shadows on nearby sufraces. */
        void set_depth_bias(float);
 
-       /** Sets the texture unit to bind the shadow map to during the rendering
-       phase.  Provided to shaders through the shadow and shadow_unit uniforms.
-       The default is texture unit 3. */
-       void set_texture_unit(unsigned);
+       virtual void setup_frame() const;
+       virtual void finish_frame() const;
 
        virtual void render(Renderer &, const Tag &) const;
 };