Initially my plan was to have one array texture per unique size, but managing
the different textures and keeping everything consistent ended up being way
Therefore, this patch uses a simpler version that allocates a texture that
is large enough to fit the largest tile and then packs all tiles into as many
layers as necessary.
As a result, each UDIM texture only binds two textures (one for the actual
images, one for metadata) regardless of how many tiles are used.
Note that this removes per-tile GPUTextures completely, meaning that it