Skip to main content
Glama

Make a tileable texture set (colour, normal, roughness) from a recipe

r3_texture_create
Destructive

Make a matching, seamlessly tiling texture SET for a material: a colour map, a normal map and a packed ambient-occlusion / roughness / metalness map, rendered by R3 from a procedural recipe (seeded noise, stones, bricks …). Nothing is uploaded and it is free. The maps are stored as images in the account (the owner sees them in the Images browser as " · albedo.png" …).

Start from a preset (gravel, sand, concrete, bricks, brushedMetal) with optional controls: seed (another variation), scale (an integer: finer pattern), colours (the ramp's "#rrggbb" stops, exactly as many colours as the preset has: gravel 3, sand 2, concrete 3, bricks 3, brushedMetal 3), contrast, bumpiness (normal strength), roughness {min, max} (from the smooth parts to the rough parts), metalness (0 = not metal, 1 = metal; metal looks dark without an environment map in the scene), size (256 / 512 / 1024 / 2048, default 1024), tileWorldSize (metres one tile covers, default 1), height (also store a 16-bit height map). Or pass a full recipe (r3_docs_read("TEXTURE_RECIPES.md") has the format and every preset's recipe). An invalid recipe is refused with the path of the problem.

Pass apply {projectId, material, repeat | worldSize (a number, or {x, y} for a long strip)} to put it on a material in the same call (as r3_texture_apply). You cannot see the texture: the answer gives numbers (mean colour, brightness range, height spread, seam check) and the colour map's url; r3_editor_capture shows it in an open editor. Names are unique per account. Each call makes a NEW set; reuse a set with r3_texture_apply.

Input Schema

NameRequiredDescriptionDefault
nameYesWhat the owner sees, e.g. "Gravel path". Unique in the account.
sizeNo256, 512, 1024 (default) or 2048 pixels square.
applyNoAlso wire it to a material: {projectId, material, repeat | worldSize}.
presetNoA preset: gravel, sand, concrete, bricks, brushedMetal.
recipeNoOr a full recipe (format "r3-texture-recipe", version 1).
controlsNoWith a preset: {seed, scale, colours, contrast, bumpiness, roughness: {min, max}, metalness, size, tileWorldSize, height}. colours: exactly the preset's number of "#rrggbb" stops (gravel 3, sand 2, concrete 3, bricks 3, brushedMetal 3).

Output Schema

NameRequiredDescriptionDefault
mapsYes
nameYes
sizeYes
setIdYes
statsYes
answerYesThis answer in words: what was done, what R3 measured, decided or refused, and what to do next. The same text as the result's text block. Read it: the fields beside it are the data, this is the guidance.
appliedYes
warningsYes
tileWorldSizeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / maps / additionalProperties / properties / pixelHash
      Added value: +{
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / controls / description
      Previous value: -"With a preset: {seed, scale, colours, contrast, bumpiness, roughness: {min, max}, size, tileWorldSize, height}. colours: exactly the preset's number of \"#rrggbb\" stops (gravel 3, sand 2, concrete 3, bricks 3)."New value: +"With a preset: {seed, scale, colours, contrast, bumpiness, roughness: {min, max}, metalness, size, tileWorldSize, height}. colours: exactly the preset's number of \"#rrggbb\" stops (gravel 3, sand 2, concrete 3, bricks 3, brushedMetal 3)."
    • changedInput schema / properties / preset / description
      Previous value: -"A preset: gravel, sand, concrete, bricks."New value: +"A preset: gravel, sand, concrete, bricks, brushedMetal."
  3. Changed4 schema fields changed
    • changedInput schema / properties / apply / properties / repeat / description
      Previous value: -"How often the texture repeats across the surface (the same on every map). Default 1."New value: +"How often the texture repeats across the surface, on both axes and every map."
    • addedInput schema / properties / apply / properties / worldSize / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "properties": {
      +      "x": {
      +        "type": "number"
      +      },
      +      "y": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "x",
      +      "y"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedInput schema / properties / apply / properties / worldSize / description
      Previous value: -"Or: the surface size in metres; repeat = worldSize / the set's tile size (1 m for the presets), e.g. 1000 for a 1 km terrain."New value: +"Or: the surface size in metres, a number (square) or {x, y} (its two sides, e.g. {\"x\": 2, \"y\": 40} for a 2 m × 40 m path); repeatX = x / the set's tile size (1 m for the presets), repeatY = y / it. Neither given: the mesh(es) using the material are measured."
    • removedInput schema / properties / apply / properties / worldSize / type
      Removed value: -"number"
  4. Changed1 schema field changed
    • changedInput schema / properties / controls / description
      Previous value: -"With a preset: {seed, scale, colours, contrast, bumpiness, roughness: {min, max}, size, tileWorldSize, height}."New value: +"With a preset: {seed, scale, colours, contrast, bumpiness, roughness: {min, max}, size, tileWorldSize, height}. colours: exactly the preset's number of \"#rrggbb\" stops (gravel 3, sand 2, concrete 3, bricks 3)."
  5. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources