Tileable PBR Textures From Any Photo (2026)
Rhys Howell
Nov 11, 2026
A tileable PBR texture is a material whose maps repeat with no visible seams, so one small sample can cover a whole wall or floor. In Marso Studio, tileable PBR textures now start from any photo. The Generate PBR Textures node has three tiling modes, and the new one, Make tileable, turns a photo that doesn't repeat into one that does, then predicts a complete PBR material from it. A single photo of river pebbles becomes a path that runs as far as you need.
Why doesn't a photo tile on its own?
Seamless materials are the thing artists ask us for most. A photo of a wall, a path or a floor is almost never a repeating image: the light falls off to one side, the edges don't meet, and one stone sits off centre. Tile it, and the seams show at once.
The "Tileable texture" checkbox we shipped in October only helped when the image already repeated. It made the maps seamless, but it couldn't make the picture itself repeat. Now any photo can become a repeating material.
Three tiling modes on Generate PBR Textures
The checkbox is gone. In its place, Generate PBR Textures has a tiling mode with three options:
Not tiled. A normal image. The material is made as it is.
Already tiled. The image already repeats, so only the maps are made seamless. This is what the October checkbox did.
Make tileable. The image is made to repeat first, and the PBR material is predicted from the result.
Make tileable can change the image's size and shape. To make the edges meet, it adds seam bands or crops to whole repeats, so the material you get back may not be the same pixel size as the photo you put in.
Which maps does every run give you?
Every run gives a complete material: albedo, metallic, roughness, IOR and normal, predicted by I2M, our image-to-material model, trained on material data we measure ourselves. Like every map in Marso Studio, they're AI-predicted, never measured.
Displacement is the new map. Switch it on and you also get a displacement (height) map, so the surface has depth as well as colour and response to light. In the 3D viewer, displacement shows as a grey layer. It doesn't move the preview geometry.
The Texture app: image or prompt in, material out
Not every material needs a 3D model. The new Texture app, under Apps in Marso Studio's Quickstart, goes straight from an image to a material. Give it a photo, or write a text prompt and it generates the image first, and you get a material back with no 3D stage in between.
The tiling mode and Displacement are the same options as on the Generate PBR Textures node.
How to make a photo tileable
Open Marso Studio and choose Apps, then Generate PBR Textures.
Upload a photo, up to 2048 px on each side, or write a prompt.
Set the tiling mode to Make tileable, and switch on Displacement if you want a height map.
Run it, check the repeat in the viewer, and download the maps.
Images can be up to 2048 px on each side. A bigger image is refused, not quietly shrunk, so you always know the size you're working at.
Can you set tiling from the API and Marso MCP?
The same options are in the Marso Studio API and Marso MCP: options.tiling_mode (non_tiled, already_tiled or make_tileable) picks the mode and options.displacement adds the height map. The old tileable: true still works and means already_tiled, so nothing you've already built breaks. Send one or the other, not both. If you're turning a folder of photos into a material library, or letting an agent build one, it's the same call either way.
Each run spends credits. The credits doc has the current rates.
FAQ
How do I make a photo into a tileable texture? In Marso Studio, set Generate PBR Textures, or the Texture app, to Make tileable. The photo is made to repeat first, and a seamless PBR material is predicted from the result.
What's the difference between Already tiled and Make tileable? Already tiled is for an image that already repeats: only the maps are made seamless. Make tileable is for any other photo: the image itself is made to repeat, which can change its size and shape.
Which maps do I get? Albedo, metallic, roughness, IOR and normal on every run, plus an optional displacement (height) map. All of them are predicted by I2M.
What's the largest image I can use? 2048 px on each side. Larger images are refused rather than shrunk.
Does the old tileable option still work in the API? Yes. tileable: true still works and means Already tiled. options.tiling_mode gives you all three modes.
Try it on a photo of your own
Pick the photo you've never been able to tile, open the Texture app at marso.app, and set it to Make tileable.