added IBR lighting from irradiance maps
[demo] / src / morph_renderer.cc
index ce6f1b0..7535171 100644 (file)
@@ -1,8 +1,10 @@
 #include "global.h"
 #include "morph_renderer.h"
+#include "object.h"
 #include "scene.h"
 #include "shader.h"
 #include "shader_manager.h"
+#include "texture.h"
 
 MorphRenderer::MorphRenderer()
 {
@@ -39,6 +41,11 @@ bool MorphRenderer::create()
 
        mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
        mview_loc = sprog->get_uniform_location("mview");
+       mmod_loc = sprog->get_uniform_location("mmod");
+
+       dstex_loc = sprog->get_uniform_location("dstex");
+       if(dstex_loc != -1)
+               sprog->set_uniformi(dstex_loc, 1);
 
        return true;
 }
@@ -51,12 +58,20 @@ void MorphRenderer::draw() const
        if(!sprog->link())
                return;
 
+       if(dskytex) {
+               dskytex->bind(1);
+       }
+
        sprog->use();
 
        for(size_t i=0; i<scene->objects.size(); i++) {
                float t = (sin(time_sec + 7.3 * noise(i * M_PI)) + 1) * 0.5;
                if (t_loc != -1)
                        sprog->set_uniformf(t_loc, t);
+
+               if(mmod_loc != -1)
+                       sprog->set_uniform_matrix(mmod_loc, scene->objects[i]->transform.upper3x3());
+
                draw_object(scene->objects[i]);
        }
 }
\ No newline at end of file