X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fshadowmap.h;h=c44239f2cdb73e7983a117522dc83edbe96119c5;hb=f14435e58bfa0fa697a06ba9a454bb30cd37d9d8;hp=17e17ca9ce940344713c558f8339d9c809fdef92;hpb=41339bc44d076569c680b2c24c75b30ef1254c1b;p=libs%2Fgl.git diff --git a/source/shadowmap.h b/source/shadowmap.h index 17e17ca9..c44239f2 100644 --- a/source/shadowmap.h +++ b/source/shadowmap.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2009 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef SHADOWMAP_H_ #define SHADOWMAP_H_ @@ -19,6 +12,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 +25,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(); };