I have a map with a fair number of static mesh Speedtrees, though not a full on dense forest… and am getting a lot of slowdown (22ms) in Occlusion Cull when using Stat InitViews. These trees really don’t occlude anything rendering wise, so is there a way to optimize things so they are not considered in the query?
This is exactly the kind of performance scenario that was optimized in version 4.8.
The issue with the previous foliage rendering system is that the cluster size is static based on the settings in the foliage tool. It may be that in your case you can get better performance by changing the cluster size or max per cluster, but generally we found that there was no good setting for large forests. Either your clusters will contain too few trees and you will have tons of occlusion queries (which is most likely where you are sitting), or you tweak the clusters to have too many trees in which case occlusion is no longer a problem, but the “bounds” of each cluster get so large that you are rendering way more trees at much higher LOD than before (often including tons of trees way behind you).
Ue4.8 breaks out of that situation with hierarchical instanced static mesh components. There is no user-set cluster size to worry about and trees LOD as expected.
Until such time as you can try your scene in 4.8 I suggest trying to adjust the cluster sizes in increments keeping in mind you can easily swing too far in the other direction.
Also be sure that you have reasonable LOD screen size settings. It’s kind of uninuitive, but as you change the foliage cluster size, you will have to dramatically change the “screen percentage” settings in your mesh LODs to get the same response, since the “screen size” will be calculated for entire clusters. In 4.8 that issue is also fixed, so trees LOD properly.
Thanks for the response Ryan!
We are planning to move to 4.8 once its official so it seems like everything will work out fine then.