X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Feffects%2Fshadowmap.h;h=a3c3a8f2f6335fb63a460887d25055a4e8e32943;hb=fe2fc291a4fc618425c64112c9ffd3519f0b8a3e;hp=7dab9eb965a6e9266156437741bc40854133c37e;hpb=9a63244c1342337915c4610401a24c09fa72cc3d;p=libs%2Fgl.git diff --git a/source/effects/shadowmap.h b/source/effects/shadowmap.h index 7dab9eb9..a3c3a8f2 100644 --- a/source/effects/shadowmap.h +++ b/source/effects/shadowmap.h @@ -1,6 +1,7 @@ #ifndef MSP_GL_SHADOWMAP_H_ #define MSP_GL_SHADOWMAP_H_ +#include "camera.h" #include "effect.h" #include "framebuffer.h" #include "programdata.h" @@ -12,10 +13,9 @@ namespace GL { class Light; class Resources; -class Scene; /** -Creates shadows on a Scene through a shadow map texture. In the preparation +Creates shadows on a renderable through a shadow map texture. In the setup 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. @@ -25,19 +25,25 @@ class ShadowMap: public Effect private: unsigned size; const Light &light; + Renderable &shadow_caster; Framebuffer fbo; + Camera shadow_camera; Matrix shadow_matrix; Texture2D depth_buf; const Sampler &sampler; Vector3 target; float radius; float depth_bias; - mutable ProgramData shdata; + ProgramData shdata; bool rendered; public: - ShadowMap(Resources &, unsigned, Renderable &, const Light &); + ShadowMap(unsigned, Renderable &, const Light &, Renderable &); + DEPRECATED ShadowMap(unsigned, Renderable &, const Light &); +private: + void init(unsigned); +public: /** 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. */ @@ -60,7 +66,7 @@ public: virtual void setup_frame(Renderer &); virtual void finish_frame(); - virtual void render(Renderer &, const Tag & = Tag()) const; + virtual void render(Renderer &, Tag = Tag()) const; }; } // namespace GL