4 #include "morph_renderer.h"
8 #include "shader_manager.h"
14 MorphRenderer::MorphRenderer()
20 /* we won't use them */
32 MorphRenderer::~MorphRenderer()
37 bool MorphRenderer::create()
39 if(!(sprog = sdr_man->create_shader_program("morphing.v.glsl", "morphing.f.glsl"))) {
43 mbuf = gfx_create_uniform_buffer();
44 if(!mbuf->create(sizeof mu)) {
45 fprintf(stderr, "Failed to create uniform buffer.\n");
50 default_vs_ub = gfx_create_uniform_buffer();
51 if(!default_vs_ub->create(sizeof default_vs_uniforms)) {
52 fprintf(stderr, "Failed to create uniform buffer.\n");
58 default_fs_ub = gfx_create_uniform_buffer();
59 if(!default_fs_ub->create(sizeof default_fs_uniforms)) {
60 fprintf(stderr, "Failed to create uniform buffer.\n");
66 sky_vs_ub = gfx_create_uniform_buffer();
67 if(!sky_vs_ub->create(sizeof sky_vs_uniforms)) {
68 fprintf(stderr, "Failed to create uniform buffer.\n");
76 void MorphRenderer::draw()
90 for(size_t i=0; i<scene->objects.size(); i++) {
91 mu.t = (sin(time_sec + 7.3 * noise(i * M_PI)) + 1) * 0.5;
93 mbuf->bind(MORPHING_MATRIX_UNIFORMS);
95 default_vs_uniforms.mmod = scene->objects[i]->transform.upper3x3();
96 default_vs_ub->update(&default_vs_uniforms);
97 default_vs_ub->bind(MATRIX_UNIFORMS);
99 draw_object(scene->objects[i]);