Apps Part of Renderloom

PBR Texture Set Export (glTF, Unreal, Unity)

Export a procedural material as a named PBR texture set for glTF, Unreal or Unity HDRP.

Format renderloom-material-graph version 1 (schema at /static/apps/renderloom/material-graph.schema.json). Copy it from Renderloom → Material Nodes.

More options

Try an example: · ·

More about this tool

How it works

Render a Material Nodes preset or your own graph at up to 1024 px and download a ZIP named for your engine: base color, normal in the right Y convention, a packed ORM or HDRP mask map, separate roughness, metallic and occlusion maps, 8- and 16-bit height, the editable graph and a manifest that lists channels and color spaces.

  • The graph is evaluated with the same engine as the Material Nodes dialog at the chosen size. Parameters are fractions of the tile, so a 1024 px export matches the 256 px preview in look.
  • glTF 2.0 / Blender / Godot: +Y (OpenGL-style) normal and an occlusion-roughness-metallic PNG — the glTF metallicRoughness texture reads roughness from G and metallic from B; the occlusion texture reads R, so the same ORM file can serve both.
  • Unreal Engine: the same ORM packing with a −Y (DirectX-style) normal; the green channel is inverted (255 − value).
  • Unity HDRP: +Y normal and a mask map with R = metallic, G = ambient occlusion, B = detail mask set to 0 (no detail map) and A = smoothness = 1 − roughness, as documented by Unity.
  • Every package adds separate roughness, metallic, occlusion and height PNGs (8-bit RGBA), an optional 16-bit grayscale height PNG, the editable graph and export-manifest.json with the channel and color-space list.

Check the import settings of your engine: base color is sRGB, all other maps are linear data. The maps come from a procedural graph and are not scanned materials.

Sources

Part of Renderloom

How to use the PBR Texture Set Export

Export a procedural material as a named PBR texture set with the right normal convention and ORM or mask-map packing for glTF, Unreal Engine or Unity HDRP.

What it is for

Every engine wants its PBR textures a little differently. glTF and Blender read roughness and metallic from the green and blue channels of one texture, Unreal Engine expects normal maps with the green channel pointing down, and Unity's High Definition Render Pipeline packs metallic, occlusion, a detail mask and smoothness into one mask map. Getting one of these wrong produces shiny bricks or inverted bumps.

This tool renders a Renderloom Material Nodes preset or your own graph at up to 1024 px and writes a ZIP that already follows the chosen convention, with the editable graph and a manifest. It does not create a 3D model or an engine material asset; you still assign the textures in your engine.

Worked example

We exported the Brushed metal preset at 512 px for Unity HDRP with the 16-bit height included. The summary read 8 texture files for Unity HDRP (+Y normal, mask map) at 512 × 512 px. The files were Brushed-metal_BaseMap.png, _Normal.png, _MaskMap.png, _Roughness.png, _Metallic.png, _Occlusion.png, _Height.png and _Height16.png, packed together with the graph and export-manifest.json into a 7,874,529-byte ZIP.

The table Packed map channels listed red = metallic, green = ambient occlusion, blue = detail mask (0 = no detail) and alpha = smoothness (1 − roughness). For brushed metal the red channel is white everywhere and the alpha channel is bright, because the roughness of the preset stays low.

How to read the result

  • Packed map: the ORM texture (glTF, Unreal) or the mask map (Unity HDRP), shown as a preview. Transparent-looking areas in the HDRP preview are just the smoothness in alpha.
  • Packed map channels: what each channel holds — the same information as in the manifest.
  • Files and color spaces: import the base color as sRGB and every other file as linear data.
  • Callout: the normal convention. Unreal gets −Y (DirectX style, green inverted); glTF and Unity get +Y (OpenGL style).

Tips and common mistakes

  • In Unity and Unreal, untick sRGB (or set the compression to a linear/mask type) for normal, packed, roughness, metallic, occlusion and height maps.
  • If bumps look lit from the wrong side, the normal map is in the other convention. Re-export for the right engine instead of flipping by hand.
  • The HDRP detail mask is 0. If you add a detail map, set the blue channel to white in an image editor or Renderloom Texture Lab's custom channel packing.
  • 1024 px exports take a few seconds; the look does not change with size because node parameters are fractions of the tile.
  • Set texture wrapping to repeat: all maps tile seamlessly.

FAQ

Can glTF use the ORM file for occlusion and metallic-roughness at once?

Yes. The glTF occlusion texture reads the red channel and the metallicRoughness texture reads green (roughness) and blue (metallic), so one file can be bound to both.

Why is there a 16-bit height map?

Eight bits give only 256 height levels, which shows as terracing when the map drives displacement. The 16-bit PNG stores 65536 levels of the same height field.

Do I get the same files as in the Renderloom app?

Yes. The app's Download texture set (ZIP) button uses the same engine; for the same graph, size and engine the ZIP is byte-identical.

Can I export my own graph?

Choose Custom graph JSON (below) and paste a graph saved from Renderloom Material Nodes.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://renderloompbrexport.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://renderloompbrexport.usefulweb.app/mcp · tool name renderloom_pbr_export
Example request
curl -s -X POST https://renderloompbrexport.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{"preset":"wood","size":256}'
Feedback · ideas & bug reports welcome