This tutorial will show some steps on how to optimize an outdoor level to get better performance.
Measuring performance can be hard. The main target is 60 FPS on a high end computer running at 1080p and 30 FPS on a low end computer running at 720p with low quality settings.
There are other things that are much easier to measure. Here is a list of goals for different parameters (in 1080p):
The terrain is the main part of an outdoor level. It should make out most of the geometry of the level.
Rendering terrain is much faster than rendering multiple meshes. To get good performance it is important to use the terrain to make up most of the silhouette of the level and just use meshes for important landmarks and details.
To be able to use terrain for all of the silhouette it is possible to set a Cliff Texture. With Cliff Textures it is possible to use terrain as walls instead of having to use meshes. The cliff texture is automatically projected to the steep cliffs of the terrain.
Terrain optimization checklist:
Fog is great for adding atmosphere and scale to a level. But it can also be used to increase performance of the level.
Performance can be increased in two ways by using fog. The first is by using a fog color with alpha set to 255. Setting alpha to the max value means that objects further away than the Fog End will get fully fogged and get the color set to the fog color. Since the object gets fully fogged we can now render it without texturing which greatly increases speed.
When the alpha is set to 255 it is also possible to activate Fog Culling in the settings. This will cause any object further away than Fog End to get culled and not rendered at all. This setting should only be used when there is no need for silhouettes.
Distance culling is a technique for removing objects that are far away from the player. It works by calculating how big an object will be on the screen and then removes it if it is smaller than the selected value. It is also possible to set a minimum range, any object closer than this will never get culled.
Distance culling works on all types of objects. Objects that get culled will fade in/out and not pop directly. A good value for the Screen Size parameter is 5-10%.
Each entity and static mesh has a setting called “Distance Culling”. Having this toggled will mean that objects can get culled by distance culling. Most objects should have this toggled. The only objects that should disable distance culling are gameplay objects, landmarks and other important objects like lamps.
Distance Culling is the most important setting for getting good performance on outdoor levels.
Directional light with sky and ground color should make up the base of the outdoor lighting.
Most outdoor levels also require the use of directional light shadows. This is a very expensive operation. To lower the impact of shadow rendering you will have to uncheck the “Cast shadows” checkbox for some types of objects.
Here is a list of object that should not cast shadows:
The objects selected in this picture are located above the player and can not be reached because of invisible walls. Shadow casting can be disabled for them without affecting the quality of the scene.