#define MSP_GL_LIGHTING_H_
#include <vector>
+#include <msp/geometry/angle.h>
#include "bindable.h"
#include "color.h"
#include "gl.h"
{
private:
Color ambient;
+ Color sky_color;
+ Vector3 sky_direction;
+ Geometry::Angle<float> horizon_angle;
std::vector<const Light *> lights;
- ProgramData shdata;
public:
Lighting();
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();