]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/environmentmap.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / effects / environmentmap.h
index 0c80012501baab724ae5845aab1b786363c32996..9ef0e87d87a599fa8632a45234b8d3de6a3f0b95 100644 (file)
@@ -16,13 +16,17 @@ class Mesh;
 class Sampler;
 
 /**
-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 content renderable, for
+use in image-based lighting.  Also called a light probe.
 
-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 Sequence to define which passes should be used to render the
-environment.
+The cube map can optionally be prefiltered for varying amounts of roughness.
+An irradiance map for diffuse lighting is also created.
+
+The EnvironmentMap won't be rendered inside its own environment.  This avoids
+artifacts if one is used to create reflections on a complex object.
+
+The shader fragment common.glsl provides interfaces to access the environment
+data.
 */
 class EnvironmentMap: public Effect
 {
@@ -43,7 +47,7 @@ public:
                };
 
                unsigned size = 512;
-               PixelFormat format = RGB16F;
+               PixelFormat format = RGBA16F;
                std::string environment_name;
                unsigned roughness_levels = 5;
                Vector3 fixed_position;
@@ -81,13 +85,20 @@ protected:
        const Sampler &mip_sampler;
        ProgramData shdata;
        bool rendered = false;
+       bool in_setup_frame = false;
        unsigned update_interval = 1;
        unsigned update_delay = 0;
 
 public:
-       EnvironmentMap(unsigned size, PixelFormat, Renderable &rend, Renderable &env);
-       EnvironmentMap(unsigned size, PixelFormat, unsigned, Renderable &rend, Renderable &env);
+       EnvironmentMap(unsigned size, PixelFormat, Renderable &content, Renderable &env);
+
+       /** Creates an EnvironmentMap with prefiltering for varying amounts of
+       roughness.  Levels specifies the number of prefilter mipmap levels and must
+       be valid for the size. */
+       EnvironmentMap(unsigned size, PixelFormat, unsigned levels, Renderable &content, Renderable &env);
 
+       /** Sets a fixed position to render the environment map from.  This can be
+       useful if the content renderable does not have a model matrix. */
        void set_fixed_position(const Vector3 &);
 
        void set_depth_clip(float, float);