2 #include "morph_renderer.h"
6 #include "shader_manager.h"
9 MorphRenderer::MorphRenderer()
15 /* we won't use them */
22 MorphRenderer::~MorphRenderer()
26 bool MorphRenderer::create()
28 if(!(sprog = sdr_man->create_shader_program("morphing.v.glsl", "morphing.f.glsl"))) {
32 /* getting material uniform locations: diffuse, specular, specular exponent (strength) */
34 diff_loc = sprog->get_uniform_location("diffuse");
35 spec_loc = sprog->get_uniform_location("specular");
36 shin_loc = sprog->get_uniform_location("shininess");
37 t_loc = sprog->get_uniform_location("t");
38 fog_loc = sprog->get_uniform_location("fog_density");
40 /* uniform locations for matrices */
42 mmviewproj_loc = sprog->get_uniform_location("mmviewproj");
43 mview_loc = sprog->get_uniform_location("mview");
44 mmod_loc = sprog->get_uniform_location("mmod");
46 dstex_loc = sprog->get_uniform_location("dstex");
48 sprog->set_uniformi(dstex_loc, 1);
53 void MorphRenderer::draw() const
67 for(size_t i=0; i<scene->objects.size(); i++) {
68 float t = (sin(time_sec + 7.3 * noise(i * M_PI)) + 1) * 0.5;
70 sprog->set_uniformf(t_loc, t);
73 sprog->set_uniform_matrix(mmod_loc, scene->objects[i]->transform.upper3x3());
75 draw_object(scene->objects[i]);