]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.h
Support hemispherical skylight in ProgramBuilder
[libs/gl.git] / source / lighting.h
index 7c7dc454c14f027e1fed3c17f62ec5b6b9b3c608..063bbf2b4eb5a5f81bb75a6931ba5833d603b377 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_GL_LIGHTING_H_
 
 #include <vector>
+#include <msp/geometry/angle.h>
 #include "bindable.h"
 #include "color.h"
 #include "gl.h"
@@ -19,8 +20,10 @@ class Lighting: public Bindable<Lighting>
 {
 private:
        Color ambient;
+       Color sky_color;
+       Vector3 sky_direction;
+       Geometry::Angle<float> horizon_angle;
        std::vector<const Light *> lights;
-       ProgramData shdata;
 
 public:
        Lighting();
@@ -28,11 +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(const Matrix &);
-       const ProgramData &get_shader_data() const { return shdata; }
+       void update_shader_data(ProgramData &, const Matrix &) const;
        void bind() const;
 
        static void unbind();