# Lerp

> Linearly interpolates between colors a and b using the interpolation ratio t.

## Definition

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

## Lerp(Color, Color, float)

Linearly interpolates between colors `a` and `b` using the interpolation ratio `t`.

```csharp
public static Color Lerp(Color a, Color b, float t)
```

### Parameters

**** (\[Color]\(/engine/6000.7/script-reference/unityengine/color)): The start color, returned when t = 0.**** (\[Color]\(/engine/6000.7/script-reference/unityengine/color)): The end color, returned when t = 1.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The interpolation ratio. Will be clamped to the range \[0; 1].

### Returns

| Type                                                          | Description                                                        |
| ------------------------------------------------------------- | ------------------------------------------------------------------ |
| [Color](/engine/6000.7/script-reference/unityengine/color.md) | The color resulting from linear interpolation between `a` and `b`. |

### Remarks

`t` is clamped to be between 0 and 1. When `t` is 0, the function returns `a`. When `t` is 1, the function returns `b`.

The code sample sets the color of a GameObject's material to a value between white and black, based on the amount of time that has elapsed.

```csharp
using UnityEngine;

public class ColorLerp : MonoBehaviour
{
    Color lerpedColor = Color.white;
    Renderer renderer;

    void Start()
    {
        renderer = GetComponent<Renderer>();
    }

    void Update()
    {
        lerpedColor = Color.Lerp(Color.white, Color.black, Mathf.PingPong(Time.time, 1));
        renderer.material.color = lerpedColor;
    }
}
```

Additional Resources: [Color.LerpUnclamped](/engine/6000.7/script-reference/unityengine/color/lerpunclamped.md).

## Lerp(Color, Color, float)

Linearly interpolates between colors `a` and `b` using the interpolation ratio `t`.

```csharp
public static Color Lerp(in Color a, in Color b, float t)
```

### Parameters

**** (\[Color]\(/engine/6000.7/script-reference/unityengine/color)): The start color, returned when t = 0.**** (\[Color]\(/engine/6000.7/script-reference/unityengine/color)): The end color, returned when t = 1.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The interpolation ratio. Will be clamped to the range \[0; 1].

### Returns

| Type                                                          | Description                                                        |
| ------------------------------------------------------------- | ------------------------------------------------------------------ |
| [Color](/engine/6000.7/script-reference/unityengine/color.md) | The color resulting from linear interpolation between `a` and `b`. |

### Remarks

`t` is clamped to be between 0 and 1. When `t` is 0, the function returns `a`. When `t` is 1, the function returns `b`.

The code sample sets the color of a GameObject's material to a value between white and black, based on the amount of time that has elapsed.

```csharp
using UnityEngine;

public class ColorLerp : MonoBehaviour
{
    Color lerpedColor = Color.white;
    Renderer renderer;

    void Start()
    {
        renderer = GetComponent<Renderer>();
    }

    void Update()
    {
        lerpedColor = Color.Lerp(Color.white, Color.black, Mathf.PingPong(Time.time, 1));
        renderer.material.color = lerpedColor;
    }
}
```

Additional Resources: [Color.LerpUnclamped](/engine/6000.7/script-reference/unityengine/color/lerpunclamped.md).
