Home / Art & Sprites / 2D Sprite Normal Map Generator

2D Sprite Normal Map Generator

2D lights in Godot and Unity only look 3D when every sprite has a normal map, and painting those by hand takes longer than the sprite. Drop a sprite or a whole sprite sheet: the tool builds a rounded shape from the outline, adds surface detail from the shading you already drew and turns it into a normal map. Move the mouse over the preview to light it like your game would. Free download of the normal map, and with Pro the height, ambient occlusion and specular maps, batches and ready Godot and Unity setup files.

Click or drop a transparent PNG
Characters, props, tiles, whole sprite sheets
Shape
Bevel weight70%
Bevel width8 px
Surface detail
From shading40%
Smooth1 px
Normal map
Depth3.0
Preview light
LightAmbient
Height0.25
Shine40%

Lit preview

Lit
Normal
Height
AO
Drop a sprite to start.
Pro · Height, ambient occlusion and specular maps, a Godot 4 CanvasTexture for each sprite, a Unity editor script that links the maps to URP 2D lights, and many sprites in one ZIP. See plans

Why 2D sprites need normal maps

A flat sprite under a 2D light just gets brighter or darker as a whole. A normal map tells the engine which way each pixel faces, so the side of a barrel turned to a torch lights up while the other side falls into shadow. Godot 4 (with Light2D and a CanvasTexture) and Unity's URP 2D lights both use them. Painting one by hand means painting the sprite again in strange colours, which is why most indie games skip it.

How the map is made

Shape from the outline. The tool measures how far each pixel is from the edge of the sprite and turns that into a rounded or bevelled shape, so the sprite looks like a pillow or a coin instead of a sticker. A sprite sheet works too, because every frame has its own outline. Detail from your shading. The light and dark parts you already painted add bumps and dents, with large-scale shading removed so a dark side does not become a hole. Normal map. The height is turned into a tangent-space normal map. Choose OpenGL for Godot and Unity and DirectX for Unreal. Pixel art mode keeps hard pixel steps and skips smoothing.

Using it in Godot and Unity

In Godot 4, create a CanvasTexture, put the sprite in Diffuse and the normal map in Normal Map, and use it as the Sprite2D texture. Add a PointLight2D. In Unity with URP 2D, open the sprite in the Sprite Editor, go to Secondary Textures, add _NormalMap with the normal map, and use a Light 2D with Normal Maps enabled. The Pro download includes a ready CanvasTexture file for Godot and an editor script that does the Unity step for you.

Is my sprite uploaded?

No. Everything happens in your browser.