GLuint setupShaders() { // ADD STUFF HERE shader.init(); shader.loadShader(VSShaderLib::VERTEX_SHADER, "anim.vert"); shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "anim.frag"); //shader.setProgramOutput(0, "colorFS"); shader.setVertexAttribName(VSShaderLib::VERTEX_COORD_ATTRIB, "position"); shader.prepareProgram(); glUseProgram(shader.getProgramIndex()); return 1; char *vs = NULL,*fs = NULL,*fs2 = NULL; v = glCreateShader(GL_VERTEX_SHADER); f = glCreateShader(GL_FRAGMENT_SHADER); f2 = glCreateShader(GL_FRAGMENT_SHADER); vs = textFileRead("anim.vert"); fs = textFileRead("anim.frag"); const char * vv = vs; const char * ff = fs; glShaderSource(v, 1, &vv,NULL); glShaderSource(f, 1, &ff,NULL); free(vs);free(fs); glCompileShader(v); glCompileShader(f); printShaderInfoLog(v); printShaderInfoLog(f); printShaderInfoLog(f2); p = glCreateProgram(); glAttachShader(p,v); glAttachShader(p,f); glLinkProgram(p); //printProgramInfoLog(p); glUseProgram(p); GLuint loc = glGetUniformLocation(p,"time"); return 0; }
// -------------------------------------------------------- // // Shader Stuff // GLuint setupShaders() { //// Shader for fonts and models //shaders[0][0].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[0][0].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/direct/diffuse.vert.glsl") // ; //shaders[0][0].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/direct/diffuse.frag.glsl") // ; //// set semantics for the shader variables //shaders[0][0].setProgramOutput( 0 , "color" ); //shaders[0][0].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[0][0].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[0][0].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[0][0].getProgramIndex()); //printf("%s\n", shaders[0][0].getAllInfoLogs().c_str()); //// uniforms ////float lpos[4] = { 1.0 , 0.0 , 1.0 , 0.0 }; ////shaders[0].setUniform( "lightPos" , lpos ); //{ // float ldir[3] = { 1.0 , 0.0 , 0.0 }; // float ldif[3] = { 1.0 , 0.0 , 0.0 }; // shaders[0][0].setUniform( "light_dir" , ldir ); // shaders[0][0].setUniform( "diffuse" , ldif ); //} //// shader#2 //// Shader for fonts and models //shaders[0][1].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[0][1].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/direct/difamb.vert.glsl") // ; //shaders[0][1].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/direct/difamb.frag.glsl") // ; //// set semantics for the shader variables //shaders[0][1].setProgramOutput( 0 , "color" ); //shaders[0][1].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[0][1].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[0][1].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[0][1].getProgramIndex()); //printf("%s\n", shaders[0][1].getAllInfoLogs().c_str()); //// uniforms //{ // float ldir[3] = { 1.0f , 0.0f , 0.0f }; // float ldif[3] = { 1.0f , 0.0f , 0.0f }; // float lamb[3] = { 0.3f , 0.0f , 0.0f }; // shaders[0][1].setUniform( "light_dir" , ldir ); // shaders[0][1].setUniform( "diffuse" , ldif ); // shaders[0][1].setUniform( "ambient" , lamb ); //} // //// shader#3 //// Shader for fonts and models //shaders[0][2].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[0][2].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/direct/gouraud.vert.glsl") // ; //shaders[0][2].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/direct/gouraud.frag.glsl") // ; //// set semantics for the shader variables //shaders[0][2].setProgramOutput( 0 , "color" ); //shaders[0][2].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[0][2].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[0][2].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[0][2].getProgramIndex()); //printf("%s\n", shaders[0][2].getAllInfoLogs().c_str()); //// uniforms //{ // float ldir[3] = { 1.0f , 0.0f , 0.0f }; // float ldif[3] = { 1.0f , 0.0f , 0.0f }; // float lamb[3] = { 0.3f , 0.0f , 0.0f }; // float lspc[3] = { 1.0f , 1.0f , 1.0f }; // shaders[0][2].setUniform( "light_dir" , ldir ); // shaders[0][2].setUniform( "diffuse" , ldif ); // shaders[0][2].setUniform( "ambient" , lamb ); // shaders[0][2].setUniform( "specular" , lspc ); // shaders[0][2].setUniform( "shininess" , 100.0f ); //} //// shader#4 //// Shader for fonts and models //shaders[0][3].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[0][3].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/direct/phong.vert.glsl") // ; //shaders[0][3].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/direct/phong.frag.glsl") // ; //// set semantics for the shader variables //shaders[0][3].setProgramOutput( 0 , "color" ); //shaders[0][3].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[0][3].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[0][3].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[0][3].getProgramIndex()); //printf("%s\n", shaders[0][3].getAllInfoLogs().c_str()); //// uniforms //{ // float ldir[3] = { 1.0f , 0.0f , 0.0f }; // float ldif[3] = { 1.0f , 0.0f , 0.0f }; // float lamb[3] = { 0.3f , 0.0f , 0.0f }; // float lspc[3] = { 1.0f , 1.0f , 1.0f }; // shaders[0][3].setUniform( "light_dir" , ldir ); // shaders[0][3].setUniform( "diffuse" , ldif ); // shaders[0][3].setUniform( "ambient" , lamb ); // shaders[0][3].setUniform( "specular" , lspc ); // shaders[0][3].setUniform( "shininess" , 100.0f ); //} //// shader#5 //// Shader for fonts and models //shaders[1][3].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[1][3].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/point/phong.vert.glsl") // ; //shaders[1][3].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/point/phong.frag.glsl") // ; //// set semantics for the shader variables //shaders[1][3].setProgramOutput( 0 , "color" ); //shaders[1][3].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[1][3].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[1][3].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[1][3].getProgramIndex()); //printf("%s\n", shaders[1][3].getAllInfoLogs().c_str()); //// uniforms //{ // float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 }; // float ldif[3] = { 1.0 , 0.0 , 0.0 }; // //float lamb[3] = { 0.3 , 0.0 , 0.0 }; // float lspc[3] = { 1.0 , 1.0 , 1.0 }; // shaders[1][3].setUniform( "lightPosition" , lpos ); // shaders[1][3].setUniform( "diffuse" , ldif ); // //shaders[1][3].setUniform( "ambient" , lamb ); // shaders[1][3].setUniform( "specular" , lspc ); // shaders[1][3].setUniform( "shininess" , 100.0f ); //} //// shader#6 //// Shader for fonts and models //shaders[2][3].init(); ///*shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag");*/ //shaders[2][3].loadShader( // VSShaderLib::VERTEX_SHADER, // "../shaders/light/spot/phong.vert.glsl") // ; //shaders[2][3].loadShader( // VSShaderLib::FRAGMENT_SHADER, // "../shaders/light/spot/phong.frag.glsl") // ; //// set semantics for the shader variables //shaders[2][3].setProgramOutput( 0 , "color" ); //shaders[2][3].setVertexAttribName( // VSShaderLib::VERTEX_COORD_ATTRIB, // "position") // ; ////shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); //shaders[2][3].setVertexAttribName( // VSShaderLib::NORMAL_ATTRIB, // "normal") // ; //shaders[2][3].prepareProgram(); //VSGLInfoLib::getProgramInfo(shaders[2][3].getProgramIndex()); //printf("%s\n", shaders[2][3].getAllInfoLogs().c_str()); //// uniforms //{ // float spos[4] = { 0.0 , 1.0 , 0.0 , 1.0 }; // float sdir[3] = { 1.0 , -1.0 , 0.0 }; // float ldif[3] = { 1.0 , 0.0 , 0.0 }; // //float lamb[3] = { 0.3 , 0.0 , 0.0 }; // float lspc[3] = { 1.0 , 1.0 , 1.0 }; // shaders[2][3].setUniform( "spotPosition" , spos ); // shaders[2][3].setUniform( "spotDirection" , sdir ); // shaders[2][3].setUniform( "spotLimitAngle" , blaf::deg2rad(7.5f) ); // shaders[2][3].setUniform( "diffuse" , ldif ); // //shaders[1][3].setUniform( "ambient" , lamb ); // shaders[2][3].setUniform( "specular" , lspc ); // shaders[2][3].setUniform( "shininess" , 100.0f ); //} /* // player shader#1 // Shader for fonts and models player.shaders[0].init(); //shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag"); player.shaders[0].loadShader( VSShaderLib::VERTEX_SHADER, "../shaders/light/direct/phong.vert.glsl") ; player.shaders[0].loadShader( VSShaderLib::FRAGMENT_SHADER, "../shaders/light/direct/phong.frag.glsl") ; // set semantics for the shader variables player.shaders[0].setProgramOutput( 0 , "color" ); player.shaders[0].setVertexAttribName( VSShaderLib::VERTEX_COORD_ATTRIB, "position") ; //shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); player.shaders[0].setVertexAttribName( VSShaderLib::NORMAL_ATTRIB, "normal") ; player.shaders[0].prepareProgram(); VSGLInfoLib::getProgramInfo(player.shaders[0].getProgramIndex()); printf("%s\n", player.shaders[0].getAllInfoLogs().c_str()); // uniforms { float ldir[3] = { 1.0 , 0.0 , 0.0 }; float ldif[3] = { 0.0 , 1.0 , 0.0 }; //float lamb[3] = { 0.3 , 0.0 , 0.0 }; float lspc[3] = { 1.0 , 1.0 , 1.0 }; player.shaders[0].setUniform( "light_dir" , ldir ); player.shaders[0].setUniform( "diffuse" , ldif ); //shaders[0][3].setUniform( "ambient" , lamb ); player.shaders[0].setUniform( "specular" , lspc ); player.shaders[0].setUniform( "shininess" , 100.0f ); } // player shader#2 // Shader for fonts and models player.shaders[1].init(); //shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag"); player.shaders[1].loadShader( VSShaderLib::VERTEX_SHADER, "../shaders/light/point/phong.vert.glsl") ; player.shaders[1].loadShader( VSShaderLib::FRAGMENT_SHADER, "../shaders/light/point/phong.frag.glsl") ; // set semantics for the shader variables player.shaders[1].setProgramOutput( 0 , "color" ); player.shaders[1].setVertexAttribName( VSShaderLib::VERTEX_COORD_ATTRIB, "position") ; //shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); player.shaders[1].setVertexAttribName( VSShaderLib::NORMAL_ATTRIB, "normal") ; player.shaders[1].prepareProgram(); VSGLInfoLib::getProgramInfo(player.shaders[1].getProgramIndex()); printf("%s\n", player.shaders[1].getAllInfoLogs().c_str()); // uniforms { float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 }; float ldif[3] = { 0.0 , 1.0 , 0.0 }; //float lamb[3] = { 0.3 , 0.0 , 0.0 }; float lspc[3] = { 1.0 , 1.0 , 1.0 }; player.shaders[1].setUniform( "lightPosition" , lpos ); player.shaders[1].setUniform( "diffuse" , ldif ); //shaders[1][3].setUniform( "ambient" , lamb ); player.shaders[1].setUniform( "specular" , lspc ); player.shaders[1].setUniform( "shininess" , 100.0f ); } // player shader#3 // Shader for fonts and models player.shaders[2].init(); //shader.loadShader(VSShaderLib::VERTEX_SHADER, "../shaders/dirlightdiffambpix.vert"); //shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "shaders/dirlightdiffambpix.frag"); player.shaders[2].loadShader( VSShaderLib::VERTEX_SHADER, "../shaders/light/spot/phong.vert.glsl") ; player.shaders[2].loadShader( VSShaderLib::FRAGMENT_SHADER, "../shaders/light/spot/phong.frag.glsl") ; // set semantics for the shader variables player.shaders[2].setProgramOutput( 0 , "color" ); player.shaders[2].setVertexAttribName( VSShaderLib::VERTEX_COORD_ATTRIB, "position") ; //shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); player.shaders[2].setVertexAttribName( VSShaderLib::NORMAL_ATTRIB, "normal") ; player.shaders[2].prepareProgram(); VSGLInfoLib::getProgramInfo(player.shaders[2].getProgramIndex()); printf("%s\n", player.shaders[2].getAllInfoLogs().c_str()); // uniforms { float spos[4] = { 0.0 , 1.0 , 0.0 , 1.0 }; float sdir[3] = { 1.0 , -1.0 , 0.0 }; float ldif[3] = { 0.0 , 1.0 , 0.0 }; //float lamb[3] = { 0.3 , 0.0 , 0.0 }; float lspc[3] = { 1.0 , 1.0 , 1.0 }; player.shaders[2].setUniform( "spotPosition" , spos ); player.shaders[2].setUniform( "spotDirection" , sdir ); player.shaders[2].setUniform( "spotLimitAngle" , DEG2RAD(7.5f) ); player.shaders[2].setUniform( "diffuse" , ldif ); //shaders[1][3].setUniform( "ambient" , lamb ); player.shaders[2].setUniform( "specular" , lspc ); player.shaders[2].setUniform( "shininess" , 100.0f ); } */ // shader1 shader1.init(); shader1.loadShader( VSShaderLib::VERTEX_SHADER, "../shaders/light/point/phong.vert.glsl") ; shader1.loadShader( VSShaderLib::FRAGMENT_SHADER, "../shaders/light/point/phong.frag.glsl") ; // set semantics for the shader variables shader1.setProgramOutput( 0 , "color" ); shader1.setVertexAttribName( VSShaderLib::VERTEX_COORD_ATTRIB, "position") ; shader1.setVertexAttribName( VSShaderLib::NORMAL_ATTRIB, "normal") ; shader1.prepareProgram(); VSGLInfoLib::getProgramInfo(shader1.getProgramIndex()); printf("%s\n", shader1.getAllInfoLogs().c_str()); // uniforms { float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 }; float ldif[3] = { 1.0 , 0.0 , 0.0 }; //float lamb[3] = { 0.3 , 0.0 , 0.0 }; float lspc[3] = { 1.0 , 1.0 , 1.0 }; shader1.setUniform( "lightPosition" , lpos ); shader1.setUniform( "diffuse" , ldif ); //shader1.setUniform( "ambient" , lamb ); shader1.setUniform( "specular" , lspc ); shader1.setUniform( "shininess" , 100.0f ); } // shader2 shader2.init(); shader2.loadShader( VSShaderLib::VERTEX_SHADER, "../shaders/light/point/phong.vert.glsl") ; shader2.loadShader( VSShaderLib::FRAGMENT_SHADER, "../shaders/light/point/phong.frag.glsl") ; // set semantics for the shader variables shader2.setProgramOutput( 0 , "color" ); shader2.setVertexAttribName( VSShaderLib::VERTEX_COORD_ATTRIB, "position") ; //shader.setVertexAttribName(VSShaderLib::TEXTURE_COORD_ATTRIB, "texCoord"); shader2.setVertexAttribName( VSShaderLib::NORMAL_ATTRIB, "normal") ; shader2.prepareProgram(); VSGLInfoLib::getProgramInfo(shader2.getProgramIndex()); printf("%s\n", shader2.getAllInfoLogs().c_str()); // uniforms { float lpos[4] = { 30.0 , 5.0 , 0.0 , 1.0 }; float ldif[3] = { 0.0 , 1.0 , 0.0 }; //float lamb[3] = { 0.3 , 0.0 , 0.0 }; float lspc[3] = { 1.0 , 1.0 , 1.0 }; shader2.setUniform( "lightPosition" , lpos ); shader2.setUniform( "diffuse" , ldif ); //shader2.setUniform( "ambient" , lamb ); shader2.setUniform( "specular" , lspc ); shader2.setUniform( "shininess" , 100.0f ); } return(1); }