# Interpolation

## Linear interpolation (Lerp)

In Godot’s shader language there is no lerp function as there is in GDScript (or in some other shader languages). Instead there is the `mix()` function which is practically the same thing. It interpolates from `valueA` to `valueB` with `t` as the weight, 0 being `valueA` and 1 being `valueB`.

``mix(valueA, valueB, t);``

## Step

The `step()` function takes in a value and returns either 0.0 or 1.0 depending on if it is over or under a limit.

``step(limit, value);``

## Smooth step

Smooth step is very similar to step, but instead of returning only 0.0 or 1.0 the returned value will be 0.0 if it is below a first limit and 1.0 if it is above a second limit. Between the limits, the value will be smoothly interpolated (using a Hermite smooth interpolation, which is why you might come across this name when smooth step is mentioned).

In Godot you will do this with the `smoothstep()` function. In some tutorials, you might see `x = f * f * (3.0 - 2.0 * f)` or similar. This is the same thing and is what `smoothstep()` does under the hood.

``smoothstep(limit1, limit2, value);``

Read more about Mix, Step and Smooth step at The Book of Shaders.