Level of Detail - LOD
Level of Detail (LOD) is a technique of reducing mesh complexity as objects become more distant from the viewer. LOD not only reduces the number of vertices that need to be processed, it also avoids the micro triangles problem and potentially looks better for objects placed further away in the scene.
Use LOD (whenever possible)
- Focus on the silhouette of the objects for LOD.
- LOD can also apply to shader complexity, optimise shader/material for object that are further away (e.g. by reducing number of texture used)
- Remove more polygon on flatter area
- Use mip map as LOD for texture.
When NOT to use LOD?
On a game where the camera view is static (not moving) and the objects are static as well.
- An example of this is shown below, LOD is not used on the Armies tech demo, where the camera is static so it is a different method of mesh optimisation, such as removing parts that are not visible from the camera.
- On object that is already very simple or it has a very low triangle count.
Why do we need to use LOD?
- As an object goes further from camera we can see less of the detail of that object. Visually, it will be hard to see difference between same object that consists of 200 triangles and another object with 2000 triangles from 20 meters away, so there's little point in having that many triangles that add nothing to the scene.
- This will boost performance as less triangles need to be processed.
- LOD will help mitigate problems caused by micro triangles (explained above).
- LOD will come with a memory overhead meaning a bigger file size. All this LOD mesh data will need to be saved in memory.
Use appropriate number of triangles on each LOD
- Generally speaking, reducing number of triangles between levels by 50% is a good rule of thumb.
- Do not have very dense triangles on lower LOD (LOD that only going to be only seen when object are further away).
- Test/check the LOD in the way they are meant to be seen at correct distance from camera. Lower LOD will look bad up close and that's fine as they are not meant to be seen that way.
Why LOD triangle count matters?
- Too little polygon reduction will mean less performance improvement as it will still render similar number of triangles.
- Too much polygon reduction and popping will be more noticeable on LOD switch.
Reasonable number of LOD level on an object
There is no hard number for how much LOD should an object have. It depends on the size and how important the object is.
- A character in an action game or a car in racing game might have more LOD level than small background objects like a tree.
- Too few LOD and the effect would be;
- The performance gain will not be worth it (If the polygon reduction is not substantial enough between levels).
- The popping that would happen on LOD switch might be more noticeable.
- Too much LOD will cost CPU workload, as there is processing needed to decide which LOD is going to be displayed.
- These LOD meshes will also cost memory (as we will need to store these extra meshes) meaning bigger a file size.
- The biggest real cost is time needed to create and verify these LOD models (if they are created manually by an artist).
How to create LOD meshes
- Manually within any 3D software.
- Remove edge loops or number of vertices on a 3D object.
- This gives more control to the artist, but may potentially take a longer time to do.
- Using modifier inside a 3D package such as ProOptimizer within 3DSMax, or Generate LOD Meshes within Maya.
- Using LOD generation software such as Simplygon, InstaLOD.
- Within game engine. Unreal have automatic LOD generation feature to easily create and apply LOD meshes.