---
title: Generate PBR materials
display: 'Generate *PBR* materials'
nav_title: PBR materials
summary:
  - "Get base color, normal, roughness, metalness and height maps so a surface lights correctly in your engine."
  - "Pick the model by what you start from: a description, a photo of a scene, or a flat texture."
  - "One run returns the material and all five maps; check metalness first, since the model decides what counts as metal."
description: Get base color, normal, roughness, metalness and height maps from a prompt, a photo or an existing texture, check each map, and set them up in an engine.
section: textures
order: 20
type: guide
level: Build
roles: [artist]
time: { read: 9, do: 15, wait: 1 }
needs: ["Any plan with credits", "A material description, a photo of the surface, or a flat texture"]
last_verified: 2026-11-11
models_checked: ["PATINA Material", "PATINA Material Extract", "PATINA Image to Maps", "Texture Converter", "Scenario Texture"]
hero: textures/pbr-materials/hull-planks-pbr-stack-and-sphere.webp
related: [seamless-textures, export-3d-to-engines-and-dcc, process-3d-models]
pdf: true
run_in: [model_patina-material]
thumb: textures/pbr-materials/thumb.webp
steps:
  - title: "Choose the model by what you start from"
    text: "Create › Textures: PATINA Material from a description, PATINA Material Extract from a photo of a scene with the surface in it, or PATINA Image to Maps from a flat texture. All three return the same five maps."
  - title: "Describe the surface"
    text: "Name the surface detail and the wear and where it sits, and end with \"flat top-down view, even diffuse light\". On Material Extract, name the region instead, and what to leave out."
    prompt: |-
      Tarred oak ship hull planks, weathered and salt-stained dark brown wood with black tar in the seams, a riveted iron strap running across the planks with rows of rusted iron rivets, pale salt crust in the grain, flat top-down view, even diffuse light
  - title: "Set the maps, tiling and upscale"
    text: "Maps: all five selected. Tiling mode Both for a full tile (Horizontal or Vertical for a strip). Upscale factor None while you iterate, 2x or 4x on the final take. The example used PATINA Material at its defaults."
  - title: "Generate"
    text: "Click Generate. One run returns the texture plus five map assets: base color, normal, roughness, metalness and height. The example took about 98 seconds."
  - title: "Check each map"
    text: "Metalness first (white only on bare metal), then normal and height against the visible relief, roughness against the material, base color for baked shadows, and the layout of what is in the tile."
  - title: "Run the 2x2 tiling check"
    text: "Put four copies of the texture in a 2x2 grid and look at the center cross: planks and straps must continue across the seams."
  - title: "Use the maps in an engine"
    text: "Base color in sRGB, every other map linear (non-color). Flip the normal's green channel if bumps look inverted, invert roughness for smoothness engines, and use height at low strength."
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "Only if you start from an image: a photo of a scene with the surface in it (for PATINA Material Extract) or a flat texture or scan (for PATINA Image to Maps). Upload it with upload_asset or give its asset ID. From a description, there's no file."
  - title: "Brief the agent"
    prompt: |-
      Make a PBR material with PATINA Material (model_patina-material): all five maps (base color, normal, roughness, metalness, height), tiling mode both, no upscale for now, default settings otherwise (read model_schema_get for the parameter names). Quote the cost with a dry run first and wait for my go.

      Prompt, word for word:
      Tarred oak ship hull planks, weathered and salt-stained dark brown wood with black tar in the seams, a riveted iron strap running across the planks with rows of rusted iron rivets, pale salt crust in the grain, flat top-down view, even diffuse light
  - title: "Check and redo"
    text: "Accept when base color has no baked shadows, the normal follows the visible relief, roughness matches the material, metalness is white only on real metal, and the texture tiles. Reject a non-metal with gray or white metalness, painted highlights, relief not in the color, or maps that don't line up."
    prompt: |-
      Wait for the job with jobs_wait and show me the texture and the five maps. Check metalness first, then normal and height, roughness, base color and the layout of the tile, and tell me what fails. Put four copies of the texture in a 2x2 grid and show me the center cross.
  - title: "The final take"
    prompt: |-
      Rerun the approved material with the same prompt and seed and Upscale factor 2x. Quote it first and wait for my go.
  - title: "File and report"
    prompt: |-
      Create a collection for this material with the texture and its five maps, named with the material and each map's role, and report the model, the settings and every asset ID.
updated: 2026-11-11
canonical: https://learn.scenario.com/textures/pbr-materials
---

Last updated: 2026-11-11

# Generate PBR materials

> Get base color, normal, roughness, metalness and height maps from a prompt, a photo or an existing texture, check each map, and set them up in an engine.

In short:

- Get base color, normal, roughness, metalness and height maps so a surface lights correctly in your engine.
- Pick the model by what you start from: a description, a photo of a scene, or a flat texture.
- One run returns the material and all five maps; check metalness first, since the model decides what counts as metal.


