X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Flight.h;h=4532d0d42c4035c2442fbcaf2e1eea414ce6c164;hb=a275d25eccad43716c5dcf91f8bc4af2a53c0445;hp=d097d04ae435157ebb1c4ddd18cc2bd5857d37d0;hpb=615f1717f32064a7adb2b848e8646c2c3cf11f61;p=libs%2Fgl.git diff --git a/source/materials/light.h b/source/materials/light.h index d097d04a..4532d0d4 100644 --- a/source/materials/light.h +++ b/source/materials/light.h @@ -44,12 +44,14 @@ public: private: Color color; + Color transmittance; Vector4 position; Vector3 spot_dir; Vector3 direction; float spot_exp; Geometry::Angle spot_cutoff; float attenuation[3]; + unsigned generation; public: Light(); @@ -62,7 +64,12 @@ public: to shaders as light_sources[i].color. */ void set_color(const Color &); + /** Sets a multiplier on how much light actually reaches the target. Used + when modeling an atmosphere. */ + void set_transmittance(const Color &); + 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 &) { } @@ -101,9 +108,11 @@ public: void set_attenuation(float, float, float); const float *get_attenuation() const { return attenuation; } - /** Updates a ProgramData object with the uniforms for the Light. A view - matrix and light source index must be passed in. */ - void update_shader_data(ProgramData &, const Matrix &, unsigned) const; + unsigned get_generation() const { return generation; } + + /** Updates a ProgramData object with the uniforms for the Light. A light + source index must be passed in. Primarily used by Lighting. */ + void update_shader_data(ProgramData &, unsigned) const; }; } // namespace GL