The roughness map is the most consequential single map in a PBR material. Get it wrong — or import it in the wrong color space — and your entire material looks off: surfaces that should be matte read as plastic, or flat dull surfaces that should have a specular highlight look like chalk. Get it right, and a simple material instantly reads as real under any lighting condition.
AI roughness map generators — specifically, AI tools that generate roughness as part of a full PBR set — solve the hardest part of roughness creation: physical accuracy. A purpose-built PBR model generates roughness values that correspond to the actual physical surface being described, not an approximation by eye.
This guide covers roughness map fundamentals, how AI generates physically correct roughness, import settings for every major engine, and the most common mistakes that break roughness rendering.
What the Roughness Map Actually Does
The roughness map controls how light scatters off a surface at the microscale. A roughness value of 0 (black) means a perfectly smooth mirror-like surface — all light reflects in a single direction. A roughness value of 1 (white) means a completely rough diffuse surface — light scatters in all directions equally. Most real-world surfaces fall somewhere between and often vary across the surface.
This is what makes the difference between scratched brushed aluminum (high roughness at scratch edges, lower roughness on the brushed grain) and mirror-polished aluminum (uniformly low roughness). It's the map that makes wet concrete look different from dry concrete, or a worn leather surface look different from a new one. Without roughness variation, surfaces look like uniform plastic regardless of color or normal detail.
Why AI Generates Better Roughness Maps Than Manual Methods
Traditional roughness map creation: start from an albedo, desaturate, adjust levels, paint in variations by hand, iterate based on how the result looks in the engine. This process is slow and produces values based on visual estimation rather than physical accuracy.
AI PBR generators approach this differently. A purpose-built model like the one Grix uses (fal.ai's PATINA model) generates all five maps simultaneously from the same latent representation. The roughness map isn't derived from the albedo — it's generated from the material description directly. The model understands that brushed stainless steel has anisotropic roughness characteristics, that patent leather has near-zero roughness, that aged concrete has high roughness with variation at crack and aggregate zones.
This produces physically coherent roughness maps: scratches in the albedo correspond to roughness variation in the roughness map. Mortar joints in brick have different roughness than brick faces. Worn areas show roughness increase as surface finish is lost. This correspondence is what makes AI-generated materials look correct — not just aesthetically plausible, but physically accurate.
Roughness Values for Common Material Categories
Metals (metalness 1.0):
- Mirror-polished metal: roughness 0.0–0.05
- Brushed metal (grain direction): roughness 0.2–0.4 (anisotropic)
- Satin/matte metal finish: roughness 0.4–0.6
- Cast iron, raw unfinished metal: roughness 0.7–0.85
- Heavily corroded/rusted metal: roughness 0.8–0.95
Non-metals (metalness 0):
- Polished marble, patent leather, lacquered surfaces: roughness 0.0–0.15
- Glossy painted surfaces, waxed wood: roughness 0.15–0.35
- Untreated smooth wood, natural full-grain leather: roughness 0.4–0.6
- Concrete, rough stone, brick: roughness 0.7–0.9
- Suede, chalk, unfinished clay: roughness 0.9–1.0
These are starting points. Real materials have roughness variation across the surface — a wood floor is rougher in open grain than dense grain, concrete is rougher at aggregate zones than cement paste, and leather is rougher in worn areas where finish is lost.
Generating Roughness Maps with AI
The most effective approach is using a purpose-built PBR generator that outputs roughness as part of a coherent five-map set. Standalone roughness extractors (tools that derive roughness from an existing albedo) produce approximate results — they estimate roughness from color and luminance patterns, which is an indirect and often inaccurate method.
Grix generates roughness as a first-class output alongside albedo, normal, metalness, and height. The free trial at grixai.com/try requires no account — generate any material and download all five maps including the roughness map.
Prompt tips for roughness control:
- For low roughness (glossy): "polished," "lacquered," "patent," "mirror-finish," "wet," "glazed"
- For mid roughness (satin): "satin finish," "brushed," "oiled," "waxed," "hand-rubbed"
- For high roughness (matte/rough): "rough," "unfinished," "raw," "weathered," "worn," "chalky," "suede"
- For variable roughness: "worn at edges," "polished at contact points," "scratched surface," "partially corroded" — these create spatially varying roughness that adds material realism
Critical Import Settings — Getting Color Space Right
The single most common mistake that breaks roughness maps: importing them in sRGB color space instead of linear. This is the hardest mistake to diagnose because it doesn't obviously break the material — it just makes roughness values wrong in a subtle way that reads as "the material doesn't look right."
The roughness map is a data texture, not a color texture. It encodes a physical value (0–1) linearly. Importing it as sRGB applies a gamma curve to those values, shifting them: mid-grey (roughness 0.5 linear) becomes a lighter value under sRGB gamma correction, making surfaces appear rougher than intended. Dark values (low roughness, smooth surfaces) are especially affected.
Correct import settings by engine:
Blender: Connect the roughness map texture node and set Color Space to Non-Color in the Image Texture node. Default is sRGB — you must change this manually. Non-Color tells Blender the texture is linear data, not a color image. This is the most commonly missed setting in Blender PBR workflows.
Unreal Engine 5: Set the roughness texture's Compression Settings to TC_Grayscale. This imports as linear and applies no color transform. Do not leave roughness at the default TC_Default — that applies sRGB gamma correction to your roughness values.
Unity URP/HDRP: In the texture import settings, uncheck sRGB (Color Texture) for the roughness map. Unity defaults to sRGB for all textures; uncheck this for all data maps (roughness, metalness, height, AO). Normal maps have their own separate import type.
Godot 4: In the Import panel for the roughness texture, set the import mode to Linear. Godot defaults to Detect 3D (which assumes sRGB for most imports). Manually set Linear for all non-albedo data maps.
Roughness vs. Smoothness — The Unity Convention Difference
Unity's PBR shaders use Smoothness instead of Roughness. Smoothness is the inverse: Smoothness = 1 minus Roughness. A rough surface (roughness 0.9) is a smoothness value of 0.1 in Unity's convention.
When importing roughness maps into Unity, you have two options: invert the map (in a texture editor or shader node) to get a correct Smoothness value, or wire the roughness map to Smoothness with a One Minus node. Most Unity setups handle this in the shader — check your specific shader's documentation.
Grix generates roughness maps in the standard roughness convention used by Unreal, Blender, and Godot. For Unity, invert if needed.
Verifying Roughness Map Accuracy
To verify a roughness map is physically correct: set up a directional light at a low angle (roughly 30 degrees from horizontal) and view the material at different camera angles. A physically correct roughness map produces:
- Strong specular highlight at low roughness zones when the viewing angle approaches the reflection angle
- Broad scattered highlight at high roughness zones regardless of viewing angle
- Clear variation between surface zones if the map has spatial roughness variation
- No response that looks "plastic" — that is a sign roughness is too uniform or incorrectly imported
If every surface looks like the same level of plasticky gloss, check your color space import settings first — that is the most common cause.
FAQ: AI Roughness Map Generation
Can I use a standalone roughness extractor instead of a full PBR generator? Standalone extractors derive roughness from albedo luminance — an approximation. They miss the physical correspondence between surface features and roughness variation that a purpose-built PBR model generates. For production use, a full PBR generator gives significantly more accurate results.
Why does my roughness look correct in the viewport but wrong in renders? Different render engines handle roughness math differently. Linear vs. perceptual roughness remapping can shift apparent glossiness between viewport and full render. Check if your render engine applies a roughness remap; adjust roughness input values if there is a mismatch.
What roughness value should I target for realistic concrete? Dry concrete: 0.8–0.9. Wet concrete: 0.4–0.6 (water in surface pores lowers perceived roughness). Polished concrete floor: 0.2–0.4 depending on polish level. Generate with the specific condition in your prompt — "wet concrete," "polished concrete floor," "rough cast concrete" — and the roughness map will reflect the correct values.
How do I add roughness variation to an AI-generated material? The best approach is to describe the variation in the prompt: "scratched surface," "worn at edges," "partially corroded." The AI encodes this variation in the roughness map directly. For post-generation editing, use a roughness multiply mask to add additional variation on top of the generated base.
See also: AI Normal Map Generator · PBR Texture Generator Guide · How to Generate PBR Textures with AI · Seamless AI Texture Generator