X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fshadowmap.h;h=29bede317d1c120ab3e9ae961aee9173a01a4672;hp=17e17ca9ce940344713c558f8339d9c809fdef92;hb=98c810b6d2256aa65986bbde12c38917678121bb;hpb=5658c6ea1a5caf1b408366cebf785f79d650ff53 diff --git a/source/shadowmap.h b/source/shadowmap.h index 17e17ca9..29bede31 100644 --- a/source/shadowmap.h +++ b/source/shadowmap.h @@ -19,6 +19,12 @@ namespace GL { class Light; class Scene; +/** +Creates shadows on a Scene through a shadow map texture. In the preparation +phase, the scene is rendered to a depth texture from the point of view of the +lightsource. This texture is then used in the rendering phase together with +texture coordinate generation to determine whether each fragment is lit. +*/ class ShadowMap: public Effect { private: @@ -26,15 +32,23 @@ private: const Scene &scene; const Light &light; Framebuffer fbo; -public: + unsigned unit; Texture2D depth_buf; -private: Vector3 target; float radius; public: ShadowMap(unsigned, const Scene &, const Light &); + + /** Sets the ShadowMap target point and radius. The transformation matrix is + computed so that a sphere with the specified parameters will be completely + covered by the ShadowMap. */ void set_target(const Vector3 &, float); + + /** Sets the texture unit to bind the shadow map to during the rendering + phase. The default is texture unit 3. */ + void set_texture_unit(unsigned); + virtual void prepare(); virtual void cleanup(); };