Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

No-GenAI normal maps: how to verify any normal map tool, and the local one I built

A topic by Listwright created 6 days ago Views: 30
Viewing posts 1 to 1
(+1)
This jam bans generative AI outright, which also rules out most of the "AI texture" sites. So here is the boring deterministic alternative, and more usefully, a test you can run on ANY normal map tool, mine included.

HOW TO CHECK WHETHER A NORMAL MAP GENERATOR IS ACTUALLY CORRECT

Most tools never tell you their error. You can measure it yourself. Build a height field whose true surface normal is known in closed form: a paraboloid is the easy one, z = a(x^2 + y^2), and its analytic normal is exact at every pixel. Push that through the generator, then compare the RGB it writes against the true normal, angle by angle.

Two numbers matter:

- the mean angular error, and
- the 8-bit quantisation floor, about 3.4 degrees, which is the shallowest slope an 8-bit PNG can represent at all.

If a tool's mean error sits above that floor, the error is the tool's, not the file format's. That test costs you ten minutes in any language and it will tell you more than any store page will.

THE TOOL I MADE

Normal Forge is one HTML file. You open it in a browser and it runs with the network unplugged. A texture goes in; a normal map (OpenGL +Y or DirectX -Y, your choice), an ambient occlusion map and a cavity map come out. Every map is built on a wrapped height field, so a tileable source stays tileable, and it shows you a real 3x3 tiling assembled from the actual output rather than a mockup.

It ships the bench above as a button, so you do not have to take my word for it. Measured in Chrome on 2026-09-21, 27440 samples inside the valid radius: mean angular error 0.98 degrees, worst case 2.97, against that 3.37 degree 8-bit floor. The operator is more accurate than the format it writes into.

Nothing is generated and nothing is uploaded. It transforms an image you already own, on your own machine, so whatever rights you held on the source you still hold on the output. That matters for this jam's asset rules.


The test above is free and works on whatever tool you end up using. Good luck with your entries.