]> git.tdb.fi Git - libs/gl.git/blobdiff - source/pipeline.h
Associate camera and setup/finish_frame calls with View
[libs/gl.git] / source / pipeline.h
index d07e643176666f861e55dcb75a65f0de28b73021..9272f5875add3d1605fc6cd33657997552d95fd9 100644 (file)
@@ -6,6 +6,7 @@
 #include "framebuffer.h"
 #include "renderable.h"
 #include "renderbuffer.h"
 #include "framebuffer.h"
 #include "renderable.h"
 #include "renderbuffer.h"
+#include "rendertarget.h"
 #include "texture2d.h"
 
 namespace Msp {
 #include "texture2d.h"
 
 namespace Msp {
@@ -19,21 +20,12 @@ class Lighting;
 class PostProcessor;
 
 /**
 class PostProcessor;
 
 /**
-Encapsulates all of the information used to produce a complete image in the
-framebuffer.  This is the highest level rendering class.
+Top-level content class.  Typically a Pipeline is used as the content
+Renderable for a View or effects such as ShadowMap or EnvironmentMap.
 
 A Pipeline contains a sequence of passes.  Each pass has a Renderable along
 with Lighting, Clipping, DepthTest and Blend states.  Scenes can be used to
 
 A Pipeline contains a sequence of passes.  Each pass has a Renderable along
 with Lighting, Clipping, DepthTest and Blend states.  Scenes can be used to
-organize Renderables within a pass.  A Camera can be specified for the entire
-Pipeline.
-
-A Pipeline is also a Renderable itself.  It will only respond to the default
-pass.  The Renderables within the Pipeline will be invoked with whatever tags
-were specified when adding them.
-
-A Pipeline's render method should normally be called without a Renderer; it
-will create one itself, using the camera specified for the Pipeline.  If a
-Renderer is passed, its camera will be used instead.
+organize Renderables within a pass.
 
 PostProcessors can be applied after all of the passes in the Pipeline have been
 rendered.  Framebuffer objects are automatically used to pass render results to
 
 PostProcessors can be applied after all of the passes in the Pipeline have been
 rendered.  Framebuffer objects are automatically used to pass render results to
@@ -78,24 +70,6 @@ private:
                Slot(const Renderable *);
        };
 
                Slot(const Renderable *);
        };
 
-       struct RenderTarget
-       {
-               Framebuffer fbo;
-               Texture2D color;
-               Texture2D depth;
-
-               RenderTarget(unsigned, unsigned, PixelFormat);
-       };
-
-       struct MultisampleTarget
-       {
-               Framebuffer fbo;
-               Renderbuffer color;
-               Renderbuffer depth;
-
-               MultisampleTarget(unsigned, unsigned, unsigned, PixelFormat);
-       };
-
        typedef std::list<Pass> PassList;
 
        PassList passes;
        typedef std::list<Pass> PassList;
 
        PassList passes;
@@ -107,8 +81,7 @@ private:
        bool hdr;
        unsigned samples;
        RenderTarget *target[2];
        bool hdr;
        unsigned samples;
        RenderTarget *target[2];
-       MultisampleTarget *target_ms;
-       mutable bool in_frame;
+       RenderTarget *target_ms;
 
 public:
        Pipeline(unsigned, unsigned, bool = false);
 
 public:
        Pipeline(unsigned, unsigned, bool = false);
@@ -116,9 +89,9 @@ public:
 
        void set_hdr(bool);
        void set_multisample(unsigned);
 
        void set_hdr(bool);
        void set_multisample(unsigned);
-       void set_camera(const Camera *);
 
        // Deprecated
 
        // Deprecated
+       void set_camera(const Camera *);
        Pass &add_pass(const Tag &tag);
        void add_renderable(const Renderable &);
        void add_renderable_for_pass(const Renderable &, const Tag &);
        Pass &add_pass(const Tag &tag);
        void add_renderable(const Renderable &);
        void add_renderable_for_pass(const Renderable &, const Tag &);