-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2008 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_LIGHTING_H_
#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 {
class Light;
-enum
-{
- LIGHTING = GL_LIGHTING
-};
-
/**
Encapsulates global lighting parameters and a number of individual lights.
*/
-class Lighting
+class Lighting: public Bindable<Lighting>
{
private:
Color ambient;
+ Color sky_color;
+ Vector3 sky_direction;
+ Geometry::Angle<float> horizon_angle;
std::vector<const Light *> lights;
- static const Lighting *current;
-
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(ProgramData &, const Matrix &) const;
void bind() const;
static void unbind();