Tree Optimization
Tree Optimization
Tree Optimization
your scene – and yes SpeedTree can bog your scene down, but at the same time, if you set them up
properly they can perform very nicely and they look awesome!
So lets start by describing how your scene typically works when it is rendered – for every object in
your scene that object along with all its materials need to be set to the GPU to render it. And when
you have relatively high poly things like SpeedTree’s, and lots of them, this can really bog your
system down and kill your FPS.
To mitigate this, starting with Unity 5.5, Unity have implemented GPU Instancing on the SpeedTree
shader. GPU Instancing is a technique in which you send the object to your GPU just once, and then
draw it many times. And for things like tree’s that are replicated many times in your scene this can
make a massive performance difference.
So in this tutorial I will show you how to set instancing up on SpeedTrees to get a potentially
massive performance and frame rate boost.
In the scene below I am running a lot of SpeedTree instances, at Fantastic Quality, along with Grass
and Unity Post FX – Antialiasing, Ambient Occlusion, and Vignetting, and getting 250 frames per
second! It’s running on a GTX 1070, but even with a decent graphics card it is pretty easy to bring
to its knees unless you do some optimization.
Note – I have raised the camera up a little so you can see the SpeedTree billboards in the distance.
For most games this would not be something that you would do. And when you look at the settings
below use them as a guide, but tweak them for your game. Every game is different and you will
always be managing a trade off between visual fidelity and performance.
So what do we need to do ?
Go into your terrain settings and disable bake light probes for trees.
Go into your tree settings and disable light probes for all the LOD’s. Also think about disabling
shadows for lower LOD’s as their impact as it can be significant.
LOD 0
LOD 1
LOD 2
Billboard
Culled – If you drag this setting to the left, this will move the billboards closer, and distant
SpeedTree’s will be completely culled, and this can make a big difference as well. Tweak it until the
distance is right for your scene.
You will need to do this for every type of tree in your scene and this alone will provide a significant
frame rate boost. However there is more you can do.
Check your GI / lighting settings. The following settings are generally good settings for an open
world. Note that I am not using the SkyBox for my ambient light as this is slower. I have also
dropped the resolution on my precomputed GI, and removed baked GI completely.
Now lets look at your general quality settings. The shadow distance is one of the killer settings here.
The lower you make it, the less your graphics card needs to do, and the better the frame rate you
will get. Also explore the LOD bias. This will change the distance at which lower LOD’s kick in,
and can also significantly improve performance. Note: You can change these settings for each
quality level.
Now look at your Graphics Settings. You will get better performance with deffered lighting.