A color texture only says what color a surface is. A PBR material adds how it reacts to light: which parts are bumpy, rough, shiny or metal. This guide makes one with the PATINA models: you pick the model by what you start from, generate the texture and five maps in one run, check each map, prove the tile, and set the maps up in an engine. The example is a tarred ship hull with riveted iron straps.

:::note As of November 2026
The models, settings and screens in this article are the ones Scenario offered in November 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

:::steps Quick version
1. Open **Create** › **Textures** and choose **PATINA Material** (from a description), **PATINA Material Extract** (from a photo of a scene) or **PATINA Image to Maps** (from a flat texture).
2. Describe the surface in detail and end with "flat top-down view, even diffuse light".
3. Keep all five maps selected, tiling set to both directions, and no upscale while you iterate.
4. Click **Generate**: you get the texture plus five map assets.
5. Check metalness first, then normal and base color, and run the 2x2 tiling check.
6. In the engine, set base color to sRGB and every other map to linear (non-color).
:::

:::flow From description to lit surface
Describe | surface detail, even light | text
Generate | texture plus five maps | image
Check maps | metalness, normal, base color |
Tile check | 2x2 repeat | image
Engine | color spaces, normal convention |
:::

## Before you start

- **What you'll need:** a description of the material, a photo that has the surface in it, or a flat texture or scan with color only.
- **Where it lives:** **Create** › **Textures**, in the model list.
- **Credits:** the cost of a run shows on **Generate**. An upscale of the maps adds to it, so leave it off until the final take.
- **Key words:** PBR (physically based rendering) describes a surface with several maps that an engine combines under its own lights. Each map is a grayscale or color image the same size as the texture.

## The five maps

![The five maps from one PATINA Material run on tarred ship planks with riveted iron straps, shown as an exploded stack: base color in dark wood and rust, normal in blue-purple, roughness in light gray, metalness fully black, and height in gray with bright rivets. Beside the stack, a sphere wearing all five maps under studio light, with raised rivets and glossy tar.](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/63e708e9b7b80b6287cdabf2108bcb6e93fc656d285350c6404dd56c292e8a1a.webp "Five maps from one run, and the lit sphere they make together.")

| Map | What it holds | Reads as | Color space |
|---|---|---|---|
| **Base color** | The color without light | Flat color, no shadows or highlights painted in | sRGB |
| **Normal** | Small bumps that catch the light | Mostly blue-purple | Linear |
| **Roughness** | How blurry reflections are | Light for rough (clay, stone, fabric), dark for glossy (polished or wet) | Linear |
| **Metalness** | What is bare metal | White for bare metal, black for everything else | Linear |
| **Height** | What is raised and what is sunk | Light on raised parts, dark in gaps | Linear |

Every map other than base color is non-color data. If bumps look inverted under light, flip the normal map's green channel.

## Step 1: Choose the model by what you start from

The PATINA models cover three starting points and return the same five maps:

| You have | Model | What it does |
|---|---|---|
| A description only | PATINA Material | A tileable texture plus the five maps from a prompt. An optional reference image adds variations around it; a reference image with a mask changes one region only |
| A photo of a scene with the surface in it | PATINA Material Extract | Name the surface ("the wooden tabletop, not the linen runner"). It isolates that region, flattens the perspective and lighting, and makes the material |
| A flat texture or scan with color only | PATINA Image to Maps | No prompt. Your image passes through unchanged as base color, and the other four maps are predicted from it |

**Texture Converter** is a quicker, manual option: a flat image to a surface material, with sliders for how raised, shiny, polished and angular it looks.

