void load_distort_shader(App *app) { char *vs_src = read_file(SHADER_PATH("distort.vs")); char *fs_src = read_file(SHADER_PATH("distort.fs")); GLuint shaders[2]; shaders[0] = compile_shader(vs_src, GL_VERTEX_SHADER); shaders[1] = compile_shader(fs_src, GL_FRAGMENT_SHADER); app->program_distort = link_program(shaders, 2); free(vs_src); free(fs_src); }
void TransitionTriangulation::loadPrograms() { GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW]; fprintf (stderr, "loading transition draw program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("transition_render.glsl") ); c.include(SHADER_PATH("noise.glsl") ); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("octree_common.glsl") ); c.include(SHADER_PATH("ltree.glsl") ); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; glLinkProgram (*program); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_SCENE_SIZE] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_scene_size"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_VIEWPORT] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_viewport"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_TAN_FOVY] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_tan_fovy"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_DENSITY] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "densities"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_CODE_CLASS_TR] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "code_class_tr"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_CODE_VERTICES_TR] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "code_vertices_tr"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_CLASS_TRIANGLES_TR] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "class_triangles_tr"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_TESSEL] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_tessellation"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_SCALE] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_scale"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_ISOSURFACE] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_isosurface"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_FROMTEXTURE] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "fromtexture"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_METRIC] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_radial"); Parameters::getInstance()->g_uniform_locations[LOCATION_TRANSITION_TIME] = glGetUniformLocation (Parameters::getInstance()->g_programs[PROGRAM_TRANSITION_DRAW], "u_time"); configurePrograms(); fprintf (stderr, "success\n"); }
void Curvature::loadProgram() { /*{ GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_SHADING]; fprintf (stderr, "loading shading program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("shading.glsl")); //c.include(SHADER_PATH("noise.glsl") ); //c.include(SHADER_PATH("octree_common.glsl") ); //c.include(SHADER_PATH("ltree.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_SHADING], LOCATION_SHADING_SIZE); }*/ int nb_var = 7; const GLchar *varyings[] = {"geometry_position", "gl_NextBuffer", //"geometry_k1_k2", "gl_NextBuffer", "geometry_min_dir", "gl_NextBuffer", "geometry_max_dir", "gl_NextBuffer", "geometry_normale"};// "geometry_egv", "geometry_covmatDiag", "geometry_covmatUpper"}; { GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_APPROXCURV]; fprintf (stderr, "loading O(1) curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("o1_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; if (!Parameters::getInstance()->g_lightmode) glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_APPROXCURV], LOCATION_APPROXCURV_SIZE); } /*{ GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_GTCURV]; fprintf (stderr, "loading GT curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("gt_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_GTCURV], LOCATION_GTCURV_SIZE); }*/ { GLuint *program = &Parameters::getInstance()->g_programs[PROGRAM_HIERARCHCURV]; fprintf (stderr, "loading hierarchic curv program... "); fflush (stderr); gk::GLCompiler& c = gk::loadProgram( SHADER_PATH("curvature.glsl")); c.include(SHADER_PATH("potential.glsl") ); c.include(SHADER_PATH("hierarch_include.glsl") ); c.include(SHADER_PATH("eigendecomposition.glsl")); GLProgram* tmp = c.make(); if (tmp->errors) exit(-1); *program = tmp->name; if (!Parameters::getInstance()->g_lightmode) glTransformFeedbackVaryings (*program, nb_var, varyings, GL_INTERLEAVED_ATTRIBS); glLinkProgram (*program); load_curv(Parameters::getInstance()->g_programs[PROGRAM_HIERARCHCURV], LOCATION_HIERARCHCURV_SIZE); } configureProgram(); }