X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpipeline.h;fp=source%2Fpipeline.h;h=c14245fa9d83b81c637c4fc530223db9477ea3a0;hb=5eb4e7ebd0dc36bc0d9817dedcc152f3bd581f70;hp=011a96bba5e37d6ca1bd056bfe1cede1c047cb03;hpb=40a0024a6466298d064697ed022465c7d3e9168e;p=libs%2Fgl.git diff --git a/source/pipeline.h b/source/pipeline.h index 011a96bb..c14245fa 100644 --- a/source/pipeline.h +++ b/source/pipeline.h @@ -23,12 +23,15 @@ public: class Pass { private: + Tag tag; const Lighting *lighting; const DepthTest *depth_test; const Blend *blend; public: - Pass(); + Pass(const Tag &); + + const Tag &get_tag() const { return tag; } void set_lighting(const Lighting *); void set_depth_test(const DepthTest *); @@ -47,10 +50,9 @@ private: Slot(const Renderable *); }; - typedef std::map PassMap; + typedef std::list PassList; - PassMap passes; - std::vector pass_order; + PassList passes; const Camera *camera; std::vector renderables; std::vector postproc; @@ -74,16 +76,14 @@ public: void set_camera(const Camera *); Pass &add_pass(const Tag &tag); - Pass &get_pass(const Tag &tag); - const Pass &get_pass(const Tag &tag) const; void add_renderable(const Renderable &); void add_renderable_for_pass(const Renderable &, const Tag &); void remove_renderable(const Renderable &); void add_postprocessor(PostProcessor &); + virtual void render(const Tag &tag = Tag()) const; virtual void render(Renderer &, const Tag &tag = Tag()) const; - void render_all() const; private: void create_fbos();