예제 #1
0
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);
}
예제 #2
0
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");
}
예제 #3
0
파일: Curvature.cpp 프로젝트: dcoeurjo/ICTV
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();
}