An infinite procedural terrain, done in C++ with OpenGL. Developed in the context of the course CS-341 Introduction to Computer Graphics at École polytechinque fédérale de Lausanne (EPFL).
Here you can find a short video demo of the project.
You should have at least OpenGL 4.1 installed on your computer. Then all needed libraries are included in the external
folder.
To build and run the project execute the following commands:
mkdir build
cd build
cmake ..
make
cd project
./project
- Infinite generation
- Ridged multifractal perlin noise
- Tessellation shaders for level of detail rendering
- Distance fog
- Distance and normal based blend
- Mimap textures
- Cubemap texture
- Day and night cycle
- Normal mapping for wave simulation
- Sky and terrain reflection
- Simple distorsion
The project is provided with a simple GUI done using the imgui library. It allows to tweak parameters and changing camera mode between the six available, which are described here below.
Use W
A
S
D
keys to move around the terrain, drag with the mouse to change the view.
Use W
and S
to move forward and backwards, A
S
Q
E
to move rotate the camera respectively left, right, up and down.
When in flythrough mode all camera movements have an inertial behaviour.
The commands are the same as for the Flythrough camera, but in this camera mode you are always on the terrain level.
This camera mode follows a prerecorded Bezier path. You can increase/decrease the camera speed pressing W
/S
.
Move the camera as in Custom mode, press R
to record a Bezier control point.
After recording a Bezier path in the Record Bezier mode, this camera follows it. Again you can increase/decrease the camera speed pressing W
/S
.
MIT licensed, details in LICENSE.md
- Albergoni Tobia - aTobyWanKenobi
- Invernizzi Hakim - inverniz
- Romerio Lucio - lromerio