Motion
Get Motion

ReferenceMaterial nodesMath

Curve

A smooth curve through four heights, at 0, a third, two thirds and 1: what In is bent into.

MathcurveNode

Inputs

PinTypeStarts atNotes
Inxfloat0–
Value 0at0float0–
Value 1/3at33float0.2–
Value 2/3at66float0.8–
Value 1at100float1–

Outputs

PinType
outfloat

The code it becomes

What Studio writes for the graph below: a few lines of the material's shader, worked out for every pixel.

void mainImage(out vec4 fragColor, in vec2 fragCoord){    float n2_out = clamp((0.5 * (2.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.0 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.2 : 0.8) + ((floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.2 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.8 : 1.0) - (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? (2.0 * 0.0 - 0.2) : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.0 : 0.2)) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) + (2.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? (2.0 * 0.0 - 0.2) : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.0 : 0.2) - 5.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.0 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.2 : 0.8) + 4.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.2 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.8 : 1.0) - (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.8 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 1.0 : (2.0 * 1.0 - 0.8))) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) + (3.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.0 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.2 : 0.8) - (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? (2.0 * 0.0 - 0.2) : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.0 : 0.2) - 3.0 * (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.2 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.8 : 1.0) + (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.8 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 1.0 : (2.0 * 1.0 - 0.8))) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) * fract(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)))), min((floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.0 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.2 : 0.8), (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.2 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.8 : 1.0)), max((floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.0 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.2 : 0.8), (floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 1.0 ? 0.2 : floor(min(clamp(0.0, 0.0, 1.0) * 3.0, 2.9999)) < 2.0 ? 0.8 : 1.0)));    fragColor = vec4(vec3(n2_out), 1.0);}

In a graph

Texture coordinates into the node, and the node into the material, as Studio draws them.