]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/light.h
Modify sunlight color based on transmittance of the atmosphere
[libs/gl.git] / source / materials / light.h
index e94f3c5aca8b333c5a73f6c31082cd2d0afa34a3..d4b66077928188076b44974d6eaf6c36d4e2ccc2 100644 (file)
@@ -21,7 +21,7 @@ is not 180 degrees, it's a spotlight.  Otherwise it's an omnidirectional point
 light.
 
 Lights are usually grouped with a Lighting object, which can be used in a
-Pipeline::Pass.
+Sequence::Step.
 
 Lights do not cast shadows by themselves.  See ShadowMap for that.
 */
@@ -35,17 +35,16 @@ public:
 
        private:
                void attenuation(float, float, float);
-               void diffuse(float, float, float);
+               void color(float, float, float);
                void position(float, float, float, float);
-               void specular(float, float, float);
                void spot_direction(float, float, float);
                void spot_exponent(float);
                void spot_cutoff(float);
        };
 
 private:
-       Color diffuse;
-       Color specular;
+       Color color;
+       Color transmittance;
        Vector4 position;
        Vector3 spot_dir;
        Vector3 direction;
@@ -60,16 +59,21 @@ private:
        void update_matrix();
 
 public:
-       /** Sets the diffuse (direction-independent) color of the Light.  Provided
-       to shaders with the name light_sources[i].diffuse. */
-       void set_diffuse(const Color &c);
+       /** Sets the color of the Light.  Provided
+       to shaders as light_sources[i].color. */
+       void set_color(const Color &);
 
-       /** Sets the specular (direction-dependent) color of the Light.  Provided to
-       shaders with the name light_sources[i].specular. */
-       void set_specular(const Color &c);
+       /** Sets a multiplier on how much light actually reaches the target.  Used
+       when modeling an atmosphere. */
+       void set_transmittance(const Color &);
 
-       const Color &get_diffuse() const { return diffuse; }
-       const Color &get_specular() const { return specular; }
+       const Color &get_color() const { return color; }
+       const Color &get_transmittance() const { return transmittance; }
+
+       DEPRECATED void set_diffuse(const Color &c) { set_color(c); }
+       DEPRECATED void set_specular(const Color &) { }
+       DEPRECATED const Color &get_diffuse() const { return color; }
+       DEPRECATED const Color &get_specular() const { return color; }
 
        /** Sets the postion and orientation of the Light from a matrix.  Negative Z
        axis is used as the spot direction, other axes are ignored. */