]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.h
Refresh lighting and culling uniforms if the camera changes in pop_state
[libs/gl.git] / source / lighting.h
index 5469cef5a8df3755d5c2fbb7dd13a734855d62ca..931d06d3daf8d2e72aede2af04452b0d0a2e740a 100644 (file)
@@ -24,6 +24,8 @@ private:
        Color sky_color;
        Vector3 sky_direction;
        Geometry::Angle<float> horizon_angle;
+       Color fog_color;
+       float fog_density;
        std::vector<const Light *> lights;
 
 public:
@@ -45,6 +47,16 @@ public:
        Has no effect without shaders. */
        void set_horizon_angle(const Geometry::Angle<float> &);
 
+       /** Sets the fog color, which is blended into distant surfaces. */
+       void set_fog_color(const Color &);
+
+       /** Sets the density of the fog.  Zero means no fog. */
+       void set_fog_density(float);
+
+       /** Sets the density of the fog so that the blending factor at the given
+       distance is 50%. */
+       void set_fog_half_distance(float);
+
        /** Attaches a light source.  If the attachment index is greater than
        LightUnit::get_n_units, the Lighting can't be bound for legacy mode. */
        void attach(unsigned, const Light &);
@@ -52,6 +64,10 @@ public:
        /** Detaches a light source. */
        void detach(unsigned);
 
+       /** Returns an attached light.  If no light is attached at that index, null
+       is returned. */
+       const Light *get_attached_light(unsigned) const;
+
        /** Updates a ProgramData object with the uniforms for the Lighting,
        including all attached light sources.  A view matrix must be passed in. */
        void update_shader_data(ProgramData &, const Matrix &) const;