Using detail textures for extra realism close-up
Checked with version: 4.1
A detail texture is a pattern that is faded in gradually on a mesh as the camera gets close. This can can be used to simulate dirt, weathering or other similar detail on a surface without adding to rendering overhead when the camera is too far away to see the difference. This lesson explains how to use detail textures with Unity.
Obtaining the texture
A detail texture is a greyscale image that is used to lighten or darken another texture selectively. Where a pixel has a brightness value between 0 and 127 the image will be darkened (where zero denotes maximum darkness) and when the value is between 129 and 255, the image will be lightened (where 255 denotes maximum brightness). A value of exactly 128 will leave the underlying image unchanged.
If the detail image has an average brightness greater or lower than 128, the whole image will appear to be lightened or darkened as the camera gets close, which gives the wrong effect. It is therefore important to make sure that the brightness levels in the image are roughly symmetrical around 128. You can check this is the case in most image editing software by looking at the image histogram or the Levels adjustment (which typically also shows the histogram). If the histogram shows a symmetrical "bulge" that is slightly to the left or right of the centre, you can bracket the bulge with the min/max input level arrows to get the brightness centred on 127.
To avoid visible boundaries where the detail texture wraps, you should ideally use an image that tiles perfectly. If the image is created using the image editor's noise function, the results will typically tile without artifacts. Also, filters such as Difference Clouds often have setting to make the resulting image wrap. Simple effects like this can make quite effective detail maps when simulating dirt, grainy surfaces or weathering.
Unity import settings for the detail texture
Once you have saved your image to the Unity project, you can select it to see its import settings in the Inspector.
Set the texture type to Advanced and then enable the Fadeout Mip Maps setting under Generate Mip Maps. You should see a range control for the Fade Range; the numeric values for the range aren't specified but the defaults are suitable for most purposes. For distances below the start of the range, the detail texture will be visible. The range indicates the distance values over which the detail texture will gradually fade before eventually becoming invisible.
The detail material
To use the detail texture, you should set the material to use the Diffuse Detail shader using the menu on the Material Inspector.
In addition to the base texture, you will see a second sampler box to receive the detail texture you have just imported. Typically, you will want to set its Tiling values quite high (maybe about 10).
The detail material can now be applied to any suitable object to show the detailing effect.