Texture Map Generator
Drop in a photo or texture and generate the full set of maps a 3D artist needs: height, depth, tangent-space normal, ambient occlusion, roughness, specular, bump/emboss, and curvature. Each map is computed from the image's luminance and slope using Sobel and Laplacian filters directly on an HTML canvas, then exported as PNG, individually or all at once as a ZIP. The processing happens on your device, no image is sent anywhere.
Reviewed by Vincenzo Manto, Founder & Lead Developer · Last updated October 2, 2026
How it works
- 1
Upload or drag in a source image. A flat-lit photo or seamless texture works best.
- 2
Adjust relief strength, smoothing radius, and height direction to match your surface.
- 3
All 8 maps regenerate instantly: height, depth, normal, AO, roughness, specular, bump, and curvature.
- 4
Download any map individually as PNG, or grab the full set at once as a ZIP.
A full PBR map set from a single photo
Building a convincing material normally means sourcing or baking half a dozen separate texture maps. This tool derives all of them, normal, height, depth, ambient occlusion, roughness, specular, bump, and curvature, from one source image using image-processing techniques like Sobel gradients, Laplacian edge detection, and separable blur. You get a usable starting point in seconds instead of hand-painting each channel.
Canvas-based, adjustable, and private
Every map updates live as you tweak the relief strength, smoothing radius, and height direction, because the whole pipeline runs on an in-browser canvas rather than a server. Your source images and resulting textures stay on your machine.
Frequently asked questions
Is my image uploaded to a server?
No. The image is drawn onto an HTML canvas and every map is computed pixel by pixel in your browser with plain JavaScript, so it never leaves your device.
How is the normal map calculated without real depth data?
It approximates surface slope using a Sobel gradient operator over the image's luminance, then encodes the resulting X/Y/Z surface normal into the RGB channels. This is the same technique used by classic 'height-to-normal' tools like CrazyBump or Normal Map Online.
What's the difference between the height map and the depth map?
The height map is the raw grayscale luminance (brighter = higher, following standard displacement-map convention). The depth map follows the camera-distance convention instead: brighter pixels are closer, and it's lightly smoothed, which is how depth buffers are typically authored.
How are ambient occlusion, roughness, and specular approximated?
AO darkens pixels that are noticeably darker than their blurred neighborhood (likely crevices). Roughness is driven by local high-frequency detail (busier areas are rougher). Specular is modeled as roughly the inverse of roughness, nudged by overall brightness. These are image-based heuristics, not physically measured values, but they work well as a fast starting point for a material.
What image formats and sizes are supported?
Any image your browser can decode (PNG, JPEG, WebP, etc.). Processing is capped at 2048px on the longest side to keep generation fast in the browser.
Can I use these maps in Blender, Unity, or Unreal?
Yes. Each export is a standard PNG following the conventional map orientation and channel layout those engines expect (e.g. OpenGL-style normal map with Y+ up), so you can plug them straight into a material's normal/height/AO/roughness/specular slots.
Related tools
Screenshot Beautifier
Turn a screenshot into a studio-quality mockup with window frames, 3D tilt, shadows, and redactions.
Screenshot Showcase Generator
Transform screenshots into professional multi-device showcase graphics.
Image to Video Converter
Turn a set of images into a slideshow video, exported as MP4 or WebM.