Motion
Get Motion

ReferenceMaterial nodesProcedural › Patterns

Caustics

Bright wavering lines of light, as on the floor of a pool.

Inputs

PinTypeStarts atNotes
UVpvec20–
Scalescalefloat4–
Speedspeedfloat0.4–

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){    vec2 n1_uv = (vec2(fragCoord.x / iResolution.x, 1.0 - fragCoord.y / iResolution.y) * vec2(1.0, 1.0));    vec2 n1_centred = (vec2(fragCoord.x - 0.5 * iResolution.x, 0.5 * iResolution.y - fragCoord.y) / iResolution.y);    vec2 n1_square = (vec2(fragCoord.x, iResolution.y - fragCoord.y) / iResolution.y);    float n2_out = pow(clamp(1.0 - abs((sin((n1_uv * 4.0).x + cos((n1_uv * 4.0).y * 1.3 + (iTime * 0.4))) + sin((n1_uv * 4.0).y * 1.1 + cos((n1_uv * 4.0).x * 0.9 - (iTime * 0.4) * 1.2)))) * 0.5, 0.0, 1.0), 6.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.