Skip to content
Normalforge

Normal maps and PBR textures in your browser

PBR Texture Generator

Drop a photo and get a full PBR set with a 3D preview: albedo with baked shading evened out, normal, height, AO, roughness, metallic and ORM.

Free · runs in your browser · nothing is uploaded

Open on Normalforge

This embed was switched off for this website. Open on Normalforge

Add this tool to your siteFree embed code, no sign-up. Keep the credit link.

Embed this tool

Copy this code into your website, blog or class page. The tool runs inside your page.

Optional settings, added to the address after embed=1: &accent=0f6b5c (colour, 3 or 6 hex digits). Other parameters are ignored.

Please keep the credit link below the tool.

A PBR texture generator turns one photo or texture into the set of maps a physically based material needs. Here a single upload gives seven files: albedo with the large-scale shading evened out, a normal map, a 16-bit height map, an ambient occlusion map, a roughness map, a metallic map and a packed ORM texture in the glTF channel order. Every map shows up together on a 3D sphere under a movable light, and one ZIP saves the whole set with a short readme. The maps are estimates made from brightness with fixed formulas, not measurements of a real material, and the sections below say exactly how each one is made, so you know which to trust and which to touch up.
Pbr texture generator example

How to use the PBR Texture Generator

  1. Drop a photo or texture on the tool, paste it or press Choose image. Try a sample loads a brick wall. Images above 2048 px are scaled to 2048 px on this page (1024 px on phones).
  2. Shape the relief with Strength (default 4), Smooth (blur) (default 1 px) and Remove uneven lighting (default 0.5).
  3. Keep Remove baked shading from the colour map on and set Shading size (4 to 128 px, default 32) for the albedo.
  4. Set AO radius (1 to 32 px, default 8) and AO strength (0 to 2, default 1).
  5. Set Roughness minimum (default 0.35) and Roughness maximum (default 0.95).
  6. Set Metallic value (0 to 1, default 0) for the whole material.
  7. Choose the Normal map convention and tick Tileable: wrap around the edges if the texture repeats.
  8. Inspect the material in the 3D preview; Show can isolate AO, roughness, metallic or height.
  9. Press Download all (ZIP), or download any single map.

The ZIP holds all seven files plus a readme that names the normal map convention and says which files are colour (sRGB) and which are data. Large photos take a few seconds, because AO and de-lighting look at a wide neighbourhood of every pixel.

Work through the maps in the order they depend on each other: settle the relief first, because height feeds the normal map and the AO, then the albedo, then roughness and metal, which do not affect the others.

Which PBR maps can be made from one photo?

All the usual ones, but only as estimates: albedo, height, normal, AO and roughness are derived from the photo’s brightness, and metallic is the single value you set. A photo cannot tell polished black stone from rough black paint, so treat roughness and metallic as a starting point and correct them by hand where you know the material.

OutputHow it is madeKind
Albedothe photo, divided by a blurred luminance in linear light when shading removal is oncolour (sRGB)
Normal mapslopes of the height, OpenGL or DirectXdata
Height mapbrightness, 16-bit by defaultdata
AO maphorizon-based occlusion from the heightdata
Roughnessinverted brightness, remapped to 0.35–0.95data
Metallicyour Metallic value everywheredata
ORM (packed)R = AO, G = roughness, B = metallicdata

Shading removal keeps the average brightness and evens out broad shadows and highlights; it cannot remove hard cast shadows. AO is computed at up to 1024 px and scaled up, and its radius is given in pixels at 1024 px.

What are PBR textures?

PBR textures describe one material in separate maps: colour, surface direction, smoothness, metalness and occlusion, sometimes height. The renderer combines them to light the surface the way real materials respond to light. Roughness runs from 0 (mirror-like) to 1 (fully matte); metallic is 0 for non-metals and 1 for bare metal.

Only the colour map is sRGB. Normal, height, AO, roughness, metallic and packed maps are linear data and must be imported with sRGB off. sRGB decodes as v ÷ 12.92 below 0.04045 and ((v + 0.055) ÷ 1.055)^2.4 above, so an encoded 0.5 is linear 0.214. The ORM layout matches glTF 2.0, which reads occlusion from red, roughness from green and metalness from blue.

Which maps should I check by hand?

Roughness and metallic first. Bright paint becomes smooth and dark paint rough, which real materials do not always follow; narrow the minimum and maximum, or edit the map, where you know better. Then the AO: a radius that is too large darkens whole bricks instead of only the joints. The normal and height maps are usually the most reliable part of the set, as long as the photo was evenly lit.

Questions and answers

How do I generate all PBR maps from one image?

Load the image, adjust the sliders while watching the 3D preview, and press Download all (ZIP). The files reflect the settings at the moment you download.

Can you make roughness and metallic maps from just a photo?

Roughness, as an estimate: bright areas become smoother within the range you set. Metallic is not guessed; the tool fills in the value you choose, because brightness says nothing reliable about metal.

How do I use these PBR maps in Unreal Engine or Unity?

Import the albedo as colour (sRGB on) and every other map as data (sRGB off), choosing the normal map convention your engine expects. In Unreal, wire the ORM file’s R to ambient occlusion, G to roughness and B to metallic. Unity does not read ORM: repack the maps with the ORM Texture Packer’s Unity HDRP mask layout.

Why does my displacement look stepped, and will a 16-bit height map fix it?

Stepping comes from too few height levels. The height map is 16-bit by default, with 65,536 levels instead of 256, which removes the terraces; it cannot add detail the photo never had.

Can AI or a chatbot make PBR textures?

Some services use AI models; this page does not. Fixed formulas mean the same photo and settings always give the same maps.

Can I use the textures in commercial projects?

Yes. The site terms say what you generate is yours to use, including commercially, provided you have the rights to the source photo.