void init(void) { // GL inits glClearColor(0.2,0.2,0.5,0); glEnable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); printError("GL inits"); projectionMatrix = frustum(-0.1, 0.1, -0.1, 0.1, 0.2, 50.0); // Load and compile shader program = loadShaders("shaders/terrain.vert", "shaders/terrain.frag"); glUseProgram(program); printError("init shader"); glUniformMatrix4fv(glGetUniformLocation(program, "projMatrix"), 1, GL_TRUE, projectionMatrix.m); glUniform1i(glGetUniformLocation(program, "tex"), 0); // Texture unit 0 LoadTGATextureSimple("maskros512.tga", &tex1); // Load terrain data LoadTGATextureData("fft-terrain.tga", &ttex); tm = GenerateTerrain(&ttex); printError("init terrain"); }
void init(void) { forward = SetVector(1,1,1); // GL inits glClearColor(0.2,0.2,0.5,0); glEnable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glCullFace(GL_BACK); printError("GL inits"); projectionMatrix = frustum(-0.1, 0.1, -0.1, 0.1, 0.2, 500.0); // Load and compile shader programSky = loadShaders("sky.vert", "sky.frag"); skybox = LoadModelPlus("skybox.obj"); program = loadShaders("terrain.vert", "terrain.frag"); //goal = LoadModelPlus("cube.obj"); // If I put this here the walls get darker printError("init shader"); glUseProgram(programSky); glActiveTexture(GL_TEXTURE2); glUniform1i(glGetUniformLocation(programSky, "tex"),2); // Texture unit 1 glBindTexture(GL_TEXTURE_2D, myTex); LoadTGATextureSimple("SkyBox512.tga", &myTex); glActiveTexture(GL_TEXTURE3); glUniform1i(glGetUniformLocation(program, "tex"),3); // Texture unit 1 glBindTexture(GL_TEXTURE_2D, tex3); LoadTGATextureSimple("gold.tga", &tex3); glUseProgram(program); glActiveTexture(GL_TEXTURE0); glUniformMatrix4fv(glGetUniformLocation(program, "projMatrix"), 1, GL_TRUE, projectionMatrix.m); glUniform1i(glGetUniformLocation(program, "tex"),0); // Texture unit 1 glBindTexture(GL_TEXTURE_2D, tex1); LoadTGATextureSimple("maskros512.tga", &tex1); glActiveTexture(GL_TEXTURE1); glUniform1i(glGetUniformLocation(program, "tex"),1); // Texture unit 1 glBindTexture(GL_TEXTURE_2D, tex2); LoadTGATextureSimple("dirt.tga", &tex2); // Load terrain data LoadTGATextureData("MazeWall.tga", &ttexm); LoadTGATextureData("fft-terrain.tga", &ttex); tm = GenerateMazeTerrain(&ttexm,&ttex,vertexArray); mm = GenerateTerrain(&ttex,vertexArray); goal = LoadModelPlus("groundsphere.obj"); // The walls do not get darker printError("init terrain"); sfMakeRasterFont(); // init font sfSetRasterSize(600, 200); }
void NewTerrain(GLfloat pos){ std::cout << "New Terrrain!! KOM IHÅG ATT DESTUERA MODELLERNA NÄR MAN TILLSÄTTER NY!!!!!! " << std::endl; GenerateTerrain(game_->maze->left->left); GenerateTerrain(game_->maze->left->right); GenerateTerrain(game_->maze->right->right); GenerateTerrain(game_->maze->right->left); game_->maze->generate_transform(pos,-(height_-1.0)/2.0); //game_->maze->get_all_pos(); }
void init(void) { skybox = LoadModelPlus("skybox.obj"); sphere = LoadModelPlus("groundsphere.obj"); // GL inits glClearColor(0.2,0.2,0.5,0); glEnable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); printError("GL inits"); frustum(-0.1, 0.1, -0.1, 0.1, 0.2, 200.0, projectionMatrix); cam_pos.x = 108.0f; cam_pos.y = 60.0f; cam_pos.z = 144.0f; up.x = 0; up.y = 1; up.z = 0; // Load and compile shader program = loadShaders("terrain.vert", "terrain.frag"); glUseProgram(program); printError("init shader"); glUniformMatrix4fv(glGetUniformLocation(program, "projMatrix"), 1, GL_TRUE, projectionMatrix); glUniform1i(glGetUniformLocation(program, "tex"), 0); // Texture unit 0 LoadTGATextureSimple("dirt.tga", &tex1); // Init light Point3D lightSourcesColorsArr = {0.5f, 0.5f, 0.5f}; // Grey light GLfloat specularExponent = 2.0; GLint isDirectional = 1; Point3D lightSourcesDirectionsPositions = {0.5f, 1.0f, 0.5f}; // grey light, positional glUniform3fv(glGetUniformLocation(program, "lightSourcesDirPosArr"), 1, &lightSourcesDirectionsPositions.x); glUniform3fv(glGetUniformLocation(program, "lightSourcesColorArr"), 1, &lightSourcesColorsArr.x); glUniform1f(glGetUniformLocation(program, "specularExponent"), specularExponent); glUniform1i(glGetUniformLocation(program, "isDirectional"), isDirectional); // Load terrain data LoadTGATexture("fft-terrain.tga", &ttex); tm = GenerateTerrain(&ttex); printError("init terrain"); // Load textures LoadTGATextureSimple("SkyBox512.tga", &skytex); LoadTGATextureSimple("grass.tga", &spheretex); }
Terrain::Terrain() { block_types.push_back(BlockType(glm::vec3(0.1f, 0.4f, 0.8f))); block_types.push_back(BlockType(glm::vec3())); block_types.push_back(BlockType(glm::vec3())); block_types.push_back(BlockType(glm::vec3())); block_types.push_back(BlockType(glm::vec3())); GenerateTerrain(); operator()(0, -1) = 3; operator()(1, -1) = 3; }
void StartGame () { unitList = NULL; /* --- Create our hero's ship --- */ hero = CreateHero (); /* --- Generate the map --- */ GenerateTerrain (); /* --- Place the people --- */ PlacePeople (); /* --- Place aliens --- */ PlaceAliens (); }
void InitTerrain(){ GenerateTerrain(game_->maze); GenerateTerrain(game_->maze->left); GenerateTerrain(game_->maze->left->left); GenerateTerrain(game_->maze->left->right); GenerateTerrain(game_->maze->right); GenerateTerrain(game_->maze->right->right); GenerateTerrain(game_->maze->right->left); game_->maze->generate_transform(0.0,-(height_-1.0)/2.0); }
void ProcessUserInput() { Keyboard &keyboard = Keyboard::instance(); if (keyboard.keyPressed(Keyboard::KEY_ESCAPE)) PostMessage(g_hWnd, WM_CLOSE, 0, 0); if (keyboard.keyDown(Keyboard::KEY_LALT) || keyboard.keyDown(Keyboard::KEY_RALT)) { if (keyboard.keyPressed(Keyboard::KEY_ENTER)) ToggleFullScreen(); } if (keyboard.keyPressed(Keyboard::KEY_H)) g_displayHelp = !g_displayHelp; if (keyboard.keyPressed(Keyboard::KEY_ADD) || keyboard.keyPressed(Keyboard::KEY_NUMPAD_ADD)) { g_camera.setRotationSpeed(g_camera.getRotationSpeed() + 0.01f); if (g_camera.getRotationSpeed() > 1.0f) g_camera.setRotationSpeed(1.0f); } if (keyboard.keyPressed(Keyboard::KEY_SUBTRACT) || keyboard.keyPressed(Keyboard::KEY_NUMPAD_SUBTRACT)) { g_camera.setRotationSpeed(g_camera.getRotationSpeed() - 0.01f); if (g_camera.getRotationSpeed() <= 0.0f) g_camera.setRotationSpeed(0.01f); } if (keyboard.keyPressed(Keyboard::KEY_V)) EnableVerticalSync(!g_enableVerticalSync); if (keyboard.keyPressed(Keyboard::KEY_SPACE)) GenerateTerrain(); if (keyboard.keyPressed(Keyboard::KEY_M)) Mouse::instance().smoothMouse(!Mouse::instance().mouseSmoothingIsEnabled()); if (keyboard.keyPressed(Keyboard::KEY_T)) g_disableColorMaps = !g_disableColorMaps; }
void init(void) { p = SetVector(20, 20, 0); l = SetVector(0,0,-1); v = SetVector(0,1,0); // GL inits glClearColor(0.2,0.2,0.5,0); glEnable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); printError("GL inits"); projectionMatrix = frustum(-0.1, 0.1, -0.1, 0.1, 0.2, 50.0); // Load and compile shader program = loadShaders("terrain4.vert", "terrain4.frag"); glUseProgram(program); printError("init shader"); glUniformMatrix4fv(glGetUniformLocation(program, "projMatrix"), 1, GL_TRUE, projectionMatrix.m); LoadTGATextureSimple("maskros512.tga", &tex1); LoadTGATextureSimple("dirt.tga", &tex2); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, tex1); glUniform1i(glGetUniformLocation(program, "texUnit0"), 0); // Texture unit 0 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, tex2); glUniform1i(glGetUniformLocation(program, "texUnit1"), 1); // Load terrain data LoadTGATextureData("fft-terrain.tga", &ttex); tm = GenerateTerrain(&ttex); TextureData *texturePointer = &ttex; texWidth = texturePointer->width; printError("init terrain"); // Load objects sphere = LoadModelPlus("groundsphere.obj"); }
bool Scene::Startup() { MobileCamera* camera = new MobileCamera(100.0f, 0.1f); camera->SetInputWindow(window); camera->SetupPerspective(glm::pi<float>() * 0.25f, 16.0f / 9.0f, 0.1f, 10000.0f); camera->LookAt(glm::vec3(100, 100, 100), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0)); m_camera = camera; //SHADERS //procedural gen terrainShader = ShaderHandler::Get()->LoadShader((string)"TerrainShader", "Data/shaders/proceduralGen.vert", "Data/shaders/proceduralGen.frag"); planeShader = ShaderHandler::Get()->LoadShader((string) "PlaneShader", "Data/shaders/bluePlane.vert", "Data/shaders/bluePlane.frag"); //particles //objects //AntBar init /*TwInit(TW_OPENGL_CORE, nullptr); TwWindowSize(1280, 720); glfwSetMouseButtonCallback(window, OnMouseButton); glfwSetCursorPosCallback(window, OnMousePosition); glfwSetScrollCallback(window, OnMouseScroll); glfwSetKeyCallback(window, OnKey); glfwSetCharCallback(window, OnChar); glfwSetWindowSizeCallback(window, OnWindowResize);*/ tweakBar = TwNewBar("World_Editor"); TwAddVarRW(tweakBar, "Terrain Amplitude", TW_TYPE_FLOAT, &editAmplitude, ""); TwAddVarRW(tweakBar, "Terrain Persistance", TW_TYPE_FLOAT, &editScale, ""); //variable init barChanged = false; editAmplitude = 3.0f; editScale = 8; perlinSeed = 10; GenerateTerrain(64, editScale, editAmplitude); CreatePlane(64); return true; }
bool Scene::Update(double _dt) { m_camera->Update(_dt); if (oldAmp != editAmplitude || oldPers != editScale) { barChanged = true; } oldAmp = editAmplitude; oldPers = editScale; if (barChanged == true) { GenerateTerrain(64, editScale, editAmplitude); barChanged = false; } return true; }
void Terrain::Initialize(const char* sTexture, const char* sHeightMap, const char* sNormalMap, float fHeight) { SetHeight(fHeight); ImageBMP* image = new ImageBMP(m_OpenGL); image->Load(sHeightMap); m_Texture = new Texture(m_OpenGL); TextureID = m_Texture->GetTexture2D(sTexture); iWidth = image->GetWidth(); iHeight = image->GetHeight(); hs = new float*[image->GetHeight()]; Normal = new Vector3f*[image->GetHeight()]; NormalTemp = new Vector3f*[image->GetHeight()]; for (unsigned int i = 0; i < image->GetHeight(); ++i) { hs[i] = new float[image->GetWidth()]; Normal[i] = new Vector3f[image->GetWidth()]; NormalTemp[i] = new Vector3f[image->GetWidth()]; } for (unsigned int y = 0; y < image->GetHeight(); y++) { for (unsigned int x = 0; x < image->GetWidth(); x++) { unsigned char color = (unsigned char)image->GetData()[3 * (y * image->GetWidth() + x)]; float h = ((color / 255.0f) - 0.5f); SetHeight(x, y, h); } } ComputeNormal(); GenerateTerrain(); Bind(); vPosition = Vector3f(0, -20, 0); }
void init(void) { forward = SetVector(1,1,1); // GL inits glClearColor(0.2,0.2,0.5,0); glEnable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); printError("GL inits"); projectionMatrix = frustum(-0.1, 0.1, -0.1, 0.1, 0.2, 500.0); // Load and compile shader program = loadShaders("terrain.vert", "terrain.frag"); glUseProgram(program); printError("init shader"); glUniformMatrix4fv(glGetUniformLocation(program, "projMatrix"), 1, GL_TRUE, projectionMatrix.m); glActiveTexture(GL_TEXTURE0); glUniform1i(glGetUniformLocation(program, "tex"), 0); // Texture unit 0 LoadTGATextureSimple("grass.tga", &tex1); // glActiveTexture(GL_TEXTURE1); //glUniform1i(glGetUniformLocation(program, "tex"),1); // Texture unit 0 // LoadTGATextureSimple("dirt.tga", &tex2); // Load terrain data LoadTGATextureData("fft-terrain.tga", &ttex); tm = GenerateTerrain(&ttex); printError("init terrain"); // bunny= LoadModelPlus("bunnyplus.obj"); }
static void Generate(void) { char *trackdllname; char *extName; FILE *outfd = NULL; // Get the trackgen paramaters. sprintf(buf, "%s", CFG_FILE); CfgHandle = GfParmReadFile(buf, GFPARM_RMODE_STD | GFPARM_RMODE_CREAT); trackdllname = GfParmGetStr(CfgHandle, "Modules", "track", "track"); sprintf(buf, "%smodules/track/%s.%s", GetLibDir (), trackdllname, DLLEXT); if (GfModLoad(TRK_IDENT, buf, &modlist) < 0) { GfFatal("Failed to find the track module %s", buf); } if (modlist->modInfo->fctInit(modlist->modInfo->index, &TrackItf)) { GfFatal("Failed to init the track module %s", buf); } // This is the track definition. sprintf(trackdef, "tracks/%s/%s/%s.xml", TrackCategory, TrackName, TrackName); TrackHandle = GfParmReadFile(trackdef, GFPARM_RMODE_STD); if (!TrackHandle) { fprintf(stderr, "Cannot find %s\n", trackdef); exit(1); } // Build the track structure with graphic extensions. Track = TrackItf.trkBuildEx(trackdef); if (!JustCalculate) { // Get the output file radix. sprintf(buf2, "tracks/%s/%s/%s", Track->category, Track->internalname, Track->internalname); OutputFileName = strdup(buf2); // Number of goups for the complete track. if (TrackOnly) { sprintf(buf2, "%s.ac", OutputFileName); // Track. outfd = Ac3dOpen(buf2, 1); } else if (MergeAll) { sprintf(buf2, "%s.ac", OutputFileName); // track + terrain + objects. outfd = Ac3dOpen(buf2, 2 + GetObjectsNb(TrackHandle)); } // Main Track. if (bump) { extName = "trk-bump"; } else { extName = "trk"; } sprintf(buf2, "%s-%s.ac", OutputFileName, extName); OutTrackName = strdup(buf2); } if (JustCalculate){ CalculateTrack(Track, TrackHandle, bump); return; } GenerateTrack(Track, TrackHandle, OutTrackName, outfd, bump); if (TrackOnly) { return; } // Terrain. if (MergeTerrain && !MergeAll) { sprintf(buf2, "%s.ac", OutputFileName); /* terrain + objects */ outfd = Ac3dOpen(buf2, 1 + GetObjectsNb(TrackHandle)); } extName = "msh"; sprintf(buf2, "%s-%s.ac", OutputFileName, extName); OutMeshName = strdup(buf2); GenerateTerrain(Track, TrackHandle, OutMeshName, outfd, saveElevation); if (saveElevation != -1) { if (outfd) { Ac3dClose(outfd); } switch (saveElevation) { case 0: case 1: sprintf(buf2, "%s.ac", OutputFileName); sprintf(buf, "%s-elv.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, buf2, 1); if (saveElevation) { break; } case 2: sprintf(buf, "%s-elv2.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutMeshName, 1); if (saveElevation) { break; } case 3: sprintf(buf, "%s-elv3.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutMeshName, 0); if (saveElevation) { break; } case 4: sprintf(buf, "%s-elv4.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutTrackName, 2); break; } return; } GenerateObjects(Track, TrackHandle, CfgHandle, outfd, OutMeshName); }
void InitApp() { // Setup fonts. if (!g_font.create("Arial", 10, GLFont::BOLD)) throw std::runtime_error("Failed to create font."); // Setup textures. if (!(g_nullTexture = CreateNullTexture(2, 2))) throw std::runtime_error("failed to create null texture."); for (int i = 0; i < TERRAIN_REGIONS_COUNT; ++i) { if (!(g_regions[i].texture = LoadTexture(g_regions[i].filename.c_str()))) throw std::runtime_error("Failed to load texture: " + g_regions[i].filename); } // Setup shaders. std::string infoLog; if (!(g_terrainShader = LoadShaderProgram("content/shaders/terrain.glsl", infoLog))) throw std::runtime_error("Failed to load shader: terrain.glsl.\n" + infoLog); // Setup terrain. if (!g_terrain.create(HEIGHTMAP_SIZE, HEIGHTMAP_GRID_SPACING, HEIGHTMAP_SCALE)) throw std::runtime_error("Failed to create terrain."); GenerateTerrain(); // Setup camera. Vector3 pos; pos.x = HEIGHTMAP_SIZE * HEIGHTMAP_GRID_SPACING * 0.5f; pos.z = HEIGHTMAP_SIZE * HEIGHTMAP_GRID_SPACING * 0.5f; pos.y = g_terrain.getHeightMap().heightAt(pos.x, pos.z) + CAMERA_Y_OFFSET; g_camera.setBehavior(Camera::CAMERA_BEHAVIOR_FIRST_PERSON); g_camera.setPosition(pos); g_camera.setAcceleration(CAMERA_ACCELERATION); g_camera.setVelocity(CAMERA_VELOCITY); g_camera.perspective(CAMERA_FOVX, static_cast<float>(g_windowWidth) / static_cast<float>(g_windowHeight), CAMERA_ZNEAR, CAMERA_ZFAR); float upperBounds = (HEIGHTMAP_SIZE * HEIGHTMAP_GRID_SPACING - (2.0f * HEIGHTMAP_GRID_SPACING)); float lowerBounds = static_cast<float>(HEIGHTMAP_GRID_SPACING); g_cameraBoundsMax.x = upperBounds; g_cameraBoundsMax.y = CAMERA_ZFAR; g_cameraBoundsMax.z = upperBounds; g_cameraBoundsMin.x = lowerBounds; g_cameraBoundsMin.y = 0.0f; g_cameraBoundsMin.z = lowerBounds; // Setup input. Mouse::instance().hideCursor(true); Mouse::instance().setPosition(g_windowWidth / 2, g_windowHeight / 2); }
void Application::generate() { const char *extName; FILE *outfd = NULL; // Get the trackgen paramaters. sprintf(buf, "%s", CFG_FILE); CfgHandle = GfParmReadFile(buf, GFPARM_RMODE_STD | GFPARM_RMODE_CREAT); // Load and initialize the track loader module. GfLogInfo("Loading Track Loader ...\n"); std::ostringstream ossModLibName; ossModLibName << GfLibDir() << "modules/track/" << "track" << '.' << DLLEXT; GfModule* pmodTrkLoader = GfModule::load(ossModLibName.str()); // Check that it implements ITrackLoader. ITrackLoader* PiTrackLoader = 0; if (pmodTrkLoader) PiTrackLoader = pmodTrkLoader->getInterface<ITrackLoader>(); if (!PiTrackLoader) return; // This is the track definition. sprintf(trackdef, "%stracks/%s/%s/%s.xml", GfDataDir(), TrackCategory, TrackName, TrackName); TrackHandle = GfParmReadFile(trackdef, GFPARM_RMODE_STD); if (!TrackHandle) { fprintf(stderr, "Cannot find %s\n", trackdef); ::exit(1); } // Build the track structure with graphic extensions. Track = PiTrackLoader->load(trackdef, true); if (!JustCalculate) { // Get the output file radix. sprintf(buf2, "%stracks/%s/%s/%s", GfDataDir(), Track->category, Track->internalname, Track->internalname); OutputFileName = strdup(buf2); // Number of groups for the complete track. if (TrackOnly) { sprintf(buf2, "%s.ac", OutputFileName); // Track. outfd = Ac3dOpen(buf2, 1); } else if (MergeAll) { sprintf(buf2, "%s.ac", OutputFileName); // track + terrain + objects. outfd = Ac3dOpen(buf2, 2 + GetObjectsNb(TrackHandle)); } // Main Track. if (Bump) { extName = "trk-bump"; } else { extName = "trk"; } sprintf(buf2, "%s-%s.ac", OutputFileName, extName); OutTrackName = strdup(buf2); } if (JustCalculate){ CalculateTrack(Track, TrackHandle, Bump); return; } GenerateTrack(Track, TrackHandle, OutTrackName, outfd, Bump); if (TrackOnly) { return; } // Terrain. if (MergeTerrain && !MergeAll) { sprintf(buf2, "%s.ac", OutputFileName); /* terrain + objects */ outfd = Ac3dOpen(buf2, 1 + GetObjectsNb(TrackHandle)); } extName = "msh"; sprintf(buf2, "%s-%s.ac", OutputFileName, extName); OutMeshName = strdup(buf2); GenerateTerrain(Track, TrackHandle, OutMeshName, outfd, DoSaveElevation); if (DoSaveElevation != -1) { if (outfd) { Ac3dClose(outfd); } switch (DoSaveElevation) { case 0: case 1: sprintf(buf2, "%s.ac", OutputFileName); sprintf(buf, "%s-elv.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, buf2, 1); if (DoSaveElevation) { break; } case 2: sprintf(buf, "%s-elv2.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutMeshName, 1); if (DoSaveElevation) { break; } case 3: sprintf(buf, "%s-elv3.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutMeshName, 0); if (DoSaveElevation) { break; } case 4: sprintf(buf, "%s-elv4.png", OutputFileName); SaveElevation(Track, TrackHandle, buf, OutTrackName, 2); break; } return; } GenerateObjects(Track, TrackHandle, CfgHandle, outfd, OutMeshName); }