Base for all 2D nodes (Node2D and Control)
can be arranged in trees
are children of Viewport (what they are displayed through)
Movement
node that adds separate 2D rendering layer for all offspring
allows for a single scene tree to have different canvas transforms

every canvas layer has a transform (translation, rotation, scale, etc.) that can be accessed as a Transform2D.
backing for canvas nodes
! we can convert InputEvent coordinates to local coordinates with CanvasItem.make_input_local

Used for complex physical effects: sparks, fire, magic, smoke, mist