Motion
Get Motion

ReferenceMaterial nodesTexture

Sample Texture LOD

The picture at a smaller size, smoothly: a cheap blur (the layer must have its mipmaps on to look smooth).

TexturepictureLod

Inputs

PinTypeStarts atNotes
UVuvvec20–
Levelblurfloat2–

Outputs

PinType
RGBcolourvec3
Rrfloat
Ggfloat
Bbfloat
Aalphafloat
RGBArgbavec4

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);    vec3 n2_colour = (lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)))).rgb;    float n2_r = (lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)))).r;    float n2_g = (lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)))).g;    float n2_b = (lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)))).b;    float n2_alpha = (lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)))).a;    vec4 n2_rgba = lib_unpremultiply(textureLod(iChannel0, vec2((n1_uv).x, 1.0 - (n1_uv).y), max(2.0, 0.0)));    fragColor = vec4(n2_colour * clamp(n2_alpha, 0.0, 1.0), 1.0);}

In a graph

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