twirl

Roughness map vs gloss map: the difference and how to convert them

September 4, 2026·twirl

Roughness and gloss maps describe the same surface property in opposite directions. Learn which one Blender, Unreal, and Unity expect and how to convert them.

A roughness map and a gloss map describe the same basic surface property from opposite directions.

In a roughness map, black means smooth and reflective while white means rough and matte. In a gloss map, the values are reversed. White means smooth and glossy, black means rough.

That sounds simple until a material moves between Blender, Unreal Engine, Unity, an older texture library, and a renderer that still uses specular/gloss terminology. A map can be technically valid and still make the material look completely wrong because the destination shader expects the inverse convention.

Roughness map vs gloss map

The conversion is straightforward:

Roughness = 1 - Glossiness

So a roughness value of 0.75 is equivalent to a gloss value of 0.25. A roughness value of 0.1 is equivalent to gloss 0.9.

Both maps are describing microsurface behavior. The renderer uses that value to determine how concentrated or spread out a reflection should be. Blender's current Principled BSDF describes roughness as microfacet roughness, with 0 producing a sharp reflection and 1 producing a diffuse reflection. Unreal uses the same 0-to-1 roughness direction in its material system. Blender documents the Roughness input here, and Epic describes Unreal's Roughness input here.

The important part is not the filename. It is knowing whether light pixels are supposed to mean rough or smooth.

What a roughness map should look like

A roughness map is grayscale, but it should not usually look like a grayscale copy of the base color.

It is describing how the surface reflects light, not how bright the material is. A dark stain on concrete does not automatically mean that area is smoother. A white painted mark does not automatically mean it is rougher.

Useful roughness variation follows changes in the physical finish: fingerprints on metal, polished contact areas, worn varnish, dust, oil, wet patches, scratches, oxidation, or areas where a coating has been removed.

This is why roughness often does more for the feel of a material than adding more color detail. Two surfaces can have nearly identical albedo but read very differently when one has tight reflections and the other breaks them into a broad matte response.

We tend to judge roughness under lighting that gives us something clear to reflect. A flat 2D thumbnail can tell you where values are changing, but a grazing highlight on a sphere or plane tells you whether those values actually make sense.

Roughness variation like this is what makes a generated material feel physical under light.

Example prompt

fingerprints on brushed stainless steel, oily smudges, matte scratches

Albedo
Normal
Roughness
Metallic
Height

Albedo, normal, roughness, metallic, and height — tileable PNGs.

Loading preview…

Generate a PBR material

Blender uses roughness directly

Blender's Principled BSDF has a Roughness input. A twirl roughness map can connect to it directly.

Set the image texture to Non-Color data. Roughness is numerical surface data, so it should not go through the same display color transform as an albedo texture.

If a texture package gives you a gloss map instead, invert it before the Principled Roughness input. You can do that destructively in an image editor or non-destructively in the shader with an invert-style node setup.

Our Blender material guide covers the rest of the PBR setup, including color spaces, normals, and height maps.

Unreal Engine also uses roughness directly

Unreal's standard material inputs use Roughness, with 0 representing a smooth mirror-like surface and 1 representing a rough matte surface. Epic also notes that most real surfaces benefit from mapped roughness variation instead of one uniform value.

For a standalone roughness texture, disable sRGB in the texture settings and connect the grayscale data to the Roughness input.

If your source texture is labeled Gloss or Glossiness, invert it first. In Unreal, a OneMinus node is a convenient way to test this without editing the source image. If the material suddenly goes from backwards-looking to plausible, there is a good chance the source was gloss data rather than roughness.

The same issue can show up inside packed textures. An ORM texture usually stores roughness in the green channel, while another pipeline may store gloss or smoothness in a channel instead. Our ORM texture guide goes deeper on packed channel conventions.

Unity commonly wants smoothness

Unity is where this naming difference becomes especially important.

Unity commonly exposes Smoothness rather than Roughness. Smoothness follows the gloss direction: higher values are smoother and lower values are rougher. Unity's documentation describes smoothness as the microsurface control used alongside metallic or specular workflows. In practical terms, a twirl roughness map needs to be inverted before it becomes Unity smoothness. Unity documents its smoothness workflow here.

The exact storage also depends on the render pipeline and shader. Smoothness can live in an alpha channel or inside a packed map rather than as a standalone texture.

That is why we recommend identifying the shader first, then preparing the textures for it. Do not build a Unity packing workflow from the assumption that every project expects the same channel layout.

Our Unity material guide covers the current Built-in, URP, and HDRP considerations at a higher level.

How to convert gloss to roughness

If the two maps are true inverses, converting between them only requires inverting the grayscale values.

In Photoshop, GIMP, Affinity Photo, or another image editor, invert the image and save a new file. If you want to keep the source untouched, do the inversion in the material graph instead.

For shader-based conversion, the operation is simply 1 - value. Blender can perform the inversion in nodes. Unreal has OneMinus. Other material systems have equivalent math or invert nodes.

For a handful of materials, doing this in the shader is convenient. For a production library, we usually prefer converting the source textures once and naming them clearly. That removes one hidden operation from every material and makes the files easier to inspect outside the renderer.

Why an inverted map can look almost right

This is one reason roughness and gloss problems can survive for longer than normal-map orientation mistakes.

A reversed normal map often looks obviously broken. Inverted roughness can still look like a plausible material, just the wrong one. Dust becomes polished. Fingerprints become matte patches. Scratched varnish becomes glossier than the untouched finish.

Neutral gray values make the problem even harder to notice because 0.5 remains 0.5 when inverted.

If a material feels strangely plastic, wet, or uniformly dull after import, we check a few things before changing the art:

  1. Is the file actually roughness, gloss, or smoothness?
  2. Is the data being treated as linear rather than sRGB color?
  3. Is the correct channel being read if the texture is packed?
  4. Does the roughness variation make physical sense under reflections?

Those checks usually tell you more than immediately pushing contrast or adding noise.

Roughness is not specular intensity

Roughness controls the spread of a reflection. It is not simply a slider for how much reflection exists.

This distinction matters when moving between older specular/gloss workflows and modern metallic/roughness materials. A gloss map is the inverse of roughness, but a specular map is a separate input describing reflectance behavior. You should not convert a specular texture into roughness by inverting it.

Modern metalness workflows separate those jobs more clearly. Roughness describes the microsurface. Metallic identifies whether a region behaves as metal or dielectric. Base color carries the surface color information appropriate to that material type.

If you are unsure what a downloaded grayscale map represents, inspect the material package or documentation before wiring it by appearance alone.

What twirl exports

twirl currently exports a roughness map as part of each generated PBR set, alongside albedo, normal, metallic, and height.

That means the map can connect directly to roughness inputs in Blender and Unreal. For a shader that expects glossiness or smoothness, invert the roughness values first.

We prefer keeping the generated source maps separate because they are easy to inspect, edit, and move between applications. Engine-specific inversions and channel packing can happen when you know the final destination.

If you are starting from a surface description, twirl generates the full PBR material set from a text prompt. Once the material looks right, adapt the roughness map to the convention your renderer actually expects.

What to do next

Try it

Generate a PBR material

Type a surface and get tileable albedo, normal, roughness, metallic, and height maps. Five free generations a day.

Open twirl
Read next

How to Turn an Image Into a Seamless Texture

Turn a photo or image into a seamless, tileable texture for Blender, Unreal, Unity, and other 3D workflows.

Continue reading
twirl

© 2026 twirlTerms·Privacy