]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.h
Rework ProgramData to do less unnecessary work
[libs/gl.git] / source / lighting.h
index 794fb75a045497eae7c803b2f86aab9c3d42ce58..063bbf2b4eb5a5f81bb75a6931ba5833d603b377 100644 (file)
@@ -2,9 +2,11 @@
 #define MSP_GL_LIGHTING_H_
 
 #include <vector>
+#include <msp/geometry/angle.h>
 #include "bindable.h"
 #include "color.h"
 #include "gl.h"
+#include "programdata.h"
 
 namespace Msp {
 namespace GL {
@@ -18,6 +20,9 @@ class Lighting: public Bindable<Lighting>
 {
 private:
        Color ambient;
+       Color sky_color;
+       Vector3 sky_direction;
+       Geometry::Angle<float> horizon_angle;
        std::vector<const Light *> lights;
 
 public:
@@ -26,8 +31,14 @@ public:
        void set_ambient(const Color &);
        const Color &get_ambient() const { return ambient; }
 
+       void set_sky_color(const Color &);
+       void set_sky_direction(const Vector3 &);
+       void set_horizon_angle(const Geometry::Angle<float> &);
+
        void attach(unsigned, const Light &);
        void detach(unsigned);
+
+       void update_shader_data(ProgramData &, const Matrix &) const;
        void bind() const;
 
        static void unbind();