Terrain Generator

In my last term at Waterloo I took CS 488 which is the computer graphics course offered by the CS Department. The course culminates in a really open-ended final project where you can basically do whatever you want so I decided to take my game engine Emerson for a spin and try to develop a procedural terrain generator. It turned out to be kind of overkill for what the course actually required, but I did manage to tie for first place in the professor's "best project" competition.

I completed this in about 3 weeks working from a fork of my Emerson renderer. The project required that your submission could run on Linux with a GeForce 8800 GT. Theoretically Emerson is pretty portable but that's never really been tested since I run Windows on all my machines. Luckily for once theory and practice actually gave the same results and it took less than a day to port things over.

Some of the main features:

  • All geometry is generated procedurally from perlin noise
  • A quad-tree based level of detail system manages the level of detail of a pool of terrain tiles that reuse a pool of buffer resources
  • You can walk forever and new terrain is generated as you go
  • There are shadows using cascaded shadow maps
  • Parallax mapping on the tree trunks
  • A dynamic sky including haze, clouds, and the sun
  • Water implemented as a post-processing effect

All in all, I think it turned out pretty well and I'm planning to backport it to the mainline engine since it's the best demo we've got so far.

Screenshots

These screenshots are 1920x1080 so they may take a while to open

Demo Reel

I've also made YouTube video showing off someĀ  of the stuff I thought was cool, although running the actual program is better since you can mess with the controls.

Download

If you're interested, you can download the source and windows binaries. The code actually builds on Linux too but you need CMake. Currently, this version will only work on NVIDIA hardware, not because I used to work there, but because NVIDIA exposes a very useful proprietary OpenGL extension.

System Requirements
  • Windows XP/Vista or Linux
  • A SM3.0 capable NVIDIA graphics card with recent drivers. (GeForce 7800 and up running 16x.xx or greater should be fine)