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: setspecularRoughness.StingrayPBS: setroughness.
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
- Connect the texture into
multiplyDivide.input1X. - Set the roughness multiplier in
multiplyDivide.input2X. - Connect
multiplyDivide.outputX→shader.specularRoughness(orroughnessfor 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
Rawcolor 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: useTEX_roughness_mapand set UV transforms on the connectedplace2dTexture.