Page MenuHome

Support for UDIM textures and tiled images
Closed, ResolvedPublicDESIGN


This is the design task for supporting tiled images (and therefore UDIM textures) in Blender.


Essentially, a tiled image consists of multiple files, where each file covers one unit square in the UV space.
Currently, the layout is hardcoded to ten tiles per row which is the standard for UDIM textures.

UDIM refers to a naming scheme for these tiles - tile (x, y) is assigned the number 1001 + 10*y + x. Most of Blender doesn't need to care about this, it's only really relevant for loading/saving files and displaying them in the UI.


Fundamentally, tiled textures are similar to image sequences - they consist of a number of image files and buffers. Therefore, the core implementation is handled like image sequences which allows to reuse the existing image cache. This is done by adding a new source type, IMA_SRC_TILED, which specifies that the image consists of multiple tiles.

The ImageUser now contains a tile index that is used when acquiring the ImBuf, and the Image contains the number of tiles.


Generally, the remaining work is to update all the areas that access images in Blender and handle the tiles correctly. These areas can be roughly split into "using images" and "editing images" - for example, support in the Viewport, Eevee and Cycles are essential for using tiles textures, while support in texture painting and baking is only needed for editing and/or creating them.

Since the main motivation for UDIM support is the ability to use textures generated with external tools, the "using images" part has priority.


Image Editor
  • Showing all tiles in the Image Editor (rB89c0dc4ebdb8)
  • Supporting Image Editor operators like color sampling (rB5c62468e4b39)
  • Labeling/Naming tiles (rB4875f41ea6da)
  • Optionally showing a tile grid even without a loaded image for laying out UVs
  • Texture painting support (rBcc4defac041f)
  • Maybe support drawing across tile borders
  • Better UI
3D texture painting
  • Support for drawing on tiled images (rBbc05599bd0c4)
  • Maybe support drawing across tile borders
  • Support tiled images as Cycles textures in SVM mode (rB62550b490ac6)
  • Support tiled images as Cycles textures in OSL mode
  • Support baking to tiled images
Known bugs
  • Occasional crashes in the painting undo code (only in release builds, debug builds are stable)
  • Wrong painting radius when painting on tiles with different size and/or aspect ratio
More coming

Event Timeline

Lukas Stockner (lukasstockner97) lowered the priority of this task from 90 to Normal.

Sounds good to me, I don't have any objections to the design.

Will UDIM support make it's way to 2.81? Pretty please... =))

wll udims be added to 2.81?

Seems like quite a few of the required items for this are done. The last big item left looks to be:

Packing/Unpacking tiled images

Otherwise improved UI, painting/drawing across boundaries, and the Cycles specific stuff can always be handled down the road. It would be great if this was rolled into the current Blender 2.82 alpha builds...

Please do not forget about UV projection mapping! How it will working with UDIM meshes.

In our upcoming free "Camera Projection Painter" addon. This feature will key feature to switch big 3D scanning studios from Mari or Mudbox to a Blender.

I would say that painting across tile borders is one of the main reasons UDIM is interesting to me when texturing (and one of the biggest pains to work around when it is not supported, like in Substance Painter).
So I would consider it a core feature of the UDIM workflow regarding texture painting,and ask developers to (please) do not treat it as a "maybe".

Is it possible to lock a material to a specific tile?
So when changes are made to the model, and the model is unwrapped for the second time the uv of that material stays to the same tile

If I am not clear please ask =-)

There doesn't seem to be any way to use udims with the displacement modifier. Very important for any displacement textures.

This task is obsolete now that UDIM is committed, future improvements are tracked in T72390.