logo hsb.horse

Normal Map Generator (Height → Normal)

Convert height maps or photos into production-ready normal maps with intensity control and DirectX/OpenGL Y-flip. Browser-only, perfect for PBR textures, games, and WebGL.

Drop in a grayscale height map or any photo. The Sobel-based filter calculates surface gradients and outputs a clean purple normal map you can use in Unreal, Unity, Blender, or custom shaders.

Privacy-safe: all processing stays in your browser. Intensity slider plus Y-axis flip for DirectX/OpenGL. Sobel-based gradients preserve edges and smooth noise. One-click PNG export with the original filename suffix.

1. Upload a height map or photo

High-contrast grayscale works best. Color images are converted using luminance.

2. Normal map settings

Surface intensity: Surface intensity: 50

Maps 0–100 to 0.0–10.0 strength. Higher values exaggerate bumps; lower values stay subtle.

3. Export

Preview

No source texture yet

Upload a height map to preview the generated normal.

Game & VFX PBR

Convert height or albedo textures into normal maps for Unity/Unreal material slots.

3D modeling / fabrication

Preview relief for engraving, CNC, or 3D printed parts.

AI / WebGL assets

Normalize AI-generated textures and keep channel conventions consistent.

How to use

  1. 1

    Upload your source

    Select a grayscale height map or any photo. Transparent pixels are treated as flat.

  2. 2

    Tune intensity & Y axis

    Slide until the bumps feel right; enable Y flip for DirectX pipelines.

  3. 3

    Download

    Export as PNG with the original name plus “_normal” suffix.

FAQ

Are files uploaded anywhere?
No. Everything runs locally in your browser; images never leave your device.
Which inputs work best?
High-contrast grayscale height maps produce the cleanest normals. Color photos are converted by luminance before processing.
Is this OpenGL or DirectX?
Default matches OpenGL/Metal (positive Y is up). Toggle Invert Y for DirectX-style green channel.
Can I re-edit later?
Yes. Download the PNG and re-upload to tweak intensity, or fine-tune in your 3D tool.