- for(vector<const Renderable *>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
- (*i)->render(tag);
- for(vector<Effect *>::const_iterator i=pass.effects.end(); i--!=pass.effects.begin();)
- (*i)->cleanup();
- if(pass.lighting)
- Lighting::unbind();
+
+ for(vector<Slot>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
+ if(i->passes.empty() || i->passes.count(tag))
+ i->renderable->render(renderer, tag);
+
+ for(vector<Effect *>::const_iterator i=pass.effects.end(); i!=pass.effects.begin();)
+ (*--i)->cleanup();