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"); }
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(); }
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; }
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"); }
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; //========================================================== }
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); }
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(); }
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(); }