Skip to content

Volume

glTF extension: KHR_materials_volume
glTF properties: thicknessFactor · thicknessTexture · attenuationDistance · attenuationColor

Volume describes how light is absorbed and colored as it travels through the interior of a solid object. It works together with KHR_materials_transmission — transmission controls how much light enters the surface; volume controls what happens to that light inside. Requires KHR_materials_volume to be enabled in the export options.

Shader Thickness attribute Attenuation distance Attenuation color Notes
standardSurface, aiStandardSurface thickness transmissionDepth transmissionColor
openPBRSurface thickness transmissionDepth transmissionColor
StingrayPBS not supported not supported not supported

Thickness

Thickness represents the depth of material a ray travels through. In glTF the thickness value is stored in the green channel of thicknessTexture. A thicknessFactor of 0.0 means the surface is infinitely thin and no volume effect is written.

Factor only

Set thickness directly on the shader. The exporter only writes a volume extension when the value is greater than 0.0.

Exports as thicknessFactor.

Texture only

Color space: Raw

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

The exporter converts any source channel into the green channel of a dedicated thickness image. The original factor is exported separately as thicknessFactor.

Exports as thicknessTexture (G channel).

Factor + texture

glTF computes: thicknessFactor × thicknessTexture.G

  1. Connect the thickness texture into a multiplyDivide node.
  2. Set the thickness multiplier in multiplyDivide.input2X.
  3. Connect multiplyDivide.outputXshader.thickness.
standardSurface · aiStandardSurface · openPBRSurface:
  texture.outColorG  →  multiplyDivide.input1X  →  shader.thickness

The multiplier exports as thicknessFactor.


Attenuation distance

Attenuation distance sets how far light travels before it is fully absorbed. Maps from the transmissionDepth attribute. The exporter only writes this value when it is a positive, finite number — 0.0 and inf are both skipped.

standardSurface · aiStandardSurface · openPBRSurface:
  set transmissionDepth  →  exports as attenuationDistance

Note

Attenuation distance is a scalar-only property. There is no texture path for attenuationDistance in glTF.


Attenuation color

Attenuation color tints the light as it is absorbed. Maps from the transmissionColor attribute. The exporter only writes this value when it differs from the default white [1, 1, 1] (white = no absorption).

standardSurface · aiStandardSurface · openPBRSurface:
  set transmissionColor  →  exports as attenuationColor

Note

Attenuation color is a scalar-only property. There is no texture path for attenuationColor in glTF.

Shared attribute with diffuse transmission

transmissionColor is also used by the diffuse transmission workflow. When a diffuse transmission graph is active on the same shader, transmissionColor is reserved for KHR_materials_diffuse_transmission and is not exported as attenuation color. To use volume attenuation color, use a classic transmission setup without an active diffuse transmission graph on the same material.


UV transform (thickness texture)

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

  • Volume is only meaningful when KHR_materials_transmission is also active on the same material. Combine both extensions for realistic glass or solid translucent objects.
  • Thickness texture is always written in the green channel by the exporter, regardless of the source channel in Maya.
  • A thickness of 0.0 disables volume export entirely. Set it above 0.0 to activate the extension.
  • attenuationDistance and attenuationColor are scalar-only properties with no glTF texture slot.
  • StingrayPBS does not export KHR_materials_volume.