]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/shadowmap.cpp
Track the number of layers in Framebuffer
[libs/gl.git] / source / effects / shadowmap.cpp
index 27b695443341c860337242d5c2908d0479b502d7..9aee4907a1cd5eb174bfd30d32f0bbd38c32f388 100644 (file)
@@ -12,8 +12,8 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-ShadowMap::ShadowMap(unsigned w, unsigned h, Renderable &r, const Lighting *l):
-       Effect(r),
+ShadowMap::ShadowMap(unsigned w, unsigned h, Renderable &c, const Lighting *l):
+       Effect(c),
        width(w),
        height(h),
        lighting(l),
@@ -24,7 +24,7 @@ ShadowMap::ShadowMap(unsigned w, unsigned h, Renderable &r, const Lighting *l):
        fbo.attach(DEPTH_ATTACHMENT, depth_buf, 0);
 
        set_darkness(1.0f);
-       for(unsigned i=0; i<4; ++i)
+       for(unsigned i=0; i<6; ++i)
        {
                string base = format("shadows[%d]", i);
                shdata.uniform(base+".type", 0);
@@ -38,10 +38,10 @@ ShadowMap::ShadowMap(unsigned w, unsigned h, Renderable &r, const Lighting *l):
        shdata.uniform_array("shd_world_matrix", 1, &dummy_matrix);
 }
 
-ShadowMap::ShadowMap(unsigned s, Renderable &r, const DirectionalLight &l, Renderable &c):
-       ShadowMap(s, s, r, 0)
+ShadowMap::ShadowMap(unsigned s, Renderable &c, const DirectionalLight &l, Renderable &sc):
+       ShadowMap(s, s, c, 0)
 {
-       add_light(l, s, c);
+       add_light(l, s, sc);
 }
 
 ShadowMap::ShadowMap(unsigned w, unsigned h, Renderable &r, const Lighting &l):
@@ -183,7 +183,7 @@ void ShadowMap::setup_frame(Renderer &renderer)
                return;
 
        rendered = true;
-       renderable.setup_frame(renderer);
+       content.setup_frame(renderer);
        for(const ShadowedLight &l: lights)
                l.shadow_caster->setup_frame(renderer);
 
@@ -235,7 +235,7 @@ void ShadowMap::setup_frame(Renderer &renderer)
                renderer.set_scissor(&light.region);
                renderer.set_camera(v.camera);
 
-               renderer.render(*light.shadow_caster, (v.face>0 ? "noclear" : ""));
+               light.shadow_caster->render(renderer, (v.face>0 ? "noclear" : ""));
        }
 }
 
@@ -244,20 +244,20 @@ void ShadowMap::finish_frame()
        if(rendered)
        {
                rendered = false;
-               renderable.finish_frame();
+               content.finish_frame();
        }
 }
 
 void ShadowMap::render(Renderer &renderer, Tag tag) const
 {
-       if(!enabled_methods.count(tag))
-               return renderer.render(renderable, tag);
+       if(!is_enabled_for_method(tag))
+               return content.render(renderer, tag);
 
        Renderer::Push _push_rend(renderer);
 
        renderer.set_texture("shadow_map", &depth_buf, &sampler);
        renderer.add_shader_data(shdata);
-       renderer.render(renderable, tag);
+       content.render(renderer, tag);
 }
 
 void ShadowMap::set_debug_name(const string &name)