Grass is rendered using a splat of vertical billboards. They are not rotated towards the camera but rather criss cross. Rather than rendering a texture of grass, the blades are a power curve. The billboard has several joints to allow for wind animation. The colour of the grass is derived from the colour of the terrain without grass allowing for a smooth blend. This is not the case for sand, where it will not blend smoothly.

Grass on sand doesn't blend as smoothly

Grass Grid

A vtf heightmap based grid is rendered as a criss cross of billboards. The grass fades (gets smaller) into the distance so that the edge of the grid has vanished.

Grass and bracken only is rendered here to show the grass fade off vs bracken


Bracken uses a different system to grass. It renders textures from an array of fern and reed images. It too doesn't rotate billboards to the camera but renders criss cross groups. Again, they fade into the distance until the baked texture can take over. I use a seperate system to grass because grass is very fussy with its vanishing. Bracken doesn't need to be as fussy because it is noisier. Also it uses fewer splats per area and needs to span further because it has a larger sillhouette.

Rather than using a map to define where bracken is, I simply use a noise function and test for appropriate terrain.