ReferenceMaterial nodesTexture
Flipbook
One frame of a grid of frames in the picture, frame going 0 to 1 through them all from the top left, and that frame's uv.
ƒFlipbook
UV00RGB
Columns4R
Rows4G
Phase0B
Mip Bias0A
RGBA
UV
Inputs
| Pin | Type | Starts at | Notes |
|---|---|---|---|
UVuv | vec2 | 0 | – |
Columnscolumns | float | 4 | – |
Rowsrows | float | 4 | – |
Phaseframe | float | 0 | – |
Mip BiasmipBias | float | 0 | – |
Outputs
| Pin | Type |
|---|---|
RGBcolour | vec3 |
Rr | float |
Gg | float |
Bb | float |
Aalpha | float |
RGBArgba | vec4 |
UVuv | vec2 |
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(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0))).rgb; float n2_r = (lib_unpremultiply(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0))).r; float n2_g = (lib_unpremultiply(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0))).g; float n2_b = (lib_unpremultiply(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0))).b; float n2_alpha = (lib_unpremultiply(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0))).a; vec4 n2_rgba = lib_unpremultiply(texture(iChannel0, vec2((((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).x, 1.0 - (((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0)))).y), 0.0)); vec2 n2_uv = ((fract(n1_uv) + vec2(mod(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))), max(4.0, 1.0)), floor(floor(mod(0.0 * max(4.0 * 4.0, 1.0), max(4.0 * 4.0, 1.0))) / max(4.0, 1.0)))) / vec2(max(4.0, 1.0), max(4.0, 1.0))); fragColor = vec4(n2_colour * clamp(n2_alpha, 0.0, 1.0), 1.0);}In a graph
●UV
U Tiling1
V Tiling1Centred
Square UV
ƒFlipbook
UVRGB
Columns4R
Rows4G
Phase0B
Mip Bias0A
RGBA
UV
◎Material OutputEnds here
Colour
Alpha1
Texture coordinates into the node, and the node into the material, as Studio draws them.
Related
Notes from the community
Written by creators and checked by the docs' editors. Not part of Motion's official reference.