Takes a 2D heightmap stored in an ndarray and generates a matching normal map.
Uses a method that is fast, but less accurate - I believe this approach works best :)
Generates a normal map.
heightmapshould be a 2D ndarray, where each value corresponds to the height at that point.
options.outputis an optional 3D ndarray to output to. If not supplied, one will be created. It's essentially the same size as the heightmap but with an added dimension for X/Y/Z rotation values. So the shape of this ndarray should be equivalent to:
[heightmap.shape, heightmap.shape, 3]
options.xzscaleThe scale of the horizontal planes. Defaults to 1.
options.yscaleThe scale of the vertical plane. Defaults to 1.
options.wrapa boolean for whether the heightmap is tiling and the normal map should wrap around the edges. Defaults to true.