Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_right3D Toolschevron_rightPBR Texture ToolPBR Texture Tool

PBR Texture Tool

Generate and repair PBR texture maps in your browser, free and with nothing uploaded.

upload_file

Click to browse or drag & drop files here

Select a texture map — PNG, JPG or WebP

Accepted: .png,.jpg,.jpeg,.webp

OperationHeight → normalNormal → heightInvert green channelDesaturate to roughnessInvert mapHeight → ambient occlusionAdjust levels & contrastTakes the Sobel gradient of the height field and encodes it as a tangent-space normal map. Pick the green-channel convention your engine expects.Scales the gradient before normalisation. Higher values tilt the normals further and exaggerate the relief.Smooths the height field first. Use 1–2 px when an 8-bit source shows terracing on gentle slopes.Green channel directionOpenGL / glTF / Blender (+Y up)DirectX / Unreal (+Y down)OpenGL, glTF, Blender, Unity and Godot expect green to point up. DirectX, Unreal Engine and 3ds Max expect it to point down. If bumps read as dents in your renderer, you picked the other one.Larger sources are resized before processing. Ambient occlusion and relaxation passes get slow well before 4096 px.

Similar Tools

Texture Channel Packer

Texture Channel Packer

Pack four greyscale maps into one RGBA texture, or unpack a packed texture back into separate images.

3D Texture Optimizer

3D Texture Optimizer

Resize, convert and compress the textures embedded in GLB, GLTF, FBX and USDZ models, free and entirely in your browser.

3D Material Editor

3D Material Editor

Open a GLB or GLTF model and edit every PBR material it contains — free, in your browser, with nothing uploaded.

3D UV Tool

3D UV Tool

View the UV map of any GLB, GLTF, OBJ, STL, PLY, FBX or DAE model directly in your browser.

Canvas Size Extender

Canvas Size Extender

Extend an image's canvas size by adding padding on each side. Solid color or transparent fill. Fully private.

Convert PNG to WebP

Convert PNG to WebP

Convert PNG images into optimized WebP format.

Convert TIFF to JPG

Convert TIFF to JPG

Convert TIFF/TIF images to JPG. Handles LZW, PackBits, and uncompressed TIFFs in your browser.

apps

More Tools

Browse our full collection of free online tools.

The maps you were not given

Texture packs rarely ship every map a PBR material needs. You get a photo and a height map, or a normal map baked for the wrong engine, or a glossiness map when your renderer wants roughness. This free online tool turns what you have into what you need, in the browser.

Height map to normal map

A height map stores elevation as brightness; a normal map stores a direction per pixel. Converting means taking the gradient of the height field and building the surface normal from it: N = normalize(-dh/du, -dh/dv, 1).

The gradient is estimated with a 3x3 Sobel kernel rather than a plain pixel difference, because 8-bit height maps quantise badly and a raw difference turns that quantisation into visible faceting. Strength scales the gradient before it is normalised: low values give a subtle surface, high values exaggerate the relief. Add pre-blur if your source bands on gentle slopes.

Flip green: the OpenGL vs DirectX problem

The most common normal map bug in 3D, with a one-line fix. Tangent space has its V axis pointing up, but images are stored top-down, and two conventions grew out of that disagreement:

  • OpenGL / glTF / Blender / Unity / Godot — green is +Y, pointing up. Also called Y+.
  • DirectX / Unreal Engine / 3ds Max — green is -Y, pointing down. Also called Y-.

Use the wrong one and nothing errors out. The surface simply lights from the wrong vertical direction: bumps read as dents and screw heads look punched in. It looks plausible, which is why it survives to a final render.

The fix is g = 255 - g — invert the green channel and nothing else, which is exactly what Invert green channel does. The operation is its own inverse, so it converts in both directions.

Normal to height, honestly

Recovering height from a normal map means solving a Poisson equation, so this tool integrates the slope field and runs relaxation passes to remove the drift. Raise the pass count if soft gradients appear where the surface should be flat. Only relative depth is recoverable, so the result is normalised.

Roughness, glossiness and occlusion

Desaturate to roughness uses perceptual luminance rather than a channel average; fix its range afterwards with levels. Invert map converts roughness to glossiness or smoothness and back. Ambient occlusion from height scans outwards in several directions from each pixel and darkens it by the steepest horizon it finds — the height scale slider supplies the depth a greyscale image lacks.

Everything runs on your device through the browser's own canvas APIs; no texture is uploaded.