Version: 2019.2
  • C#
Experimental: this API is experimental and might be changed or removed in the future.


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.



public static Experimental.TerrainAPI.PaintContext CollectNormals(Terrain terrain, Rect boundsInTerrainSpace, int extraBorderPixels);


terrainReference Terrain tile. Defines terrain space and heightmap resolution.
boundsInTerrainSpaceThe region in terrain space from which to collect normals.
extraBorderPixelsNumber of extra border pixels required.


PaintContext PaintContext containing the combined normalmap data for the specified region.


Helper function to set up a PaintContext that collects mesh normal data from one or more Terrain tiles.

CollectNormals identifies all of the normalmap pixels that are within extraBorderPixels of the bounds rectangle. The search is performed across adjacent connected Terrains. The pixels are collected into a temporary render texture and stored in PaintContext.sourceRenderTexture.

Important: there is no corresponding function to write modified normalmap data back to the Terrains, because the normalmap is not stored; it is calculated from the heightmap.

Once you are done using the sourceRenderTexture, you must call TerrainPaintUtility.ReleaseContextResources to release the RenderTexture resources.

See Also: PaintContext.GatherNormals and PaintContext.