I think it’s time for another Ember progress report. Since the release of 0.5.1 I’ve spent some time fixing a large number of bugs, many of which were discovered through the public release of 0.5.1, and reported on the Launchpad. So far I’m very pleased with the Launchpad, since it’s actually being used for bug reporting. However, I’d like to highlight some of the new features in Ember currently being developed.
The main improvement is the inclusion of a new system for rendering foliage and trees. It’s called the Paged Geometry engine and is a plugin component to Ogre. As its name indicates it provides support for paged geometry, which means that instead of loading the geometry all at once it loads it one page at a time. This is crucial for foliage such as grass and bushes, since it would be too resource intensive, both memory and processing wise, to load all foliage in the world up front. By only loading the foliage close to the camera we can keep the memory use down, while still making it look like the whole world is constantly covered by foliage.
Ember has had support for foliage before, but this was very resource intensive since it basically loaded everything up front, and was therefore turned off by default. But with the new paged geometry system we can now provide good looking foliage by default. As with all things in Ember I’ve strived to make it as dynamic as possible, so that it should be easy to extend and modify. All settings are stored in a .terrain xml file, allowing developers to easily add or remove foliage layers. Currently the placement of foliage is handled internally by Ember, but this functionality will in the future be provided by Mercator. Just like the terrain layers this should all be defined on the server so that world developers have full control of where foliage is placed.
Another feature of the new Paged Geometry engine is support for imposters. This is a rendering technique where far away meshes are rendered to a 2d texture and then shown. Since it’s so far away, there’s no noticeable difference from the full mesh render, but the strain on the GPU is orders of magnitude smaller. This technique is what allows for the great forest vistas as seen in games such as Far Cry or Oblivion (well, pretty much all modern games). By having support for this in Ember we can now render thousands of trees at once without bringing the client to a halt. This will allow us to add much more trees to the forests in the world, making it look much more lifelike.
A progress report isn’t worth anything without some nice new screen shots though:
There’s still a lot of work to be done with lightning and colouring, as well as optimizing the imposter system while still allowing for tree entities to be manipulated in real time, but the results are looking mighty promising. More screen shots can be seen on the screen shot page.