]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/shadowmap.h
Don't use an internal depth test in ShadowMap
[libs/gl.git] / source / effects / shadowmap.h
index 5f6c5c15e3822cf80df88b3d3b2ae9378ebc5e12..67103b86f8abfe11ab56ead2ea801759c5138b1c 100644 (file)
@@ -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"
@@ -11,7 +12,6 @@ namespace Msp {
 namespace GL {
 
 class Light;
-class Resources;
 
 /**
 Creates shadows on a renderable through a shadow map texture.  In the setup
@@ -24,18 +24,20 @@ 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 &);
 
        /** Sets the ShadowMap target point and radius.  The transformation matrix is
        computed so that a sphere with the specified parameters will be completely
@@ -59,7 +61,9 @@ 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;
+
+       virtual void set_debug_name(const std::string &);
 };
 
 } // namespace GL