Normal Forge
A downloadable tool
A texture goes in. A normal map, an ambient occlusion map and a cavity map come out, they tile, and the tool tells you how wrong it is.
One HTML file. Open it in a browser and it works. No install, no account, no upload: the image never leaves your machine, and the page runs with the network unplugged.
What it makes
- Normal map, tangent space, OpenGL (+Y up) or DirectX (+Y down), your choice
- Ambient occlusion, horizon sampling at a radius you set
- Cavity / curvature map
- Wrap aware: every map is built on a wrapped height field, so a tileable source stays tileable
- A 3x3 preview of the real tiling, assembled from the actual output, not a mockup
- Save all of it as PNG
It measures itself, and it does it on your machine
Press Run bench. It builds a paraboloid whose true normal is known in closed form, pushes it through the exact operator this tool uses, and reports the angle between measured and true. Measured in Chrome on 2026-09-21, 27 440 samples inside the valid radius:
- mean angular error 0.98 deg
- worst angular error 2.97 deg
- 8-bit quantisation floor 3.37 deg
The 8-bit floor is the shallowest slope an 8-bit image can hold at all. The mean error is below it, and so is the worst case: the operator is more accurate than the file format it writes into. You do not have to believe that, the button is in the tool.
Tiling, on an exactly periodic test texture, wrap edge against the median edge of the same map:
- wrap on: -1.29 grey levels, the wrap edge is quieter than an ordinary edge
- wrap off: +3.09 grey levels
Bump depth is in pixels
It is the height of a fully white pixel above a fully black one. That is why the slope range is reported in degrees, and why 30 px of depth on a 256 px image is not 30 px on a 2048 px one.
Limits, plainly
The height field is read from luminance. That is the standard trick and it is not a depth sensor: a dark stone reads as a low stone. If you already have a real height map, feed that instead of the photo. AO is horizon sampling on the height field, not a ray traced bake off a mesh. A 4096 by 4096 source will make a laptop think for a few seconds.
Use the maps it produces in anything, commercial included. Do not resell the tool itself.
| Published | 4 days ago |
| Status | Released |
| Category | Tool |
| Author | Listwright |
| Tags | ambient-occlusion, cavity, heightmap, normal-map, normalmap, PBR (Physically Based Rendering), seamless, texture, texturing, tileable |
| AI Disclosure | AI Assisted |
Purchase
In order to download this tool you must purchase it at or above the minimum price of 3.00€ EUR. You will get access to the following files:

Leave a comment
Log in with itch.io to leave a comment.