]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/environmentmap.h
Make EnvironmentMap's pixel format configurable
[libs/gl.git] / source / effects / environmentmap.h
index bd6800a6f16da78b299b1cec3af3435fd678b97b..68bce7de51b0879f593091fcbd63999d6cc2cf47 100644 (file)
@@ -19,21 +19,26 @@ class Resources;
 Creates a cube map texture of the surroundings of the renderable.  This texture
 can then be used to implement effects such as reflections or refractions.
 
 Creates a cube map texture of the surroundings of the renderable.  This texture
 can then be used to implement effects such as reflections or refractions.
 
-If the EnvironmentMap is used in a Pipeline, it's worth noting that the cube
+If the EnvironmentMap is used in a Sequence, it's worth noting that the cube
 map will be prepared outside of any rendering pass.  It's recommended to use
 map will be prepared outside of any rendering pass.  It's recommended to use
-another Pipeline to define which passes should be used to render the
+another Sequence to define which passes should be used to render the
 environment.
 */
 class EnvironmentMap: public Effect
 {
 private:
 environment.
 */
 class EnvironmentMap: public Effect
 {
 private:
+       struct Face
+       {
+               Framebuffer fbo;
+               Camera camera;
+       };
+
        unsigned size;
        Renderable &environment;
        TextureCube env_tex;
        Renderbuffer depth_buf;
        unsigned size;
        Renderable &environment;
        TextureCube env_tex;
        Renderbuffer depth_buf;
-       Framebuffer fbo[6];
+       Face faces[6];
        const Sampler &sampler;
        const Sampler &sampler;
-       Camera camera;
        mutable ProgramData shdata;
        bool rendered;
        unsigned update_interval;
        mutable ProgramData shdata;
        bool rendered;
        unsigned update_interval;
@@ -41,9 +46,18 @@ private:
 
 public:
        EnvironmentMap(Resources &, unsigned size, Renderable &rend, Renderable &env);
 
 public:
        EnvironmentMap(Resources &, unsigned size, Renderable &rend, Renderable &env);
+       EnvironmentMap(Resources &, unsigned size, PixelFormat, Renderable &rend, Renderable &env);
+private:
+       void init(unsigned, PixelFormat, unsigned);
 
 
+public:
        void set_depth_clip(float, float);
        void set_depth_clip(float, float);
+
+       /** Sets the interval in frames between environment map updates.  A value of
+       0 means an update is only done when manually requested. */
        void set_update_interval(unsigned);
        void set_update_interval(unsigned);
+
+       /** Request that the environment map is updated on the next frame. */
        void queue_update();
 
        virtual void setup_frame(Renderer &);
        void queue_update();
 
        virtual void setup_frame(Renderer &);