Exemplo n.º 1
0
void initialise()
{
	srand(time(NULL));
		
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	glClearColor(0.0f, 1.0f, 1.0f, 1.0f);

	//Target Camera
	cam1 = new target_camera();
	cam1->setProjection(glm::degrees(glm::pi<float>() / 4.0f), screenWidth/screenHeight, 0.1f, 10000.0f);
	cam1->setPositon(glm::vec3(10.f, 10.0f, 10.0f));
	cam1->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));

	//fps cam
	cam = new first_person_camera();
	cam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	cam->setPositon(glm::vec3(2.0f, 0.0f, 2.0f));

	if (!eff.addShader("lit_textured.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lighting.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("point_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("spot_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lit_textured.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);

	scene = loadScene("scene.json");
}
Exemplo n.º 2
0
void initialise()
{
	srand(time(NULL));
		
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	glClearColor(0.3f, 0.6f, 0.9f, 1.0f);

	//Target Camera
	cam1 = new target_camera();
	cam1->setProjection(glm::degrees(glm::pi<float>() / 4.0f), screenWidth/screenHeight, 0.1f, 10000.0f);
	cam1->setPositon(glm::vec3(10.f, 10.0f, -10.0f));
	cam1->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));

	//fps cam
	cam = new first_person_camera();
	cam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	cam->setPositon(glm::vec3(2.0f, 10.0f, -1000.0f));

	
	if (!eff.addShader("starfield.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("starfield.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);
	
	texture* tex = new texture("star.tga");
	tex->create();
	points = new point_sprite(createStarField(5000), tex);
	points->create();
	
}
Exemplo n.º 3
0
void initialise()
{
    srand(time(NULL));

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_VERTEX_ARRAY);
    glClearColor(0.0f, 1.0f, 1.0f, 1.0f);

    //Target Camera
    cam3 = new target_camera();
    cam3->setProjection(glm::pi<float>() / 4.0f, 800.0f/600.0f, 0.1f, 10000.0f);
    cam3->setPositon(glm::vec3(10.f, 10.0f, 10.0f));
    cam3->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));

    //FPS camera
    cam4 = new first_person_camera();
    cam4->setProjection(glm::pi<float>() / 4.0f, 800.0f/600.0f, 0.1f, 10000.0f);
    cam4->setPositon(glm::vec3(0.0f, 2.0f, 0.0f));

    //arcBall
    cam2 = new arc_ball_camera();
    cam2->setProjection(45.0f, 800.0f/600.0f, 0.1f, 10000.0f);
    cam2->setTarget(glm::vec3(0.0f, 2.0f, 0.0f));
    cam2->setDistance(10.0f);
    cam2->setMinRotationY(-glm::pi<float>() / 2.0f);
    cam2->setMaxRotationY(glm::pi<float>() / 2.0f);
    cam2->setRotationX(0.0f);
    cam2->setRotationY(0.0f);

    //chaseCamera
    cam1 = new chase_camera();
    cam1->setProjection(45.0f, 800.0f/600.0f, 0.1f, 10000.0f);
    cam1->setFollowPosition(glm::vec3(0.0f, 2.0f, 0.0f));
    cam1->setPositionOffset(glm::vec3(10.0f, 0.0f, 10.0f));
    cam1->setSpringiness(0.5f);

    currentCam = cam3;

    if (!eff.addShader("multi_light.vert", GL_VERTEX_SHADER))
        exit(EXIT_FAILURE);
    if (!eff.addShader("multi_light.frag", GL_FRAGMENT_SHADER))
        exit(EXIT_FAILURE);
    if (!eff.create())
        exit(EXIT_FAILURE);

    scene = loadScene("StackOfCubes.json");
    //scene = loadScene("scene2.json");
}
bool skybox::create()
{
	if (!skybox_geom)
	{
		skybox_geom = createBox();

		if (!skybox_effect.addShader("skybox.vert", GL_VERTEX_SHADER))
			exit(EXIT_FAILURE);
		if (!skybox_effect.addShader("skybox.frag", GL_FRAGMENT_SHADER))
			exit(EXIT_FAILURE);
		if (!skybox_effect.create())
			exit(EXIT_FAILURE);
	}

	return true;
}
Exemplo n.º 5
0
void initialise()
{
	srand(time(NULL));
		
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	//glClearColor(0.0f, 1.0f, 1.0f, 1.0f);

	// Set the accumulation buffer clearing colour to black at 0,0f alpha
	glClearAccum(0.0f, 0.0f, 0.0f, 0.0f);
	
	glEnable(GL_POINT_SMOOTH); // Smooth the points so that they're circular and not square
	glPointSize(fw->particleSize);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	//Target Camera
	cam1 = new target_camera();
	cam1->setProjection(glm::degrees(glm::pi<float>() / 4.0f), screenWidth/screenHeight, 0.1f, 10000.0f);
	cam1->setPositon(glm::vec3(10.f, 10.0f, 10.0f));
	cam1->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));

	//fps cam
	cam = new first_person_camera();
	cam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	cam->setPositon(glm::vec3(0.0f, 10.0f, -500.0f));

	if (!eff.addShader("lit_textured.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lighting.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("point_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("spot_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lit_textured.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);
	
	scene = loadScene("TableAndChairs.json");
}
Exemplo n.º 6
0
void initialise()
{
	srand(time(NULL));
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	glClearColor(0.3f, 0.6f, 0.9f, 1.0f);

	//========Set Camera=====================================
	fpsCam = new first_person_camera();
	fpsCam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	fpsCam->setPositon(glm::vec3(1.73964, 4.51647, -23.0497));
	fpsCam->rotate(0.0f, 0.0f);
	currentCam = fpsCam;
	//=============================================================

	//Setup frustrum planes
	planes = new frustrumPlanes();
	planes->setPlanes(currentCam);
	viewFrus = new viewingFrustrum(); 
	frustum = new frus();

	//==========Set up shaders================================ 
	if (!eff.addShader("lit_textured.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lighting.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("point_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("spot_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("Fog.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lit_textured.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);	
	//==========================================================

	//==========Load in scene file=============================
	scene1 = loadScene("TableAndChairs.json");
	scene = scene1;
	//=========================================================

	//=========Create terrain===================================
	geometry* geom = createTerrain(scene1->textures["heightmap"]);
	scene1->geometry["terrain"] = geom;

	render_object* obj = new render_object();
	obj->geometry = geom;
	obj->material = scene1->material["mat_001"];
	obj->transform.scale = (glm::vec3(1.0, 8.0, 1.0));
	obj->transform.position = (glm::vec3(0.0, -3.0, 0.0));
	scene1->objects["terrain"] = obj;
	//==========================================================
}
Exemplo n.º 7
0
void initialise()
{
	srand(time(NULL));

	glClearColor(0.0f, 1.0f, 1.0f, 1.0f);
	projection = glm::perspective(glm::degrees(glm::quarter_pi<float>()),
								  800.0f/600.0f,
								  0.1f,
								  10000.0f);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);

	if (!eff.addShader("multi_light.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("multi_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);

	light.data.ambient = glm::vec4(0.0f, 0.0f, 0.1f, 1.0f);
	light.data.diffuse = glm::vec4(0.0f, 0.0f, 0.2f, 1.0f);
	light.data.specular = glm::vec4(0.0f, 0.0f, 0.5f, 1.0f);
	light.data.lightDir = glm::vec4(1.0f, 0.0f, 0.0f, 1.0f);
	light.create();

	spot_light_data spot;
	spot.ambient = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
	spot.diffuse = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
	spot.specular = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
	spot.lightPos = glm::vec4(0.0f, 2.0f, 0.0f, 1.0f);
	spot.attenuation = glm::vec4(0.05f, 0.02f, 0.01f, 1.0f);
	spot.lightDir = glm::vec4(0.0f, -1.0f, 0.0f, 1.0f);
	spot.power = 1.0f;
	spot.dist = 10.0f;
	dynamic.addSpot(spot);

	point_light_data point[4];
	glm::vec4 cols[4];
	cols[0] = glm::vec4(0.2f, 0.0f, 0.0f, 1.0f);
	cols[1] = glm::vec4(0.0f, 0.2f, 0.0f, 1.0f);
	cols[2] = glm::vec4(0.0f, 0.0f, 0.2f, 1.0f);
	cols[3] = glm::vec4(0.2f, 0.2f, 0.2f, 1.0f);
	for (int i = 0; i < 4; ++i)
	{
		point[i].ambient = cols[i];
		point[i].diffuse = cols[i];
		point[i].specular = cols[i];
		point[i].attenuation = glm::vec4(0.02f, 0.01f, 0.005f, 1.f);
		point[i].dist = 10.0f;
	}
	point[0].lightPos = glm::vec4(-2.0f, 2.0f, -2.0f, 1.0f);
	point[1].lightPos = glm::vec4(2.0f, 2.0f, -2.0f, 1.0f);
	point[2].lightPos = glm::vec4(-2.0f, 2.0f, 2.0f, 1.0f);
	point[3].lightPos = glm::vec4(2.0f, 2.0f, 2.0f, 1.0f);
	for (int i = 0; i < 4; ++i)
		dynamic.addPoint(point[i]);

	dynamic.create();

	plane.geometry = createPlane(20, 20);
	glm::vec4 colour(0.1f, 0.1f, 0.1f, 1.0f);
	plane.material = new material();
	plane.material->data.emissive = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
	plane.material->data.ambient = colour;
	plane.material->data.diffuse = colour;
	plane.material->data.specular = colour;
	plane.material->data.shininess = 2.0f;
	plane.material->create();

	sphere.geometry = createSphere(20, 20);
	sphere.material = new material();
	sphere.material->data.emissive = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f);
	sphere.material->data.shininess = 1.0f;
	sphere.material->create();
	sphere.transform.position = glm::vec3(0.0f, 2.0f, 0.0f);
	sphere.transform.scale = glm::vec3(0.1f, 0.1f, 0.1f);

	geometry* geom = createBox();
	for (int i = 0; i < 4; ++i)
	{
		box[i].geometry = geom;
		glm::vec4 colour(0.1f * i, 0.6f - (0.1f * i), (float)rand() / (float)RAND_MAX, 1.0f);
		box[i].material = new material;
		box[i].material->data.emissive = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
		box[i].material->data.ambient = colour;
		box[i].material->data.diffuse = colour;
		box[i].material->data.specular = colour;
		box[i].material->data.shininess = i + 1;
		box[i].material->create();
		box[i].transform.scale = glm::vec3(0.25f, 0.25f, 0.25f);
	}
	box[0].transform.position = glm::vec3(-2.0f, 0.25f, -2.0f);
	box[1].transform.position = glm::vec3(2.0f, 0.25f, -2.0f);
	box[2].transform.position = glm::vec3(-2.0f, 0.25f, 2.0f);
	box[3].transform.position = glm::vec3(2.0f, 0.25f, 2.0f);
}
Exemplo n.º 8
0
void initialise()
{
	srand(time(NULL));
		
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	//glClearColor(0.0f, 1.0f, 1.0f, 1.0f);

	// Set the accumulation buffer clearing colour to black at 0,0f alpha
	//glClearAccum(0.0f, 0.0f, 0.0f, 0.0f);

	glEnable(GL_POINT_SMOOTH); // Smooth the points so that they're circular and not square
	glPointSize(fw->particleSize);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	//IntroCamera
	introCam = new target_camera();
	introCam->setProjection(glm::degrees(glm::quarter_pi<float>()), screenWidth/screenHeight, 0.1f, 10000.0f);
	introCam->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));
	introCam->setPositon(glm::vec3(-0.0, 0.0, -3.0));

	//Fireworkcam=====================================
	fireworkCam = new first_person_camera();
	fireworkCam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	fireworkCam->setPositon(glm::vec3(1.73964, 4.51647, -23.0497));
	fireworkCam->rotate(0.0f, 0.0f);
	//=============================================================
	//Fireworkcam1===================================================
	fireworkCam1 = new first_person_camera();
	fireworkCam1->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	fireworkCam1->setPositon(glm::vec3(1.73964, 4.51647, -500.0497));
	fireworkCam1->rotate(0.0f, 0.0f);
	//==================================================================

	//Scene2 camera==============================================================
	scene2Cam = new first_person_camera();
	scene2Cam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	scene2Cam->setPositon(glm::vec3(-4.23435, 1.73269, -8.24032));
	scene2Cam->rotate(0.65f, 0.0f);
	//===============================================================================
	//Scene2Cam1===========================================================
	//Scene2 camera==============================================================
	scene2Cam1 = new first_person_camera();
	scene2Cam1->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	scene2Cam1->setPositon(glm::vec3(4.23435, 1.73269, 15.24032));
	scene2Cam1->rotate(-2.8f, 0.0f);
	//===============================================================================

	if (!eff.addShader("lit_textured.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lighting.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("point_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("spot_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	//if (!eff.addShader("Fog.frag", GL_FRAGMENT_SHADER))
		//exit(EXIT_FAILURE);
	if (!eff.addShader("lit_textured.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.create())
		exit(EXIT_FAILURE);	

	/*eff.setUniform("fogParams.iEquation", FogParameters::iFogEquation);
	eff.setUniform("fogParams.vFogColor", FogParameters::vFogColor);

	if (FogParameters::iFogEquation == 0)
	{
		eff.setUniform("fogParams.fStart", FogParameters::fStart);
		eff.setUniform("fogParams.fEnd", FogParameters::fEnd);
	}
	else
		eff.setUniform("fogParams.fDensity", FogParameters::fDensity);*/

	effect* post_eff = new effect();
	if(!post_eff->addShader("post_process.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if(!post_eff->addShader("Sepia.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!post_eff->create())
		exit(EXIT_FAILURE);

	effect* post_eff1 = new effect();
	if(!post_eff1->addShader("post_process.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if(!post_eff1->addShader("Greyscale.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!post_eff1->create())
		exit(EXIT_FAILURE);

	effect* post_eff2 = new effect();
	if(!post_eff2->addShader("post_process.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if(!post_eff2->addShader("Negative.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!post_eff2->create())
		exit(EXIT_FAILURE);

	effect* post_eff3 = new effect();
	if(!post_eff3->addShader("post_process.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if(!post_eff3->addShader("NightPostProc.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!post_eff3->create())
		exit(EXIT_FAILURE);

	effect* post_eff4 = new effect();
	if(!post_eff4->addShader("post_process.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	if(!post_eff4->addShader("NoPostProc.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!post_eff4->create())
		exit(EXIT_FAILURE);

	lastKeyPress = '2';
	selectedPostProc = 'O';
	lastCam = '9';
	
	scene1 = loadScene("TableAndChairs.json");
	//scene2 = loadScene("scene.json");
	scene2 = loadScene("ParkBench.json");
	scene3 = loadScene("Insturctions.json");

	geometry* geom = createTerrain(scene1->textures["heightmap"]);
	scene1->geometry["terrain"] = geom;

	render_object* obj = new render_object();
	obj->geometry = geom;
	obj->material = scene1->material["mat_001"];
	obj->transform.scale = (glm::vec3(1.0, 8.0, 1.0));
	obj->transform.position = (glm::vec3(0.0, -3.0, 0.0));
	scene1->objects["terrain"] = obj;
	
	post_proc1 = new post_process(post_eff);
	post_proc1->create(screenWidth, screenHeight);
	post_proc2 = new post_process(post_eff1);
	post_proc2->create(screenWidth, screenHeight);
	post_proc3 = new post_process(post_eff2);
	post_proc3->create(screenWidth, screenHeight);
	post_proc4 = new post_process(post_eff3);
	post_proc4->create(screenWidth, screenHeight);
	post_proc5 = new post_process(post_eff4);
	post_proc5->create(screenWidth, screenHeight);

	//post_proc = post_proc1;
	
	std::vector<std::string> cubemap_texs;
	cubemap_texs.push_back("xpos.png");
	cubemap_texs.push_back("xneg.png");
	cubemap_texs.push_back("ypos.png");
	cubemap_texs.push_back("yneg.png");
	cubemap_texs.push_back("zpos.png");
	cubemap_texs.push_back("zneg.png");

	std::vector<std::string> cubemap_texs1;
	cubemap_texs1.push_back("posx.jpg");
	cubemap_texs1.push_back("negx.jpg");
	cubemap_texs1.push_back("posy.jpg");
	cubemap_texs1.push_back("negy.jpg");
	cubemap_texs1.push_back("posz.jpg");
	cubemap_texs1.push_back("negz.jpg");

	cubemap* cm = new cubemap(cubemap_texs);
	cm->create();

	cubemap* cm1 = new cubemap(cubemap_texs1);
	cm1->create();
	
	sb1 = new skybox(cm);
	sb1->create();

	sb2 = new skybox(cm1);
	sb2->create();
}
Exemplo n.º 9
0
void initialise()
{
	srand(time(NULL));
		
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_VERTEX_ARRAY);
	//glClearColor(0.0f, 1.0f, 1.0f, 1.0f);

	// Set the accumulation buffer clearing colour to black at 0,0f alpha
	glClearAccum(0.0f, 0.0f, 0.0f, 0.0f);
	
	glEnable(GL_POINT_SMOOTH); // Smooth the points so that they're circular and not square
	glPointSize(fw->particleSize);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	//Target Camera
	cam1 = new target_camera();
	cam1->setProjection(glm::degrees(glm::pi<float>() / 4.0f), screenWidth/screenHeight, 0.1f, 10000.0f);
	cam1->setPositon(glm::vec3(10.f, 10.0f, 10.0f));
	cam1->setTarget(glm::vec3(0.0f, 0.0f, 0.0f));

	//fps cam
	cam = new first_person_camera();
	cam->setProjection(glm::pi<float>() / 4.0f, screenWidth/screenHeight, 0.1f, 10000.0f);
	cam->setPositon(glm::vec3(2.0f, 0.0f, 2.0f));

	if (!eff.addShader("lit_textured.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);
	/*if (!eff.addShader("tarnished.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);*/
	/*if (!eff.addShader("enviroment_map.vert", GL_VERTEX_SHADER))
		exit(EXIT_FAILURE);*/
	if (!eff.addShader("lighting.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("point_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("spot_light.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	if (!eff.addShader("lit_textured.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);
	/*if (!eff.addShader("tarnished.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);*/
	/*if (!eff.addShader("enviroemtn_map.frag", GL_FRAGMENT_SHADER))
		exit(EXIT_FAILURE);*/
	if (!eff.create())
		exit(EXIT_FAILURE);
	
	scene = loadScene("scene.json");

	std::vector<std::string> cubemap_texs;
	/*cubemap_texs.push_back("xpos.png");
	cubemap_texs.push_back("xneg.png");
	cubemap_texs.push_back("ypos.png");
	cubemap_texs.push_back("yneg.png");
	cubemap_texs.push_back("zpos.png");
	cubemap_texs.push_back("zneg.png");*/

	cubemap_texs.push_back("posx.jpg");
	cubemap_texs.push_back("negx.jpg");
	cubemap_texs.push_back("posy.jpg");
	cubemap_texs.push_back("negy.jpg");
	cubemap_texs.push_back("posz.jpg");
	cubemap_texs.push_back("negz.jpg");

	cubemap* cm = new cubemap(cubemap_texs);
	cm->create();
	sb = new skybox(cm);
	sb->create();
}