Workflow guide · Textures & materials

Concept art to a PBR texture set

A tileable AI-generated colour texture plus height, normal, roughness and AO maps, checked in Blender and set up as a material in Unreal, Unity or Godot.

  1. Tileable image
  2. 2Check tiling
  3. 3Make the maps
  4. 4Check in Blender
  5. 5Engine material
Cost and licences of the AI tools in this guide
  • ScenarioCommercial on paid plans only50 daily credits; personal/evaluation use only pricing
  • LayerCommercial use allowedStart for free (scope unverified) pricing
  • Leonardo.AiCommercial use allowed150 fast tokens/day; creations are public pricing
  • MeshyCommercial use allowed100 monthly credits; outputs CC BY 4.0 pricing
  • Unity AIUnity Personal: 14-day free trial, then a paid subscription ($10/month per Unity's AI FAQ; currency not stated by vendor). Pro, Enterprise and Industry include monthly credits. pricing

Everyone: steps 1–4

  1. Generate a flat, tileable source texture

    1. In Scenario, open Scenario Texture (the Textures flow).
    2. Describe only the material, like "wet sand, ripple marks", with no scene or perspective.
    3. Set the size (default 1024 x 1024, in multiples of 16) and turn on Erase Seam.
    4. If seams remain, raise Overlap for big features or lower it for fine detail, then generate again.

    You should see: A flat, top-down material image that repeats without a visible edge.

    Watch out: Scenario's pricing page says free-plan output is for personal and evaluation use only; paid plans include a commercial licence.

    Official video from Scenario. Watch on YouTube ↗

    From the official docs: Scenario Texture: the essentials ↗

  2. Check that it tiles

    1. In Scenario's 3D viewer, set Geometry to Plane and raise the Tiling slider.
    2. Or in Blender, open the image in the Image Editor and turn on Repeat Image in the sidebar's Display panel.
    3. On a Blender Image Texture node, keep Extension set to Repeat.

    You should see: No seams, and no obvious repeating blotches across several tiles.

    From the official docs: Blender Manual: Image Editor sidebar ↗

  3. Turn the image into material maps

    1. In Scenario's 3D viewer, click Generate Maps to get height, normal, metallic, edge and AO maps.
    2. Adjust the Raised, Shiny, Polished and Angular sliders, and invert the height map if the relief looks backwards.
    3. For a roughness map, run Scenario's Texture Converter on the colour texture; it outputs normal, roughness, height and metallic maps.

    You should see: A matching set of greyscale maps plus a purple-blue normal map.

    Watch out: Generate Maps doesn't produce a roughness map; use the Texture Converter for that.

    From the official docs: Scenario: texture generation basics ↗

  4. Hook up and check the maps in Blender

    1. Add an Image Texture node for each map and connect the colour texture to Base Color on the Principled BSDF.
    2. Set the normal, roughness, AO and height images to Color Space: Non-Color.
    3. Send the normal map through a Normal Map node (Tangent space) into the BSDF's Normal input.
    4. If the bumps look inverted, switch the Normal Map node's convention (Blender uses OpenGL by default).

    You should see: Light catches the relief correctly as you orbit the view.

    Watch out: Normal maps must not get colour conversion, so always set them to Non-Color.

    Example of Blender's Normal Map node in use
    A normal map applied through the Normal Map node. Image: Blender Manual, Blender Documentation Team, CC BY-SA 4.0.

    From the official docs: Blender Manual: Normal Map node ↗

Then pick your path

Unreal Engine

  1. Set the texture properties

    1. Open the normal texture and set Compression Settings to Normalmap; tick Flip Green Channel if the bumps look inverted.
    2. Open the roughness and AO textures and untick sRGB, because data maps shouldn't be gamma-corrected.

    You should see: Normal shading looks right and the roughness keeps its values.

    Watch out: After turning sRGB off, set that texture's sampler to Linear Color in the material, or it won't compile.

    From the official docs: Unreal: using texture masks ↗

  2. Build the material

    1. Right-click in the Content Browser, choose Material, and double-click it to open.
    2. Add one Texture Sample node per map.
    3. Connect colour to Base Color, roughness to Roughness, normal to Normal and AO to Ambient Occlusion.

    You should see: The preview sphere shows the finished material.

    Watch out: The Ambient Occlusion input only has an effect with Static or Stationary lights.

    From the official docs: Unreal: material inputs ↗

Unity

  1. Set the import settings

    1. Select the normal map and set Texture Type to Normal map; use Flip Green Channel for DirectX-style maps.
    2. On data textures (metallic/smoothness, AO, mask maps), turn off sRGB (Color Texture).

    You should see: The normal map imports as a Normal map texture and shades correctly.

    From the official docs: Unity: normal map texture type ↗

  2. Make a URP Lit material

    1. Create a material with the Lit shader and set Workflow Mode to Metallic.
    2. Assign the Base Map, Normal Map, Height Map and Occlusion Map.
    3. Unity uses smoothness, not roughness: invert the roughness map, put it in the Metallic Map's alpha, and set Smoothness Source to Metallic Alpha.

    You should see: Reflections are sharp where the roughness map was dark.

    Watch out: HDRP uses a packed Mask Map instead: red = metallic, green = AO, blue = detail mask, alpha = smoothness.

    From the official docs: Unity: URP Lit shader ↗

Godot

  1. Import the normal map

    1. Select the normal map, and in the Import dock set Compress > Normal Map to Enable.
    2. For DirectX-style maps, also enable Process > Normal Map Invert Y, then click Reimport.

    You should see: The texture reimports as a normal map.

    From the official docs: Godot: importing images ↗

  2. Set up a StandardMaterial3D

    1. Add a StandardMaterial3D to the mesh and set Albedo > Texture.
    2. Set Roughness > Texture (it reads the red channel by default).
    3. Enable Normal Map and Ambient Occlusion and assign those textures; height is optional.
    4. Raise UV1 > Scale to repeat the tile across the surface.

    You should see: The surface tiles and reacts properly to light.

    Watch out: Height is a parallax effect and is fairly expensive on the GPU, so use it only where it shows.

    A Godot StandardMaterial3D example
    StandardMaterial3D in Godot. Image: Juan Linietsky, Ariel Manzur and the Godot community, CC BY 3.0.

    From the official docs: Godot: Standard Material 3D ↗

Written from the official documentation linked on each step and checked . Menus and settings change between versions, so follow the linked docs if something looks different. No vendor reviews or pays for these guides.