If you only need a tileable color texture, without maps, use Scenario Texture: see [Generate seamless textures](https://learn.scenario.com/textures/seamless-textures.md).

## Step 2: Describe the surface

Be specific about surface detail, not just the material name. "Cracked clay" is generic; "sun-baked cracked clay with fine hairline fractures and pale dust" gives the model something to build the normal and height maps from. Name the wear (rust, moss, salt, peeling paint) and where it sits.

End with the view and the light, "flat top-down view, even diffuse light", so no shadows get painted into the base color.

On **PATINA Material Extract**, the prompt names the region instead: "the rusty metal bicycle frame", or "the white marble countertop surface, not the cutting board or lemons". Saying what to leave out helps on a busy photo.

The example is a deck and hull material for a sailing game: dark tarred wood held by riveted iron straps, two materials in one tile.

```prompt
Tarred oak ship hull planks, weathered and salt-stained dark brown wood with black tar in the seams, a riveted iron strap running across the planks with rows of rusted iron rivets, pale salt crust in the grain, flat top-down view, even diffuse light
```

## Step 3: Set the maps, tiling and upscale

These settings work the same on all three PATINA models:

- **Maps:** which of the five to make. Keep all five selected. On Material and Material Extract, deselecting all of them skips the maps and returns the base texture only.
- **Tiling mode:** **Both** repeats in every direction, for a full tile. **Horizontal** or **Vertical** repeats along one axis only, for a strip such as a trim or a column.
- **Upscale factor:** **None**, **2x** or **4x**, up to 8K from a 2048-pixel texture. It applies to the PBR maps only, not to the base texture. Leave it at **None** while you iterate, and set it once on the final take.
- **Image strength** (Material and Material Extract): how far the result moves away from the reference image or the extracted region. Higher changes more.
- **Seed:** reuse it with the same settings to get the same result.

The example used PATINA Material at its default settings.

## Step 4: Generate

Click **Generate**. One run returns the texture plus five map assets. The example took about 98 seconds.

![Five square maps side by side: dark wood and rust base color, blue-purple normal, light gray roughness, fully black metalness, gray height with bright rivets and straps](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/123cfedd67763cdca6c11dc3256e93c50801d5b43cea75de1ec109239c2a1eba.webp "Base color, normal, roughness, metalness, height.")

## Step 5: Check each map

Check in this order, because metalness is where the model makes the biggest decisions:

1. **Metalness.** It should be white only on bare metal. In the example it is fully black, the iron straps included: the model treated heavy rust as a non-metal, which is how rusted iron behaves under light. If you want the bolt heads to shine, paint them white in the metalness map.
2. **Normal and height.** They should follow the relief you can see in the color. Here they follow the plank grain, the knots and every rivet.
3. **Roughness.** It should match the material. Here it is light on the wood and the straps: both are rough.
4. **Base color.** No baked shadows or highlights.
5. **Layout.** Check what is in the tile, not only the surface. The model made a cross of two straps where the prompt asked for one.

## Step 6: Run the 2x2 tiling check

Put four copies of the texture in a 2x2 grid and look at the center cross, where the edges meet. See [Generate seamless textures](https://learn.scenario.com/textures/seamless-textures.md) for how.

![The plank texture repeated two by two with no visible seam, the straps forming a continuous grid](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/87e7a7c7d953b5bc30518cd963341c4828f005ca879af993a1cef6b837ce749a.webp "2x2 check on the base texture: the straps and planks continue across the seams.")

The same plane under the same low light, with color only and with all five maps:

![Two close views of the plank tile under the same raking light. Left: color only, the rivets and planks look printed flat. Right: with all the maps, the rivets stand out as domes, the plank edges step and the tar catches highlights](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/ef19fbea18ccc1950acead65603b6af67851feadcacdc9a73aa4cf1950df5cd7.webp "Left: color only. Right: the full map set, with height as displacement.")

## Step 7: Use the maps in an engine

- **Color space.** Base color in sRGB; normal, roughness, metalness and height in linear (non-color).
- **Normal map convention.** Engines differ on the green channel (OpenGL or DirectX style); flip it if bumps look inverted.
- **Roughness or smoothness.** Engines that use smoothness need the roughness map inverted.
- **Height.** Use it for parallax or displacement only where the engine supports it, at low strength; the normal map does most of the work.
- **Packing.** Some engines want roughness, metalness and occlusion in one image: combine them in an image tool or the engine's material editor. A GLB from Scenario's 3D models already packs roughness and metalness this way.

Engine import notes: [Bring your 3D model into Blender, Unity and Unreal](https://learn.scenario.com/3d/export-3d-to-engines-and-dcc.md).

## Make it repeatable

- **One description pattern and the same settings** for every material.
- **Name every map** with the material and its role (`roof_terracotta_normal.png`).
- **Keep the six assets of each material** in one collection ([Organize your work](https://learn.scenario.com/browse)).

:::check
**Accept when:** base color has no baked shadows, the normal map follows the visible relief, roughness matches the material (rough clay is light, polished metal is dark), metalness is white only on real metal, and the texture tiles in the 2x2 check.
**Reject when:** a non-metal surface shows gray or white areas in the metalness map, the base color has painted highlights, the normal map shows relief that isn't in the color, or the maps don't line up with each other.
:::

## Common problems

| What you see | What to do |
|---|---|
| A non-metal reads as metal | Shiny paint, pearl or glazed surfaces can be mistaken for metal. Paint the metalness map black, or override metalness to 0 |
| A metal reads as non-metal | Rusted or painted metal often comes back black in metalness, which is usually right. Paint white only the bare, polished parts |
| The surface looks flat in the engine | The normal map is in sRGB, or not assigned as a normal map |
| Bumps look inverted | Flip the normal map's green channel |
| Shadows baked into the color | Add "even diffuse light, flat top-down view" to the prompt, or use Material Extract on photos |
| Extract picked the wrong surface | Name the region more precisely, and say what to leave out |
| A trim or column repeats the wrong way | Set **Tiling mode** to **Horizontal** or **Vertical** |
| The maps are too small for a close-up | Set **Upscale factor** to 2x or 4x on the final take |
| Visible repeat | Use a larger tile, or adjust tile size and stride on PATINA Material |

## What's next

To wrap the scene these surfaces sit in, generate the sky around it: [Generate skyboxes and 360 panoramas](https://learn.scenario.com/textures/skyboxes-and-360.md). To put the material on a model, see [Process 3D models](https://learn.scenario.com/3d/process-3d-models.md).

Source: https://learn.scenario.com/textures/pbr-materials
