#include <map>
#include <set>
-#include "pipelinepass.h"
#include "renderable.h"
namespace Msp {
namespace GL {
+class Blend;
class Camera;
+class DepthTest;
class Framebuffer;
+class Lighting;
class PostProcessor;
class Renderbuffer;
class Texture2D;
class Pipeline: public Renderable
{
+public:
+ class Pass
+ {
+ private:
+ const Lighting *lighting;
+ const DepthTest *depth_test;
+ const Blend *blend;
+
+ public:
+ Pass();
+
+ void set_lighting(const Lighting *);
+ void set_depth_test(const DepthTest *);
+ void set_blend(const Blend *);
+ const Lighting *get_lighting() const { return lighting; }
+ const DepthTest *get_depth_test() const { return depth_test; }
+ const Blend *get_blend() const { return blend; }
+ };
+
private:
struct Slot
{
Slot(const Renderable *);
};
- typedef std::map<Tag, PipelinePass> PassMap;
+ typedef std::map<Tag, Pass> PassMap;
PassMap passes;
std::vector<Tag> pass_order;
void set_multisample(unsigned);
void set_camera(const Camera *);
- PipelinePass &add_pass(const Tag &tag);
- PipelinePass &get_pass(const Tag &tag);
- const PipelinePass &get_pass(const Tag &tag) const;
+ 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 &);