NormalMap

Normal Map for Unity - Generate & Import Guide

Make normal maps for Unity URP and HDRP and import them with the correct texture type.

Drop an image or click to upload

Height map or photo → normal map. Runs locally.

OpenGL (Blender, Unity) uses Y+ up (default). DirectX / Unreal may need the green channel flipped.

Input

No image

Normal map

What is Normal Map for Unity?

Unity expects tangent-space normal maps, and it re-encodes the texture based on its import type. If you import a normal map as a default texture, Unity treats it as colour and the lighting is wrong. This page generates the map and walks through the import settings that make it work.

Common Uses for Normal Map for Unity

  • Add detail to a Unity terrain or modular kit without extra polys
  • Create normal maps for a mobile URP scene within texture budget
  • Fix a normal map that looks flat after import

Correct Unity import settings

Click the normal map in the Project window. In the Inspector set Texture Type to Normal map, Wrap Mode to Repeat for tiling surfaces, and disable sRGB. Compression should be 'Normal Quality' for most cases; use 'High Quality' for hero assets and uncompressed only when memory allows. Generate mipmaps for anything viewed at distance.

Using normal maps in Shader Graph

In URP or HDRP Shader Graph, add a Sample Texture 2D node set to Normal (use a Normal Unpack node after sampling to convert the 0-1 texture into a -1..1 vector). Feed the result into the Normal input of the master node via a Normal Blend node if you are layering several maps.

Frequently Asked Questions

Which texture type should I pick in Unity?
Select the normal map asset and set Texture Type to 'Normal map'. Unity then keeps the RGB channels as raw vectors instead of applying sRGB conversion. Do not also tick 'Create from Grayscale' unless you are importing a height map.
Does Unity use OpenGL or DirectX convention?
Unity uses OpenGL convention (Y+ up) on most platforms. Leave the green channel unflipped unless a specific DirectX-only target requires it.
My normal map looks inverted in Unity - why?
Either the green channel convention is wrong or the mesh tangents are flipped. Try ticking 'Flip green (DirectX)' in the generator; if that fixes it, the asset was expected in DirectX convention.

More Normal Map Tools