Level of Detail Optimization with LOD Groups

The two biggest drains on your game’s frame rate are script execution and geometry, and you can save a ton of geometry by using LOD groups to make your objects swap to simpler versions or cull (hide) when you get far away.

Here’s how I applied this to the numerous red chairs in the ITU Copenhagen level in Code Hero.

Modeling the original

  1. I made the high-poly chair to match photos of the ITU as closely as possible.
  2. I placed the groups of tables and chairs in every hangout room overlooking the ITU lobby and it looked like the photos.
  3. I tested my game on a MacBook and suffered huge frame rate drops.

Modeling the low-poly LOD 1


  1. I returned to the chair models and added a second layer called LOD 1.
  2. In LOD 1 layer, I duplicated the original group of objects from the chair and pasted them in place onto the new layer with the old layer hidden.
  3. I drew a new set of super simple squared polygons over the existing chair back and legs.
  4. I matched the materials with the paint can and eye dropper.
  5. I re-enabled the high detail layer to make sure my models matched up as perfectly as possible, adjusting chair leg endpoints to get a better fit.
  6. Then I saved my changes and since it is in Sketchup 2015 format it auto-reimported into Unity.

Updating the prefab


  1. My prefabs still had the old chair geometry with the new changes in Sketchup not visible.
  2. I clicked on the original ITU Chair prefab in the Project panel.
  3. I dragged the new ITU Chair model onto it to overwrite the old version with the new one including the LOD 1 group of objects.
  4. I placed the chair prefab into the scene.
  5. I clicked Add Component button and chose LOD Group.
  6. In the LOD Group component, I clicked on LOD 1 and dragged the low LOD group from inside my model into the LOD group on the inspector.
  7. I clicked on the LOD 0 in the inspector and dragged the high LOD group from inside my model into the LOD group on the Inspector.
  8. In the Inspctor panel I clicked Prefab / Apply to migrate my new LOD grouped chair to all the instances of the chair prefab in the scene.
  9. I deleted and replaced any straggler chairs that weren’t using the prefab.



  1. I hit play and moved around checking that the switch from rounded to square geometry was as subtle as possible with no visible shifting of position, just straightening of lines. Notice the chairs in the foreground are smooth and the ones in the back of the room are straight. Chairs in the extreme distance are hidden, which I could change by making my lowest LOD still render the simple chair renderers.
  2. I checked my profile by clicking Stats in the game view and basked in the reduction of chairs from 1550 polygons to 154 each, for a reduction of about 150,000 polygons from the scene.

There’s more to optimize

Next step is to apply a mesh combiner on the chair geometries to make sure all the groups from Sketchup get turend into a single draw call. We’ll share that guide next.


Here’s the full LOD Group docs from Unity:

LOD Group




LOD Group inspector
LOD Group inspector





There are two modes for calculating the blend factor:


The blend factor is accessed as the unity_LODFade.x uniform variable in your shader program. Either keywordLOD_FADE_PERCENTAGE or LOD_FADE_CROSSFADE will be chosen for objects rendered with LOD fading.


Look at the example of SpeedTree trees to see how LODGroup is configured and how the SpeedTree shader utilizes theunity_LODFade variable.



Leave a Reply


WordPress.com Logo


Google photo


Twitter picture


Facebook photo


Connecting to %s