Offroad Engine v2.0 (2013)
Map editor for my latest engine, successor of the Offroad engine. It is designed to support much larger landscape (streamed in real-time from harddisk), greater visibility distance and tools to manipulate with terrain geometry, surface type and to add objects like trees, houses and roads.
- Multithreading - engine consists from separate modules, each runs in its own thread(s)
- 3D objects with LODs and HW instancing (engine supports up to 67 millions of objects per map)
- Visibility distance has been increased to 2.5km
- Map size is currently 41 x 41 km with 5m grid (will be unlimited in future)
- Surface types - contains a tool to apply several surface types to terrain mesh
- Terrain editing - contains tools designed to real-time manipulation with landscape geometry
- Water areas - allows to create large water areas at once
- Roads - are automatically generated based on user-defined key points
- Separate tool for preparing LOD models and generating tree sprites (see LOD Creator)
- GPU grass rendering using GLSL shaders
- Multiplatform - Linux, Windows
Editor is designed to load a heigtmap image and to create the landscape based on it. Because the heigtmap can be very large, there are several methods used to reduce computational complexity of the rendering. First, terrain is streamed from the disk in realtime and only the areas that is really needed. Second, complexity of the visible geometry is reduced with distance. To preserve the look of the scene, engine generates normal maps from the full geometry and then applies it on the reduced terrain parts. Normal maps are then mixed with the regular surface textures using GLSL shaders.
Landscape surface rendering works on the texture splatting principe and engine currently supports four different surface types (each with its own texture): grass, sand, forest and field which can be set independently for every geometry vertex. In future I want to add also surface texture normal and specular maps for better terrain appearance at lower distances. Every surface type will also have assigned set of 3D objects which can randomly appear on it, for example several types of plants for the grass texture, trees for the forest texture, and so on.
There are several tools implemented to allow easy and fast landscape manipulation:
- Surface edit - allows user to select non-convex area and then assign the surface texture.
- Raise - raise selected area (size of the area is changeable)
- Lower - lower selected area
- Level - levels all vertices in the area to the selection normal plane
- Smooth - smooths selected area