-#ifndef SHADOWMAP_H_
-#define SHADOWMAP_H_
+#ifndef MSP_GL_SHADOWMAP_H_
+#define MSP_GL_SHADOWMAP_H_
#include "effect.h"
#include "framebuffer.h"
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 &);
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;
};