Renderer::Renderer(Window &parent) : OGLRenderer(parent)
{
	camera = new Camera();
	heightMap = new HeightMap(TEXTUREDIR"terrain.raw");
	quad = Mesh::GenerateQuad();

	camera->SetPosition(Vector3(RAW_WIDTH * HEIGHTMAP_X / 2.0f, 500.0f, RAW_WIDTH * HEIGHTMAP_X));

	light = new Light(Vector3((RAW_HEIGHT * HEIGHTMAP_X / 2.0f), 500.0f,( RAW_WIDTH * HEIGHTMAP_X / 2.0f)), 
						Vector4(0.9f, 0.9f, 1.0f, 1), (RAW_WIDTH * HEIGHTMAP_X) / 2.0f);

	reflectShader = new Shader(SHADERDIR "PerPixelVertex.glsl", SHADERDIR "reflectFragment.glsl");

	skyboxShader = new Shader(SHADERDIR "skyboxVertex.glsl", SHADERDIR "skyboxFragment.glsl");

	lightShader = new Shader(SHADERDIR "PerPixelVertex.glsl", SHADERDIR "PerPixelFragment.glsl");

	if(!reflectShader->LinkProgram() || !lightShader->LinkProgram() || !skyboxShader->LinkProgram())
	{
		return;
	}

	//quad->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"water.TGA", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	quad->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"Barren RedsDOT3.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"Barren Reds.JPG", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	heightMap->SetBumpMap(SOIL_load_OGL_texture(TEXTUREDIR"Barren RedsDOT3.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	cubeMap = SOIL_load_OGL_cubemap(TEXTUREDIR"rusted_west.jpg", TEXTUREDIR"rusted_east.jpg",
									TEXTUREDIR"rusted_up.jpg", TEXTUREDIR"rusted_down.jpg",
									TEXTUREDIR"rusted_south.jpg", TEXTUREDIR"rusted_north.jpg",
									SOIL_LOAD_RGB,
									SOIL_CREATE_NEW_ID, 0);

	if(!cubeMap || !quad->GetTexture() || !heightMap->GetTexture() || !heightMap->GetBumpMap())
	{
		return;
	}

	SetTextureRepeating(quad->GetTexture(), true);
	SetTextureRepeating(heightMap->GetTexture(),true);
	SetTextureRepeating(heightMap->GetBumpMap(),true);

	init = true;
	waterRotate = 0.0f;

	projMatrix = Matrix4::Perspective(1.0f, 15000.0f, (float)width / (float)height, 45.0f);

	glEnable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);

}
Beispiel #2
0
Renderer :: Renderer ( Window & parent ) : OGLRenderer ( parent ) {
	camera = new Camera (0.0f ,0.0f , Vector3 (	RAW_WIDTH * HEIGHTMAP_X / 2.0f ,500 , RAW_HEIGHT * HEIGHTMAP_Z ));

	heightMap = new HeightMap ("../../Textures/world.raw");
	currentShader = new Shader ("../../Shaders/bumpVertex.glsl", "../../Shaders/bumpFragment.glsl");

	heightMap -> SetTexture ( SOIL_load_OGL_texture ("../../Textures/Barren Reds.JPG", SOIL_LOAD_AUTO ,	SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS ));
	
	heightMap -> SetBumpMap ( SOIL_load_OGL_texture ("../../Textures/Barren RedsDOT3.jpg", SOIL_LOAD_AUTO ,	SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS ));
	
	if (! currentShader -> LinkProgram () ||	! heightMap -> GetTexture () || ! heightMap -> GetBumpMap () ) {
		return ;
	}

	SetTextureRepeating ( heightMap -> GetTexture () , true );
	SetTextureRepeating ( heightMap -> GetBumpMap () , true );
	light = new Light ( Vector3 (( RAW_HEIGHT * HEIGHTMAP_X / 2.0f ) ,500.0f ,( RAW_HEIGHT * HEIGHTMAP_Z / 2.0f )) ,Vector4 (1 ,1 ,1 ,1) , ( RAW_WIDTH * HEIGHTMAP_X ) / 2.0f );

	projMatrix = Matrix4 :: Perspective (1.0f ,15000.0f ,( float ) width / ( float ) height , 45.0f );

	glEnable ( GL_DEPTH_TEST );
	init = true ;
}
Beispiel #3
0
GameEntity* MyGame::BuildHeightmapEntity() {
	GameEntity*g = new GameEntity(new SceneNode(heightmap), new PhysMap(TEXTUREDIR"stage1.raw",heightmap));
	g->ConnectToSystems();

	float mass = 1.0f;
	SceneNode &test = g->GetRenderNode();
	Vector3 temp;
	if(g->GetRenderNode().GetMesh()->GetTexture())
	SetTextureRepeating( g->GetRenderNode().GetMesh()->GetTexture(), true);
	
	g->GetPhysicsNode().dynamic = false;
	g->GetPhysicsNode().SetInvInertia(temp);
	g->GetPhysicsNode().setInvMass(mass);
	g->GetPhysicsNode().SetPosition(Vector3(0,0,0));
	g->GetPhysicsNode().UpdateTransform();
	g->GetPhysicsNode().gravity = false;

	test.SetBoundingRadius(500000.0f);
	test.SetShader(bumpShader);

	return g;
}
Renderer::Renderer(Window & parent) : OGLRenderer(parent) {
	heightMap = new HeightMap(TEXTUREDIR"terrain.raw");
	CubeRobot::CreateCube();
	camera = new Camera();
	camera->SetPosition(Vector3(0.0f, 750.0f, 750.0f));
	sceneShader=new Shader(SHADERDIR"SceneVertex.glsl", SHADERDIR"SceneFragment.glsl");
	currentShader = new Shader(SHADERDIR"LandVertex.glsl", SHADERDIR"LandFragment.glsl");

	if (!currentShader->LinkProgram()) {
		return;
	}
	if (!sceneShader->LinkProgram()) {
		return;
	}
	heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"BarrenReds.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	projMatrix = Matrix4::Perspective(1.0f, 10000.0f, (float)width / (float)height, 45.0f);

	if (!heightMap->GetTexture()) {
		return;
	}
	SetTextureRepeating(heightMap->GetTexture(), true);
    projMatrix = Matrix4::Perspective(1.0f, 10000.0f, (float)width / (float)height, 45.0f);
	root = new SceneNode();
	/*for (int i = 0; i < 9; i++) {
		for (int j = 0; j < 9; j++) {
			for (int k = 0; k < 9; k++) {
				CubeRobot * zaku = new CubeRobot();
				zaku->SetTransform(Matrix4::Translation(Vector3((i - 4) * 100, (j - 4) * 100, (k - 4) * 100)) * Matrix4::Scale(Vector3(2, 2, 2)));*/
				root->AddChild(/*zaku*/new CubeRobot());
	/*		}
		}
	}
	*/
				root->SetTransform(root->GetTransform() * Matrix4::Translation(Vector3(15.0f, 200.0f, 0.0f)));
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_CULL_FACE);
Beispiel #5
0
Renderer :: Renderer ( Window & parent ) : OGLRenderer ( parent ) {
heightMap = new HeightMap ("../../Textures/terrain.raw");
camera = new Camera ();

currentShader = new Shader ("../../Shaders/TexturedVertex.glsl","../../Shaders/TexturedFragment.glsl");

 if (! currentShader -> LinkProgram ()) {
 return ;
 }

 heightMap -> SetTexture ( SOIL_load_OGL_texture ("../../Textures/Barren Reds.JPG", SOIL_LOAD_AUTO , SOIL_CREATE_NEW_ID , SOIL_FLAG_MIPMAPS ));

 if (! heightMap -> GetTexture ()) {
 return ;
 }
 SetTextureRepeating ( heightMap -> GetTexture () , true );
 projMatrix = Matrix4 :: Perspective (1.0f ,10000.0f ,
( float ) width /( float ) height ,45.0f );

glEnable ( GL_DEPTH_TEST );
glEnable ( GL_CULL_FACE );
glCullFace ( GL_BACK );

init = true ;
Beispiel #6
0
MyGame::MyGame()	{
	//Init variables
	ammo = 0;
	force = 0;
	waveno=0;
	
	cube	= new OBJMesh(MESHDIR"cube.obj");
	cube->SetTexture(SOIL_load_OGL_texture(
			TEXTUREDIR"Barren Reds.jpg", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	if(!cube->GetTexture()) {
		cout << "barren reds is playing up" << endl;
	}
	quad	= Mesh::GenerateQuad();


	enemy = new OBJMesh(MESHDIR"ico2.obj");
	enemy ->SetTexture(SOIL_load_OGL_texture(
			TEXTUREDIR"leo.png", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	if(!enemy->GetTexture()) {
		cout << "leopard skins f****d" << endl;
	}
	
	sphere	= new OBJMesh(MESHDIR"ico2.obj");
	sphere->SetTexture(SOIL_load_OGL_texture(
			TEXTUREDIR"swirl.tga", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	if(!sphere->GetTexture()) {
		cout << "swirl is BUM" << endl;
	}

	player  = new OBJMesh(MESHDIR"ico2.obj");
	player->SetTexture(SOIL_load_OGL_texture(
			TEXTUREDIR"cliff.jpg", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	if(!player->GetTexture()) {
		cout << "cliff is f****d" << endl;
	}
	
	CubeMap = SOIL_load_OGL_cubemap(
		TEXTUREDIR"interstellar_ft.tga", TEXTUREDIR"interstellar_bk.tga",
		TEXTUREDIR"interstellar_up.tga", TEXTUREDIR"interstellar_dn.tga",
		TEXTUREDIR"interstellar_rt.tga", TEXTUREDIR"interstellar_lf.tga", 
		SOIL_LOAD_RGB,
		SOIL_CREATE_NEW_ID,0);
	enemy->SetCubeMap(CubeMap);
	if(!CubeMap)
		cout << "cube maps f*****g broken";
	

	bumpShader = new Shader(SHADERDIR"bumpVertex.glsl",SHADERDIR"bumpFragment.glsl");
	if(!bumpShader->LinkProgram()) {
		return;
	}

	
	enemyShader = new Shader(SHADERDIR"perPixelVertex.glsl",SHADERDIR"enemyFragment.glsl");
	if(!enemyShader->LinkProgram()) {
		return;
	}

	heightmap = new HeightMap(TEXTUREDIR"stage1.raw");
	heightmap->SetTexture(SOIL_load_OGL_texture(
			TEXTUREDIR"grass.jpg", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	heightmap->SetBumpMap(SOIL_load_OGL_texture(
			TEXTUREDIR"grassbump.jpg", SOIL_LOAD_AUTO,
			SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));
	SetTextureRepeating(heightmap->GetBumpMap(),true);

	if(!heightmap->GetTexture()){
		cout << "height maps f*****g broken" << endl;
	}

	if(!heightmap->GetBumpMap()) {	
		cout << "height map bump map f*****g broken" << endl;
	}

	for(int i = 0; i < NO_PROJECTILES; ++i) {
		projectiles[i] = BuildSphereEntity(25.0f);
		projectiles[i]->GetPhysicsNode().SetPosition(Vector3((51.0f* i) + 100.0f,500.0f,30.0f * i));
		projectiles[i]->GetPhysicsNode().sleep = true;
	}

	for(int i = 0; i < NO_LASERS; ++i) {
		PhysicsSystem::GetPhysicsSystem().AddLaser(buildLaserEntity());

	}
	
	PlanePos = Vector3(2048.0f,100.0f,2048.0f); // y = 450.0f
	playerEntity = buildPlayerEntity();
	PhysicsSystem::GetPhysicsSystem().SetPlayer(playerEntity);
	allEntities.push_back(playerEntity);
	allEntities.push_back(BuildHeightmapEntity());
	
	for(int i = 0; i < NO_PROJECTILES; ++i) {
		allEntities.push_back(projectiles[i]);
	}

	for(int i = 0; i < 10; ++i) {
		EnemyEntity* ee = buildEnemyEntity(Vector3(PlanePos.x + 150,PlanePos.y + 150, PlanePos.z + (i * 90) - 270));
		ee->SetY(100.0f + (100.0f * i));
		allEntities.push_back(ee);
		PhysicsSystem::GetPhysicsSystem().AddEnemy((ee));
	}


	
	//gameCamera = new Camera(-2.0f,270.0f,Vector3(-360.0f,450.0f,3408.0f));
	//gameCamera = new TPCamera();
	gameCamera = new CameraMan(playerEntity->circleT);
	gameCamera->toggleLock();
	Renderer::GetRenderer().SetCamera(gameCamera);

	ret = new Reticule(WIDTH,HEIGHT,FOV,ASPECT, gameCamera);
	//ret->c = gameCamera;
	Renderer::GetRenderer().SetReticule(ret);
	PhysicsSystem::GetPhysicsSystem().SetReticule(ret);

	//ret = new Reticule();
}
Renderer::Renderer(Window &parent) : OGLRenderer(parent) {
	camera = new Camera(-30.0f, 180.0f, Vector3(0.0f, -1500.0f, 0.0f));
	quad = Mesh::GenerateQuad();
	quad_corner = Mesh::GenerateQuad();

	heightMap = new HeightMap(TEXTUREDIR"terrain.raw");
	heightMap->SetTexture(SOIL_load_OGL_texture(TEXTUREDIR"BarrenReds.JPG", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	sceneShader = new Shader(SHADERDIR"Test_03_TexturedVertex.glsl", SHADERDIR"Test_03_TexturedFragment.glsl");
	bool sceneFlag = sceneShader->LinkProgram();

	combineShader = new Shader(SHADERDIR"Test_03_TexturedVertex.glsl", SHADERDIR"Test_10_ProcessFragment.glsl");
	bool combFlag = combineShader->LinkProgram();

	if (!combineShader->LinkProgram() || !sceneShader->LinkProgram() || !heightMap->GetTexture()) {
		return;
	}

	SetTextureRepeating(heightMap->GetTexture(), true);

	// scene depth texture
	glGenTextures(1, &bufferDepthTex);
	glBindTexture(GL_TEXTURE_2D, bufferDepthTex);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);

	// colour texture
	for (int i = 0; i < 2; ++i) {
		glGenTextures(1, &bufferColourTex[i]);
		glBindTexture(GL_TEXTURE_2D, bufferColourTex[i]);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
	}

	glGenTextures(1, &debugColorTex);
	glBindTexture(GL_TEXTURE_2D, debugColorTex);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);

	// set up buffer for scene rendering and post processing
	glGenFramebuffers(1, &bufferFBO);
	glGenFramebuffers(1, &processFBO);
	glGenFramebuffers(1, &debugbufferFBO);

	glBindFramebuffer(GL_FRAMEBUFFER, bufferFBO);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferColourTex[0], 0);

	if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE || !bufferDepthTex || !bufferColourTex[0]) {
		return;
	}

	glBindFramebuffer(GL_FRAMEBUFFER, 0);
	glEnable(GL_DEPTH_TEST);
	init = true;
}
Renderer::Renderer(Window &parent):
OGLRenderer(parent) {
	camera = new Camera(-10.0f, 220.0f, Vector3(0,500,0));
	quad = Mesh::GenerateQuad();

	heightMap = new HeightMap("../../Textures/terrain.raw");
	heightMap->SetTexture(SOIL_load_OGL_texture("../../Textures/Barren Reds.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_MIPMAPS));

	sceneShader = new Shader("../../Shaders/TexturedVertex2.glsl", "../../Shaders/TexturedFragment2.glsl");
	processShader = new Shader("../../Shaders/TexturedVertex2.glsl", "../../Shaders/EdgeFragment.glsl");

	if (!processShader->LinkProgram()) {
		return;
	}
	if (!sceneShader->LinkProgram()) {
		return;
	}
	if (!heightMap->GetTexture()) {
		return;
	}

	SetTextureRepeating(heightMap->GetTexture(), true);

	//Generate scene depth texture.
	glGenTextures(1, &bufferDepthTex);
	glBindTexture(GL_TEXTURE_2D, bufferDepthTex);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, width, height,
				0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);

	//And colour texture.
	for (int i = 0; i < 2; ++i) {
		glGenTextures(1, &bufferColourTex[i]);
		glBindTexture(GL_TEXTURE_2D, bufferColourTex[i]);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
	}

	glGenFramebuffers(1, &bufferFBO); //Render the scene into this.
	glGenFramebuffers(1, &processFBO); //Post-processing in this.

	glBindFramebuffer(GL_FRAMEBUFFER, bufferFBO);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, bufferDepthTex, 0);
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferColourTex[0], 0);

	//Check FBO attachment success with this command
	if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE || !bufferDepthTex || !bufferColourTex[0]) {
		return;
	}

	glBindFramebuffer(GL_FRAMEBUFFER, 0);
	glEnable(GL_DEPTH_TEST);
	init = true;
}