X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fmorph_renderer.cc;h=d076114197e886127e8043b67e65efdd6350bfeb;hb=0c5fa3525b2c8151bf83a215eee992c257d6fa28;hp=42d920d7505183f307637150c48ac1125f8176a0;hpb=c99060df01719b24ebd793b149d3c2dc5748cad5;p=demo diff --git a/src/morph_renderer.cc b/src/morph_renderer.cc index 42d920d..d076114 100644 --- a/src/morph_renderer.cc +++ b/src/morph_renderer.cc @@ -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() { @@ -33,11 +35,17 @@ bool MorphRenderer::create() spec_loc = sprog->get_uniform_location("specular"); shin_loc = sprog->get_uniform_location("shininess"); t_loc = sprog->get_uniform_location("t"); + fog_loc = sprog->get_uniform_location("fog_density"); /* uniform locations for matrices */ 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; } @@ -50,19 +58,20 @@ void MorphRenderer::draw() const if(!sprog->link()) return; + if(dskytex) { + dskytex->bind(1); + } + sprog->use(); for(size_t i=0; iobjects.size(); i++) { - draw_object(scene->objects[i]); - } -} - -void MorphRenderer::draw_object(Object *object) const -{ - float t = (sin(time_sec) + 1) * 0.5; + 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(t_loc != -1) - sprog->set_uniformf(t_loc, t); + if(mmod_loc != -1) + sprog->set_uniform_matrix(mmod_loc, scene->objects[i]->transform.upper3x3()); - Renderer::draw_object(object); + draw_object(scene->objects[i]); + } } \ No newline at end of file