한국어
Home › Game Dev › Normal Map Generator

Normal Map Generator

Convert grayscale height images or textures into normal maps. Choose strength, blur and OpenGL or DirectX format, and move a light with your mouse to check the depth instantly.

Upload a height map or textureChoose files
Bright areas are treated as high and dark areas as low. A brick sample is shown until you upload.
Height (grayscale)
Normal map
Lighting preview Move your mouse or finger over it

Normal map settings

Unity, Godot and Blender use OpenGL. Unreal uses DirectX.
Your images never leave this device

How to use

1Upload an imageUpload a grayscale height map or a regular texture. Color images are converted to brightness.
2Adjust the strengthTune strength and blur while watching the lighting preview, and pick the format your engine uses.
3SaveDownload the normal map PNG and plug it into your material's normal slot.

When it helps

A normal map is a texture that stores which way each point of a surface is facing, encoded as color. Without adding polygons, it lets light and shadow fall on brick gaps, wood grain and rocky surfaces so they look much more three-dimensional. In 2D games, giving sprites a normal map lets them react to dynamic lights.

This tool treats image brightness as height and computes slopes with a Sobel filter to build the normal map. Higher strength makes the bumps deeper, and blur smooths out fine noise.

Engines differ in the direction of the green channel, so using the wrong one makes light look like it comes from the opposite side. Choose OpenGL for Unity and Godot, and DirectX for Unreal.

FAQ

Can I use a photo?

Yes, but brightness in a photo is not always real height. Shadowed areas can look carved in, so evenly lit texture photos give the most natural results.

The light looks reversed.

Switch between OpenGL and DirectX. If it still looks wrong, try turning on invert height.

What does seamless mean here?

At the edges, pixels from the opposite side are used in the calculation. This prevents visible seams on textures that tile.

Can it handle large images?

If the longest side is over 2048px, the image is scaled down to 2048px to keep processing fast.