]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.h
Improve documentation for a number of classes
[libs/gl.git] / source / lighting.h
index 31e75a44c66b36442778b7ac2d07e0add0a6f342..5469cef5a8df3755d5c2fbb7dd13a734855d62ca 100644 (file)
@@ -1,45 +1,61 @@
-/* $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.
+Encapsulates global lighting parameters and any number of individual light
+sources.
 */
 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:
        Lighting();
 
+       /** Sets the ambient lighting color.  Affects all surfaces in the scene. */
        void set_ambient(const Color &);
+
        const Color &get_ambient() const { return ambient; }
 
+       /** Sets the color of the sky at zenith.  Has no effect without shaders. */
+       void set_sky_color(const Color &);
+
+       /** Sets the direction of the sky.  Defaults to positive Z axis.  Has no
+       effect without shaders. */
+       void set_sky_direction(const Vector3 &);
+
+       /** Sets the angle where skylight cuts off, counted from the true horizon.
+       Has no effect without shaders. */
+       void set_horizon_angle(const Geometry::Angle<float> &);
+
+       /** Attaches a light source.  If the attachment index is greater than
+       LightUnit::get_n_units, the Lighting can't be bound for legacy mode. */
        void attach(unsigned, const Light &);
+
+       /** Detaches a light source. */
        void detach(unsigned);
+
+       /** Updates a ProgramData object with the uniforms for the Lighting,
+       including all attached light sources.  A view matrix must be passed in. */
+       void update_shader_data(ProgramData &, const Matrix &) const;
+
        void bind() const;
 
        static void unbind();