]> git.tdb.fi Git - libs/gl.git/blobdiff - source/light.cpp
Create ProgramData for materials and lights
[libs/gl.git] / source / light.cpp
index d4b45aaf82cc66371c4a73f11174eaf7356af611..11f4826cd74748acde5b1bfba24d8efd32ea3203 100644 (file)
@@ -1,7 +1,10 @@
 #include <stdexcept>
+#include <msp/strings/format.h>
 #include "light.h"
 #include "lightunit.h"
+#include "matrix.h"
 #include "misc.h"
+#include "programdata.h"
 
 using namespace std;
 
@@ -97,6 +100,14 @@ void Light::set_attenuation(float c, float l, float q)
        update_parameter(ATTENUATION);
 }
 
+void Light::update_shader_data(ProgramData &shdata, const Matrix &view_matrix, unsigned i) const
+{
+       string base = format("light_sources[%d]", i);
+       shdata.uniform(base+".position", view_matrix*position);
+       shdata.uniform(base+".diffuse", diffuse);
+       shdata.uniform(base+".specular", specular);
+}
+
 void Light::bind_to(unsigned i) const
 {
        LightUnit &unit = LightUnit::get_unit(i);