Coder Social home page Coder Social logo

alirezamdv / procedural-terrain-generation-opengl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from isaacleimgruber/cgx-project

0.0 0.0 0.0 40.67 MB

[2017] Procedural Terrain Generation using C++ and OpenGL (and Perlin Noise)

CMake 1.82% C++ 37.75% C 43.49% GLSL 16.94%

procedural-terrain-generation-opengl's Introduction

Procedural terrain generation with OpenGL

main_2017-05-31_21-32-54

This project was completed for the “Introduction to computer graphics” course. The course focused on rendering techniques and their theoretical basis while leaving to the students the task to learn how to actually implement those techniques in OpenGL. The initial goal was to generate a landscape using procedural techniques and add some basic lighting effects to it.

Several features were implemented in addition to the basic requirements:

  • Infinite terrain generation
  • Dynamic shadows
  • Adaptive level of details through the use of tessellation
  • Instantiated patches of grass
  • 3D model loading
  • Dynamic sky which mimics the natural colour changes throughout the day

See the screenshots of completed project below:

Patches of grass appear when appropriate terrain conditions are met. main_2017-05-31_21-06-18

Enjoying a virtual sunset. Note how the mountains cast their shadows onto the water surface.

main_2017-05-29_21-17-58

Reflections on the water surface vary over time depending on the waves and ripples.

main_2017-05-29_21-16-55

The terrain regenerates indefinitely when the user traverse the landscape. Mountains far away are faded to hide the regeneration process while at the same time giving the illusion of distance.

main_2017-05-29_21-15-50

Tessellation allows adjusting the level of detail of the terrain based on the distance to the observer and the importance of a given zone. Note how little geometry is used for the underwater part.

main_2017-06-21_11-00-33

The terrain is generated using Perlin noise based methods Perlin noise variations

Perlin noise variations

procedural-terrain-generation-opengl's People

Contributors

isaacleimgruber avatar julien-h avatar lkieliger avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.