void Renderer::Init(){
	glCullFace(GL_BACK);
	shader.init();
	shader.loadShader(VSShaderLib::VERTEX_SHADER, "simple.vert");
	shader.loadShader(VSShaderLib::FRAGMENT_SHADER, "simple.frag");
	shader.prepareProgram();
	cout << shader.getAllInfoLogs() << "\n";
	//SetUpLightning();
}
예제 #2
0
파일: main.cpp 프로젝트: pfac/CG-PI
// --------------------------------------------------------
//
// 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);
}