4 #include "morph_renderer.h"
8 #include "shader_manager.h"
14 MorphRenderer::MorphRenderer()
20 /* we won't use them */
26 mbuf = vbuf = fbuf = svbuf = 0;
29 MorphRenderer::~MorphRenderer()
34 bool MorphRenderer::create()
36 if(!(sprog = sdr_man->create_shader_program("morphing.v.glsl", "morphing.f.glsl"))) {
40 mbuf = gfx_create_uniform_buffer();
41 if(!mbuf->create(sizeof mu)) {
42 fprintf(stderr, "Failed to create uniform buffer.\n");
47 vbuf = gfx_create_uniform_buffer();
48 if(!vbuf->create(sizeof vu)) {
49 fprintf(stderr, "Failed to create uniform buffer.\n");
55 fbuf = gfx_create_uniform_buffer();
56 if(!fbuf->create(sizeof fu)) {
57 fprintf(stderr, "Failed to create uniform buffer.\n");
63 svbuf = gfx_create_uniform_buffer();
64 if(!svbuf->create(sizeof svu)) {
65 fprintf(stderr, "Failed to create uniform buffer.\n");
73 void MorphRenderer::draw()
87 for(size_t i=0; i<scene->objects.size(); i++) {
88 mu.t = (sin(time_sec + 7.3 * noise(i * M_PI)) + 1) * 0.5;
90 mbuf->bind(MORPHING_UNIFORMS);
92 vu.mmod = scene->objects[i]->transform.upper3x3();
94 vbuf->bind(MATRIX_UNIFORMS);
96 draw_object(scene->objects[i]);