Tree and Foliage Optimisation for Unreal Engine

Hi Unreal Community,

A big problem I have run into working on Open World Landscapes and games that feature Trees or Foliage - is the massively bad effect those Trees and Foliage may have on Frame Rate.

For example I’ve worked on some Game Maps where the Foliage Actors (including trees) were costing as much as 50-80 Frames Per Second, even with Lighting Built. That is a serious performance cost just for grass, flowers and trees.

As far as I understand the cause of this high cost on performance for Trees / Foliage is caused by Overdraw of transparent geometry.

In order to fix this problem I have developed a technique using Blender 3D to cut away the transparent geometry that is causing the Overdraw, and massively reduce the performance cost of trees and flower assets that suffer from Overdraw of transparent geometry.

So I’ve made a Tutorial Series to discuss this problem and offer the workflow / solution I have developed to fix it using Blender 3D.

This is a 3 Part Tutorial:

Part 1: Part 1 - Unreal Engine Tree / Foliage Optimisation. - YouTube

Part 2: Part 2 - Unreal Engine Tree / Foliage Optimisation. - YouTube

Part 3: Part 3 - Unreal Engine Tree / Foliage Optimisation Tutorial. - YouTube

In order to follow these tutorials you need the Addon for Blender “Select By Color” that allows you to select geometry based on its Vertex Color.

You can download that Addon here: https://drive.google.com/file/d/1yEo…ew?usp=sharing

Please Note: The optimisation techniques in these tutorials only apply to Trees / Foliage that are suffering from Overdraw of excess Transparent Geometry.

Please forgive the mistakes, I’ve made in these tutorials, and that they are a tad slow. But I hope they will be helpful for a lot of people who experience frame rates issues with Trees and Foliage.

Have fun with Trees and Foliage! :slight_smile:

P.S. I welcome feedback and comments if I’ve made any mistakes. Cheers!

2 Likes

Just a bump for this highly-recommended piece of workflow advice. Great work on this Russell :thumbsup:

The problem is indeed Overdraw, but you are handling the problem mostly on the wrong end.
What these trees need are proper LODs.

Thanks @ SoloVenture. :slight_smile:

@ Ralidex - Thanks for your feedback! :slight_smile: But I have to say I don’t think LODs are the solution. LODs can help, yes of course. But LODs will not fix the problem of Overdraw while you are close to the asset(s). While close to the asset, the billboard geometry (At LOD 0) is still gonna suffer from Overdraw - which will have a performance hit. The only viable solution I can see at LOD 0 is to cull the transparent geometry - hence my workflow.

In all my testing scenarios, the trees with culled billboards outperformed trees with non-culled billboards by between 5-50 FPS (depending on the foliage amount), even when both had LODs (Large Prop). I’m not quite sure what you mean by “Proper LODs” though? I see no advantage to 3D Artists hand building LODs, over UEs Auto LOD tool which works great. (especially considering hand building LODs is an incredibly boring and time consuming task)

So yeah, when both the non-culled, and the culled trees were both using Large Prop LOD Group. the culled trees using my workflow far outperformed their original counterparts. In Part 1 of my video you can see a demonstration of 400 trees on either side, both sets have LODs. The conclusion is the same, the culled trees are far better in terms of performance. :slight_smile:

2 Likes