Grass Settings Window


For controlling the appearance and style of Grass layers on the landscape. (Note that this window is only enabled for Registered versions of Forester)


Grass Layer List

Click to select the grass layer that you wish to edit.


Click to bring up a list of preset grass types. Select the type that you wish to add.


Deletes the current grass layer from the scene.

Blade Type

This currently has only one standard grass option, but has been included for possible future implementation of different plant types (eg. Meadow Flowers, Crop Types, Animation Options, etc)



Type a name to describe the current grass layer. (For information purposes only)

Layer Active

Turns the current grass layer on and off. Allows test renders to be performed on each separate layer to speed up scene creation.


Click to select the colour of the active grass layer.


Range 0-100% - controls how bright the highlights appear on the grass blades. A high value can make the grass look 'wetter'. (In POV-Ray it controls the amount of Phong reflection)


Blade Height

Set the average height (length) of the grass blades in terrain units.

Size Variance

Sets the percentage height variance of the grass from the Blade Height.


Sets the Width of the base of the grass blades as a proportion of its height.



Sets the basic number of grass blades per unit square. (A high density will obviously take long to render). Values between 50-120 are usually sufficient. (Note that the Fall-off and Cut-off parameters also affect the density so this figure is only a general setting).


Used to control the rate at which the grass density decreases as the blades become smaller in the view. Lower values increase the density, higher values decrease the density. It is best to experiment with each particular scene to achieve the best compromise between rendering time and grass realism.

Cut-off Size

As the grass blades get smaller (and further away) in the image it becomes pointless including them in the scene as they have a less noticable effect. The Cut-off size (calculated by Forester for each blade using the Camera Zoom, Image Dimensions, Blade Size and Blade distance from the Camera) sets the minimum size of the blades in the scene. Note that this is measured in pixels, and that value of less than one pixel are still logical, especially if anti-aliasing is used (which samples light rays less than one pixels apart).

Surface Normals

Each grass blade is formed from a single, basic triangle (i). By varying the surface normal at each corner of the triangle, different effects can be achieved to give the blade more realism.

Curvature-W (Width)

This setting controls the amount of deformation of the grass blade surface normal to give a curved appearance across the width of the blade. Although the blade triangles are geometrically flat, the surface normal deformation effect can be quite convincing (ii).

Curvature-L (Length)

This setting controls the amount of deformation of the grass blade surface normal to give a curved appearance across the length of the blade (iii).

Perpendicular to Ground

If on then the surface normal at the base of the grass blade will always be parallel to the ground, as if the blade grows straight out of the ground, and not at an angle (iv).



If ticked then each blade will have a random lean from 0-90


Mean tilt of blades (0-90)


Tilt variance about the mean.



If ticked then each blade will have a random rotation from 0-90


Mean rotation of blades (0-360)


Rotation variance about the mean.


The grass blades distribution function works in a similar fashion to to the objects distribution. A grass layer can be set so that grass only grows within a certain altitude or surface slope range. It uses a four-point probability or multiplier function which defines the 'chances' of growth at each altitude or slope. At points below H-a or S-a the probability/multiplier is zero so nothing will grow at that point. The probability/multiplier increases to 1 at H-a/S-a and is constant at 1 until H-c/S-c. It then decreases to zero at H-d/S-d.


This selection determines whether the function is used as a probability or a multiplier. If it is set to Probability, then the function returns a probability of growth at each point which affects the density of the blades. So, for example if the altitude distribution is set so that the function returns 0.5 at a particular altitude, then the number of blades at that altitude will be half of the density value.

If Multiplier is selected then the Size of the blades is multiplied by the function. So, using the previous example, at that particular altitude there would still be the full Density amount of blades, but they would each be half their usual size.

H-a, H-b, H-c, H-d

These parameters set the appropriate altitude points a,b,c and d on the distribution function (in terrain units)

S-a, S-b, S-c, S-d

These parameters set the appropriate slope points a,b,c and d on the distribution function (in degrees).


Image dimensions

Before adding any grass layers decide on the final image dimensions that you will be using. The actual number of blades of grass in a rendered image is dependant on the size of the image (the larger the image, the larger the blades would be, so more distant blades need to be included). Use the Small Preview option to render a smaller test image of the scene, rather than temporarily decreasing the size manually. (When using the Small Preview option, all image-size-dependant calculations are carried out using the final image size).

If the image size is increased once the grass layers have been defined, it is likely that the final scene file will be a lot larger than expected!

Parameter Order

When doing test renders the density value may be temporarily decreased. It is best to set the various parameters in the following order (as changing a previous value can mean all other values have to be re-calibrated):

  1. Image Size
  2. Grass Height
  3. Grass Height/Width
  4. Fall-off
  5. Cut-off
  6. Density

Grass Size

It is usually more effective to have grass that is slight larger than the scale of the rest of the landscape. For example, if a scene has trees which are 2 terrain units high, which may equate to 10 metres in real life, then grass that is 50cm high would equate to 0.1 terrain units. However, unless the camera is very close, these small blades won't appear dense enough, or will take ages to render. So using grass of 0.3 or even 0.5 terrain units might be a better compromise.


Forester performs a number of tests before it places each blade of grass. Firstly it checks for visibility - if the grass does not appear within the cameras viewing frustrum then it will not be included in the POV-Ray scene file. Also, if the terrain that the grass is growing on is facing away from the camera, then it will not be included. The pixel size of the blade in the final image is also calculated to determine whether it will be large enough to show up. The surface normal deformations are only applied to larger blades in the foreground. The width of blades that are further away are increased slightly to help the chance of them being 'hit' by the sampling rays. Blades with no surface normal deformation (either because they are far away, or because the Curvature-W, Curvature-L and Perpendicular to Ground settings are all zero) are defined in POV-Ray as simple Triangles (as opposed to Smooth_Triangles) to reduce the file size and parsing time. The blade vectors in the POV-Ray scene are reduced to 2,3 or 4 decimal places depending on pixel-size to decrease the file size.

A final word...

The grass features in Forester are very new and I hope to further improve both their realism and features without increasing rendering times or system requirements. The optimizations listed above already improve processing and render times by a significant amount. (When I first started playing with grass I was ending up with file size in excess of 100Mb and over 1,000,000 blades in a scene). With these optimizations an (apparantly) similarly detailed scene may only be 10-20Mb in size and have just 100,000 blades. Among the other ideas which I would like to experiment with at some point (if I haven't started to do so already), and will hopefully include in a later release of Forester are: