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
{
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);