Motion
Get Motion

ReferenceMaterial nodesPost Process

CRT Curve

Bends uv like a tube screen; Inside Mask is 0 off the glass.

Post ProcesscrtCurve

Inputs

PinTypeStarts atNotes
UVuvvec20–
Curvaturecurvefloat0.2–

Outputs

PinType
UVuvvec2
Inside Maskinsidefloat

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);    vec2 n2_uv = ((n1_uv * 2.0 - 1.0) * (1.0 + 0.2 * vec2((n1_uv * 2.0 - 1.0).y * (n1_uv * 2.0 - 1.0).y, (n1_uv * 2.0 - 1.0).x * (n1_uv * 2.0 - 1.0).x) * 0.5) * 0.5 + 0.5);    float n2_inside = (step(0.0, ((n1_uv * 2.0 - 1.0) * (1.0 + 0.2 * vec2((n1_uv * 2.0 - 1.0).y * (n1_uv * 2.0 - 1.0).y, (n1_uv * 2.0 - 1.0).x * (n1_uv * 2.0 - 1.0).x) * 0.5) * 0.5 + 0.5).x) * step(((n1_uv * 2.0 - 1.0) * (1.0 + 0.2 * vec2((n1_uv * 2.0 - 1.0).y * (n1_uv * 2.0 - 1.0).y, (n1_uv * 2.0 - 1.0).x * (n1_uv * 2.0 - 1.0).x) * 0.5) * 0.5 + 0.5).x, 1.0) * step(0.0, ((n1_uv * 2.0 - 1.0) * (1.0 + 0.2 * vec2((n1_uv * 2.0 - 1.0).y * (n1_uv * 2.0 - 1.0).y, (n1_uv * 2.0 - 1.0).x * (n1_uv * 2.0 - 1.0).x) * 0.5) * 0.5 + 0.5).y) * step(((n1_uv * 2.0 - 1.0) * (1.0 + 0.2 * vec2((n1_uv * 2.0 - 1.0).y * (n1_uv * 2.0 - 1.0).y, (n1_uv * 2.0 - 1.0).x * (n1_uv * 2.0 - 1.0).x) * 0.5) * 0.5 + 0.5).y, 1.0));    fragColor = vec4(vec3(n2_uv, 0.0), 1.0);}

In a graph

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