]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/shadowmap.h
Pass Tag by value, not by reference
[libs/gl.git] / source / effects / shadowmap.h
index e142fc8cafdd56023459035f53d48e73205c997b..9fc0f4497ac1f160d18062c54bcdf616f80dd99c 100644 (file)
@@ -11,10 +11,10 @@ namespace Msp {
 namespace GL {
 
 class Light;
-class Scene;
+class Resources;
 
 /**
-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.
@@ -27,17 +27,15 @@ private:
        Framebuffer fbo;
        Matrix shadow_matrix;
        Texture2D depth_buf;
-       RefPtr<Sampler> sampler;
+       const Sampler &sampler;
        Vector3 target;
        float radius;
        float depth_bias;
        mutable ProgramData shdata;
        bool rendered;
 
-       static WeakPtr<Sampler> shadow_sampler;
-
 public:
-       ShadowMap(unsigned, Renderable &, const Light &);
+       ShadowMap(Resources &, unsigned, Renderable &, 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
@@ -61,7 +59,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