Monday, December 8, 2014

Infinite Procedural Terrain Features + Screenshots

Today I'll post some screenshots of the 3DWorld "Tiled Terrain" mode. This is a viewing only mode (no gameplay) so I don't need to figure out how to make videos (yet). For some reason the screenshots seem duller than the actual game, possibly something to do with color temperature? The colors are actually much brighter on my new computer with an Nvidia card than on my other computer with an ATI card, where (0,0,0,1) is very black.

Tiled terrain mode is a scrolling terrain that follows the camera. The terrain data can be entirely procedurally generated on either the CPU or the GPU out to an unlimited distance; it can be loaded from a 16-bit heightmap of up to 32k x 32k pixels; It can be created through realtime user editing with brushes; or some combination of those sources.

I have added support for the following features (all realtime and configurable by the user in realtime):
* Procedural terrain with static and dynamic LOD, shadows from terrain, vegetation, clouds, and scenery.
* Water with view-dependent opacity and reflectivity, per-wavelength light attenuation, waves, full scene reflection, caustics, and foam.
* Pine tree forests of up to ~1M visible trees out to ~10Km view distance with dissolve to billboards in the distance.
* 5 types of deciduous trees with hundreds of fully procedural meshes that can be instanced over 10K times and custom normal/texture mapped impostors that fade in with distance.
* Huge fields of procedurally placed grass, flowers, and plants that extend to the horizon and blow in the wind, with soft shadows.
* Rocks, logs, stumps, and other types of ground clutter.
* Two-layer procedural animated cloud layer with fog and atmospheric effects + soft shadows on the ground.
* Dynamic weather effects such as rain, snow, lightning, and wind, day/night cycle, etc.
* User-controlled day/night cycle and nighttime starfield.
* First person shooter and flight simulator cameras with collision detection.

Here are some screenshots. Note that this runs at > 100FPS at 1080p and the player can actually move through the world at a nearly unbounded speed.

Island lake with grass, flowers, pine trees, and snowy peaks

Distant mountain and hills (Mt Rainier from 16k x 16k Puget Sound dataset with increased water level)
10K procedural trees out to the horizon
That's it for today. Later I'll try to take some time to explain how I created all of this. Also, at some point in the future I would like to make a game that uses this game engine in tiled terrain mode, but I'm not entirely sure what type of game to make.

2 comments:

  1. Very nice results! Is the engine available to play with? I'd be happy to host "release" builds at http://jhundts.org/

    ReplyDelete
  2. You can check out the code and build the project. I've been able to build with MS Visual Studio on Windows and gcc on linux. A few other people have managed to build it in Windows with my help. It seems like there's a lot of trouble with the dependencies, and it doesn't "just work" unless you have the same compiler version and the same libraries installed.

    I have one release Windows EXE from last year:
    https://github.com/fegennari/3DWorld/releases/tag/v1.0-release
    This works on both my desktop and work laptop. I don't think this ran properly for other people who tested it, but without being able to reproduce the problem I can't fix it. Probably missing DLLs.

    ReplyDelete