added IBR lighting from irradiance maps
[demo] / src / renderer.cc
index b4decc4..b20ef19 100644 (file)
@@ -60,6 +60,18 @@ bool Renderer::create()
 
        mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
        mview_loc = sprog->get_uniform_location("mview");
+       mmod_loc = sprog->get_uniform_location("mmod");
+
+       /* skybox, irradiance map uniforms */
+
+       stex_loc = sprog->get_uniform_location("stex");
+       dstex_loc = sprog->get_uniform_location("dstex");
+
+       if(stex_loc != -1)
+               sprog->set_uniformi(stex_loc, 0);
+
+       if(dstex_loc != -1)
+               sprog->set_uniformi(dstex_loc, 1);
 
        return true;
 }
@@ -71,6 +83,10 @@ void Renderer::draw() const
 
        if(skytex) {
                draw_skybox();
+
+               if(dskytex) {
+                       dskytex->bind(1);
+               }
        }
 
        if(!sprog->link())
@@ -116,6 +132,10 @@ void Renderer::draw_object(Object *object) const
        if(mview_loc != -1)
                sprog->set_uniform_matrix(mview_loc, mview);
 
+       Mat4 mmod = object->transform.upper3x3();
+       if(mmod_loc != -1)
+               sprog->set_uniform_matrix(mmod_loc, mmod);
+
        object->mesh->draw();
 
        // debug