# tangents

> The tangents of the Mesh.

## Definition

* **Type:** Property
* **Namespace:** [UnityEngine](/engine/6000.3/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public Vector4[] tangents { get; set; }
```

### Remarks

Tangents are mostly used in bump-mapped Shaders. A tangent is a unit-length vector that follows Mesh surface along horizontal (U) texture direction. Tangents in Unity are represented as [Vector4](/engine/6000.3/script-reference/unityengine/vector4.md), with *x,y,z* components defining the vector, and `w` used to flip the binormal if needed.

Unity calculates the other surface vector (binormal) by taking a cross product between the normal and the tangent, and multiplying the result by tangent.w. Therefore, `w` should always be 1 or -1.

You should calculate tangents yourself if you plan to use bump-mapped shaders on the Mesh. Assign tangents after assigning [Mesh.normals](/engine/6000.3/script-reference/unityengine/mesh/normals.md) or using [Mesh.RecalculateNormals](/engine/6000.3/script-reference/unityengine/mesh/recalculatenormals.md).

**Note:** To make changes to the [Mesh.tangents](/engine/6000.3/script-reference/unityengine/mesh/tangents.md), it is important to copy the tangents from the [Mesh](/engine/6000.3/script-reference/unityengine/mesh.md). Once the [Mesh.tangents](/engine/6000.3/script-reference/unityengine/mesh/tangents.md) have been copied and changed, the [Mesh.tangents](/engine/6000.3/script-reference/unityengine/mesh/tangents.md) can be reassigned back to the [Mesh](/engine/6000.3/script-reference/unityengine/mesh.md).
