]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/light.cpp
Modify sunlight color based on transmittance of the atmosphere
[libs/gl.git] / source / materials / light.cpp
index d84be2ac8dcc1a8542212df87c6f8063aebbaed2..2825b81eaa745f70b9d5aa4ed6009e499c4dce5c 100644 (file)
@@ -12,6 +12,7 @@ namespace GL {
 
 Light::Light():
        color(1),
+       transmittance(1),
        position(0, 0, 1, 0),
        spot_dir(0, 0, -1),
        spot_exp(0),
@@ -44,6 +45,11 @@ void Light::set_color(const Color &c)
        color = c;
 }
 
+void Light::set_transmittance(const Color &t)
+{
+       transmittance = t;
+}
+
 void Light::set_matrix(const Matrix &m)
 {
        Placeable::set_matrix(m);
@@ -101,7 +107,7 @@ void Light::update_shader_data(ProgramData &shdata, const Matrix &view_matrix, u
 {
        string base = format("light_sources[%d]", i);
        shdata.uniform(base+".position", view_matrix*position);
-       shdata.uniform(base+".color", color.r, color.g, color.b);
+       shdata.uniform(base+".color", color.r*transmittance.r, color.g*transmittance.g, color.b*transmittance.b);
 }