]> 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.
 
-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
-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:
+       struct Face
+       {
+               Framebuffer fbo;
+               Camera camera;
+       };
+
        unsigned size;
        Renderable &environment;
        TextureCube env_tex;
        Renderbuffer depth_buf;
-       Framebuffer fbo[6];
+       Face faces[6];
        const Sampler &sampler;
-       Camera camera;
        mutable ProgramData shdata;
        bool rendered;
        unsigned update_interval;
@@ -41,9 +46,18 @@ private:
 
 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);
+
+       /** 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);
+
+       /** Request that the environment map is updated on the next frame. */
        void queue_update();
 
        virtual void setup_frame(Renderer &);