#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()
{
/* we won't use them */
skytex = 0;
dskytex = 0;
+
+ fog_density = 0;
}
MorphRenderer::~MorphRenderer()
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;
}
if(!sprog->link())
return;
+ if(dskytex) {
+ dskytex->bind(1);
+ }
+
sprog->use();
for(size_t i=0; i<scene->objects.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