# Gather(Func<ITerrainInfo, Texture>, Color, Material, int, Action<ITerrainInfo>, Action<ITerrainInfo>)

> Gathers user-specified Texture data into sourceRenderTexture.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.TerrainTools](/engine/6000.5/script-reference/unityengine/terraintools.md)
* **Assembly:** UnityEngine.TerrainModule

```csharp
public void Gather(Func<PaintContext.ITerrainInfo, Texture> terrainSource, Color defaultColor, Material blitMaterial = null, int blitPass = 0, Action<PaintContext.ITerrainInfo> beforeBlit = null, Action<PaintContext.ITerrainInfo> afterBlit = null)
```

### Parameters

**** (\[Func\<ITerrainInfo, Texture>]\(https\://learn.microsoft.com/dotnet/api/system.func-1)): A function that returns the Texture data to collect from each Terrain.**** (\[Color]\(/engine/6000.5/script-reference/unityengine/color)): The default color for `sourceRenderTexture`.**** (\[Material]\(/engine/6000.5/script-reference/unityengine/material)): The material used to copy the data.  If null, the default blit material is used.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The material pass used to copy the data.**** (\[Action\<ITerrainInfo>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional action to call before copying from each Terrain. The default is null.**** (\[Action\<ITerrainInfo>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional action to call after copying from each Terrain. The default is null.

### Remarks

This function collects Texture data from all Terrain tiles in the PaintContext, and merges that data into `sourceRenderTexture`. The `terrainSource` function specifies what data to collect from each Terrain. Gather assumes that the Texture data, which `terrainSource` returns, is mapped over the Terrain tile in a manner similar to the Heightmap and Alphamaps.

First, the function clears `sourceRenderTexture` to `defaultColor`.

Then, it uses the following steps to gather each Terrain in the PaintContext:

1. Calls `terrainSource` to retrieve the Texture.

2. Calls `beforeBlit`.

3. Uses `blitMaterial` and `blitPass` to copy The Texture into `sourceRenderTexture`.

4. Calls `afterBlit`.

Additional Resources: [PaintContext](/engine/6000.5/script-reference/unityengine/terraintools/paintcontext.md), [PaintContext.Scatter](/engine/6000.5/script-reference/unityengine/terraintools/paintcontext/scatter.md).
