Decoration

I see trees of green, red roses to.

Decoration are all the details of on a terrain that makes it look fun. Things such as rocks, trees or grass. Most of these can be static so they only need to be displayed exist in the physics system for the collision. If that's the case they can all be streamed in with the terrain and thrown away when the part of the terrain is removed. They can be stored by quadtree node in the terrain system where they exist.

Decals

The lowest decoration system that modify the material of the terrain. Examples are scorch marks and roads.

Undergrowth

Grass can get expansive fast when on try to render to much of it. One way to solve that is to only display the undergrowth in an area around the player. At the edges of the terrain the grass fades out or slides back below ground. The grass is split into cells that stream in as they are needed and they read from the terrain on how much grass need to be in each place.

Canopy

Trees and large bushes that can be visible at a distance.

Ground

A height map can not create overhangs so it's common to have extra terrain parts that can be placed directly by level designers. They act like normal objects so they need level of detail meshes and a max distance so they are not drawn to far away.

Other

Almost any mesh can be used as decoration if needed.

Reference

Grass Shader

https://giordi91.github.io/post/grass

L-systems

https://jsantell.com/l-systems/