Use a height-friendly source
Start with grayscale data when possible. White-to-black values should describe relative elevation rather than only color or lighting.
Browser-based PBR tool
Turn image luminance into a height-derived displacement starting point with local processing, live material preview, and an optional full PBR export set.
Generate a consistent map set locally, then validate it in the material system where scale and lighting are visible.
Local PBR generator
The Displacement tab is selected first so you can judge the grayscale relief, while the same pass provides Normal, Height, AO, Roughness, Metallic, Specular, and ORM outputs.
The Displacement tab is selected first so you can judge the grayscale relief, while the same pass provides Normal, Height, AO, Roughness, Metallic, Specular, and ORM outputs.
Upload an image or choose a sample texture to start.
Batch PBR export
Add up to 20 images, process them one at a time in this browser, and download the generated PNG maps in one ZIP. A failed image is marked separately so the rest of the queue can finish.
Use one Strength, Blur, Contrast, and engine direction setting across a folder of related images, then download eight PNG outputs per source.
PNG, JPG, JPEG, and WebP files up to 12 MB each. The browser processes them sequentially to keep memory use predictable.
Keep height information visible before it reaches geometry
Displacement needs a height signal that matches the scale of the final mesh. This tool gives you a normalized, grayscale starting point and a lit preview so you can spot exaggerated edges, noisy pixels, and baked lighting before export.
| Output | Stores | Useful for |
|---|---|---|
| Normal | RGB tangent-space directions | Small surface lighting detail on a mesh |
| Height | Grayscale relative elevation | Bump, displacement, or cleanup |
| AO | Grayscale occlusion estimate | Crevice and contact shading |
| Roughness | Grayscale surface response | Gloss and highlight control |
| Metallic | Grayscale metalness starting point | PBR material authoring |
| Specular | Grayscale reflection starting point | Specular workflow inputs |
| Displacement | Grayscale height-derived detail | Material displacement tests |
| ORM | R = AO, G = Roughness, B = Metallic | Packed channel workflows |
Roughness, Metallic, Specular, and ORM are starting-point outputs derived from one image signal. They are not a physically accurate material scan and should be tuned against your actual lighting and shader conventions.
How to use this PBR tool
A grayscale height map is the clearest input because its brightness is meant to represent relative elevation. Color textures also work, but their luminance may mix hue, shadows, highlights, and actual surface relief.
Open the generatorStart with grayscale data when possible. White-to-black values should describe relative elevation rather than only color or lighting.
Use Contrast to control the height separation and Strength to control the derived normal response. Neither control can recover missing geometry.
Apply a small Blur when the source contains isolated pixels, compression noise, or details too small for the final mesh scale.
Download the displacement or height PNG for a grayscale workflow, or use the complete set when the same source also needs roughness and ORM outputs.
The free single-image and batch flows decode, generate, and package results in the browser. Your source images are not uploaded to a conversion endpoint.
A generated map changes lighting response but cannot recover hidden geometry, remove baked shadows, or decide the right physical material values from one image.
Good starting cases
Use the generated maps to shorten the first pass, then adjust ranges, channel packing, color space, and shader settings in the tool where the asset will ship.
Create a height-derived relief map from a grayscale source.
Prepare a bump or displacement starting point for Blender, Unity, or Unreal.
Compare displacement strength against a normal map in a lit preview.
Batch a set of height references with identical contrast and blur.
Displacement and Height are exported as grayscale PNGs. They can be used for material experiments, bump conversion, or as a starting point for geometry-based displacement after you establish the correct height range in your 3D application.
FAQ
These answers cover output meaning, local processing, channel conventions, and the limits of deriving PBR maps from one image.
Both are grayscale representations of relative surface height in this tool. Height is the neutral source-data label, while displacement describes the intended use of that grayscale signal to move geometry or drive a displacement shader.
No. This page creates an image. Your 3D application or material system must use that image to displace geometry or alter shading, and the final result depends on mesh density, scale, filtering, and shader settings.
Yes, grayscale is the clearest format because each pixel can represent a relative height. Color inputs are accepted, but the tool converts them to luminance first and cannot tell whether a color change represents actual elevation.
Lower Contrast or Strength, add a small Blur, and inspect the map at the same scale used by the final material. Strong baked shadows and compression noise can also create false height edges.
Yes. The same local generation pass creates Normal, Height, AO, Roughness, Metallic, Specular, Displacement, and ORM PNG outputs, so you can download only the map you need or use the full PBR set.
Related tools
Choose the output or source type that matches the next step of your asset pipeline. Each page keeps the conversion local and links back to the complete PBR workflow.