Wind Zones
Working with Heightmaps

Grass and other details

A Terrain might have grass clumps and other small objects (such as rocks) covering its surface. Unity renders these objects using textured quads or full Meshes, depending on the level of detail and performance you require.

Terrain with grass
Terrain with grass

You can enable the Billboard property of a textured quad so that it automatically faces the camera. This is a very common way to achieve a good grass effect in game development.

For detail Meshes, you can set the Render Mode property as either Vertex Lit or Grass.

  • Select Vertex Lit to create Meshes that are vertex lit with real normals, which do not move in the wind.
  • Select Grass to create Meshes that are vertex lit using Terrain normals, which do move in the wind.

Enabling details

To enable grass and detail painting, select the Paint Details button on the toolbar.

Paint Details in the Terrain Inspector
Paint Details in the Terrain Inspector

Initially, a Terrain has no grass or details available. In the Inspector, click the Edit Details button to display a menu with the Add Grass Texture and Add Detail Mesh options. Click either option to bring up a window that lets you choose Assets to add to the Terrain for painting.

For grass, the window looks like this:

The Add Grass Texture window
The Add Grass Texture window

Detail Texture is the texture that represents the grass. You can download textures from the Asset Store, or create your own textures. A texture is a small image with alpha set to zero for the empty areas. Note that “Grass” is a generic term; it is possible for a texture to represent flowers or man-made objects such as barbed wire coils.

The Min Width, Max Width, Min Height, and Max Height values specify the upper and lower size limits grass clumps that are generated. To create an authentic look, the grass is generated in random “noisy” patterns with bare patches interspersed.

The Noise Spread value controls the approximate size of the bare and grassy patches, with higher values indicating more variation within a given area. Unity uses the Perlin noise algorithm to generate noise, and Noise Spread refers to the scaling it applies between the x,y position on the Terrain and the noise image. The alternating patches of grass are considered “healthier” at the centers than at the edges, and colors set in the Healthy Color and Dry Color settings represent the health of the grass.

Finally, when you enable the Billboard option, the grass images rotate so that they always face the Camera. This is useful when you want to show a dense field of grass because clumps are two-dimensional, and not visible from the side. However, with sparse grass, the rotations of individual clumps might become apparent to the viewer, creating a strange effect.

For detail meshes such as rocks, the window looks like this:

The Add Detail Mesh window
The Add Detail Mesh window

Use Add Detail Mesh to select a Prefab from your Project. Unity scales this randomly between the Min Width and Max Width values, and the Min Height and Max Height values. Unity uses width scaling for both the x and z axes, and height scaling for the y-axis. The Noise Spread, Healthy Color and Dry Color values work the same as they do for grass.

You can set the Render Mode to Vertex Lit or Grass.

  • In Vertex Lit mode, Unity renders detail objects as solid, vertex-lit GameObjects in the Scene.
  • In Grass mode, Unity renders instances of detail objects in the Scene with lighting, in a way similar to grass.

  • 2019–01–29 Page amended with editorial review

  • Corrected Render Mode descriptions and updated screenshots

Wind Zones
Working with Heightmaps