Free, in your browser, no sign-up
Unreal Engine Normal Map Generator
Turn a texture or photo into the set Unreal expects: base colour, a DirectX normal map, a packed ORM (occlusion, roughness, metallic) and height. Download it with Unreal file names and a setup note.
PNG, JPG or WebP. Large images are scaled to 2048 px. Transparent sprites keep their outline.
Free maps are made on your device. Nothing is uploaded unless you ask for an AI set.
ORM
Ambient occlusion in red, roughness in green, metallic in blue: the packed map Unreal, Godot and glTF use. It follows the AO, roughness and metallic settings.
AI texture set
An AI model reads the material in your photo and returns base colour, normal, roughness, metalness and height. Preview and export it like the free maps.
Sign in to get a free AI setExport for
ZIP with BaseColor, Normal (DirectX), ORM packed, Height and a setup note.
Why DirectX for Unreal
Normal maps come in two styles that differ only in the green channel. Unreal uses DirectX style (green down); Blender, Godot and Unity use OpenGL (green up). Load the wrong one and bumps look lit from below.
The Unreal Engine export writes the normal map in DirectX style for you, whatever the DirectX switch shows in the preview. If you save the normal map on its own with Download this map, switch DirectX on first.
What the Unreal export contains
T_Name_BC is the base colour, T_Name_N the normal, T_Name_ORM packs ambient occlusion in red, roughness in green and metallic in blue, and T_Name_H is the height for parallax. Packing three greyscale maps into one ORM texture saves two texture samples in the material.
Metallic in the free maps is one value for the whole surface, set with the Metalness slider, so the blue channel is flat. An AI texture set fills it part by part.
Wiring it in a UE5 material
- Import the PNGs. Open T_Name_N and make sure Compression Settings is Normalmap; set it if Unreal did not.
- Open T_Name_ORM and T_Name_H, untick sRGB and set Compression Settings to Masks (no sRGB).
- In the material, add a Texture Sample per texture. Connect BC RGB to Base Color and N RGB to Normal.
- From the ORM sample, connect R to Ambient Occlusion, G to Roughness and B to Metallic.
- For tiling, feed a TextureCoordinate node with UTiling and VTiling into the UVs of every sample. For parallax depth, feed the height into a BumpOffset node and use its output as the UVs of the other samples; the height sample itself keeps the plain UVs.
- If the surface looks inside out, tick Flip Green Channel on the normal texture, or re-export from here.
Need maps from a real photo?
The free maps are worked out from brightness, which suits clean textures. For photos of real surfaces, AI texture sets read the material itself.
Free maps
Free
Runs on your device
- 8 maps, including packed ORM
- Ready-made sets for Unreal, Unity, Godot and Blender
- Worked out from image brightness: best for clean textures and sprites
- Unlimited, no account
AI texture set
From $0.20 a set
1 free set when you sign up
- Base colour, normal, roughness, height and metalness
- Made by PATINA, an AI model built for PBR materials
- Tells metal from non-metal parts, which brightness alone cannot
- Packs of 15, 50 or 150 sets, valid for a year
Questions
Can I use the normal map in Unreal Engine 4?
Yes. UE4 and UE5 use the same DirectX normal style and the same ORM wiring.
Can glTF use the same ORM?
Yes. glTF packs occlusion, roughness and metallic in the same red, green, blue order, so the one texture works there too.
Do I need the height map?
No. It is only for parallax or displacement. The normal map alone gives the surface its small detail.