Skip to content

Roughness

glTF: pbrMetallicRoughness.roughnessFactor · pbrMetallicRoughness.metallicRoughnessTexture (green channel)

Roughness describes how microscopically rough a surface is. In glTF it is stored in the green channel of the shared metallicRoughnessTexture. It is a non-color (linear) workflow.

Shader Scalar attribute Texture attribute Notes
standardSurface, aiStandardSurface specularRoughness specularRoughness Falls back to diffuseRoughness only if no MR texture was created
openPBRSurface specularRoughness specularRoughness Falls back to baseDiffuseRoughness if unavailable
StingrayPBS roughness TEX_roughness_map + use_roughness_map Repacked into the green channel on export

Factor only

Set the roughness attribute directly on the shader.

  • standardSurface, aiStandardSurface, openPBRSurface: set specularRoughness.
  • StingrayPBS: set roughness.

Exports as roughnessFactor.


Texture only

Color space: Raw

standardSurface · aiStandardSurface · openPBRSurface:
  aiImage.outColorG  →  shader.specularRoughness
  file.outColorG     →  shader.specularRoughness

StingrayPBS:
  file.outColor  →  shader.TEX_roughness_map  (enable use_roughness_map)

Roughness is packed into the green channel of metallicRoughnessTexture on export. Use a grayscale source image for the most reliable result.


Factor + texture

glTF computes: roughnessFactor × roughnessTexture

  1. Connect the texture into multiplyDivide.input1X.
  2. Set the roughness multiplier in multiplyDivide.input2X.
  3. Connect multiplyDivide.outputXshader.specularRoughness (or roughness for StingrayPBS).
standardSurface · aiStandardSurface · openPBRSurface:
  texture.outColorG  →  multiplyDivide.input1X  →  shader.specularRoughness

The multiplier exports as roughnessFactor.


Packed ORM / MR map

The preferred glTF layout when roughness, metallic, and AO share one texture:

Channel Data
R Occlusion
G Roughness
B Metallic
texture.outColorR  →  shader.gltfAO
texture.outColorG  →  shader.specularRoughness
texture.outColorB  →  shader.metalness        (standardSurface · aiStandardSurface)
texture.outColorB  →  shader.baseMetalness    (openPBRSurface)

Separate grayscale maps are also supported — the exporter repacks them into a combined MR or ORM texture. All repacked maps must share the same dimensions.


UV transform

file nodes: set repeat, wrap, mirror, offset, and rotation on the connected place2dTexture.
aiImage nodes: wrap, scale, and offset export natively; rotation requires a place2dTexture.

UV set: assign via Maya's UV Set Editor or UV Linking — see UV Set Selection for node-type differences.


Notes

  • Roughness is a non-color map. Always use Raw color space.
  • Use grayscale roughness maps for standalone inputs. If the data lives only in one channel of a packed image, follow the packed ORM workflow above.
  • If packing into a single image, roughness must be in the green channel per the glTF spec.
  • StingrayPBS: use TEX_roughness_map and set UV transforms on the connected place2dTexture.