Motion
Get Motion

ReferenceMaterial nodesShading

Point Light 2D

A point light over a bumpy surface: give it a normal and where the light is (uv).

Shadinglight2d

Inputs

PinTypeStarts atNotes
Normalnormalvec3(0, 0, 1)–
UVuvvec20–
Light PositionlightAtvec2(0.3, 0.3)–
Light Heightheightfloat0.3–
Shininessshininessfloat32–

Outputs

PinType
Diffusediffusefloat
Specularspecularfloat

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_diffuse = max(dot(normalize(vec3(0.0, 0.0, 1.0)), normalize(vec3((vec2(0.3, 0.3) - n1_uv) * vec2(iResolution.x / iResolution.y, 1.0), 0.3))), 0.0);    float n2_specular = pow(max(dot(normalize(vec3(0.0, 0.0, 1.0)), normalize(normalize(vec3((vec2(0.3, 0.3) - n1_uv) * vec2(iResolution.x / iResolution.y, 1.0), 0.3)) + vec3(0.0, 0.0, 1.0))), 0.0), max(32.0, 1.0));    fragColor = vec4(vec3(n2_diffuse), 1.0);}

In a graph

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