Technical artist Maximilien Cleda showed how the team at Ubisoft approached the procedural vegetation in Ghost Recon Wildlands.
I’m Maximilien Cleda, I have been technical artist on Ghost Recon Wildlands since the beginning of the project, 5 years ago. I first started at Ubisoft 8 years ago. It was my first job after my graduate studies. I’ve worked on several games such as Assassin’s Creed multiplayer, Red Steel 2 and Ghost Recon Future Soldier.
On this production I was in charge of the vegetation in the game, from the asset production to the world building and performances on all platforms.
In parallel to that, I’ve worked on other natural parts of the game such as farm fields, lakes, rivers, terraforming and helped the world building team on camps and villages.
We have 2 systems working together. The grass system that spawns different patterns depending of the terrain splatting and a Houdini tool that gives us a lot of possibilities to spread bushes and trees on top of it.
It’s a pretty simple concept to spread trees and bushes. It’s basically a “cascade” of vegetation: big trees (red) spawn medium trees (green), which spawn small trees and bushes (blue).
To add complexity, we first tweak density, scale, slope, space between assets etc. Then we add another layer to the rules with sun direction, which species on which material splatting, material inclusion/exclusion such as flow maps, river beds, cliffs etc. And finally we can combine several rules with a delete threshold between them. Roads, railway, water area and footpath are removed automatically.
We worked closely with the terrain/rock artists to match material repartition rules and vegetation rules. This created another layer of complexity. This way, the amount of “vegetation friendly” material, rocks and flow maps directly affected the way a forest would look at the end.
On the asset side we tried to have different “steps” of the same species, and avoid having too many different species per rule. It was more natural and memory friendly. The more species you use, the more difficult it becomes to have something realistic and natural.
On the performance side, density was an issue. The solution we came with was: instead of having a fixed LOD distance per asset, we decided to be more organic and modulate those values depending of vegetation density.
So the same asset may have different LOD values depending of its position in the world. More density means more aggressive values and a quicker switch to the last LOD, which is the Imposter.
Imposters are the last important part to build such big forests, visible from long distances. It’s a dynamic billboard system that allows different side views of a tree depending of the camera angle.
It’s generated inside the engine so we don’t have any mismatch between the 3D model and the imposter. And it contains different channels to allow complex shading, such as keeping light direction, fake shadowing and translucency.