Images & photos
Height image to normal map
Build a tangent-style normal texture from a greyscale height interpretation.
A clear answer. Here’s how.
Uses weighted RGB luma as height, central differences with edge clamping, and a normalised vector (−dx, ±dy, 1). Encodes signed xyz to RGB with flat output approximately (128,128,255). Strength is dimensionless and y convention is explicit. Source alpha is ignored. This is a sampled height interpretation, not recovered surface geometry or a physically calibrated normal map. Supports PNG/JPEG/WebP up to 10 MB and 4 million decoded pixels per file. Browser decoding and single-frame PNG re-encoding remove source metadata/colour profiles; no files leave this device.