The MaterialX™ format is an open standard for representing rich material and look-development content in computer graphics, enabling its platform-independent description and exchange across applications and renderers. The project is now open-source, hosted by the Academy Software Foundation, and is ongoing development.
MaterialX allows the description of materials through graphs. Those graphs are fully built using MaterialX nodes describing a surface or a volume shader, combined with or without predefined distribution functions (BXDFs).
For a MaterialX file to be correctly supported in Unreal Engine, each file must have at least one surfacematerial or volumematerial node as en entry point, connected to either a predefined surfaceshader/volumeshader (BXDF) node or their generic counterpart surface/volume described in the MaterialX PBR Lib spec.
The different BXDF and nodes supported in Unreal Engine (UE) are described in the next sections.
Supported MaterialX version
Unreal Engine 5.8+ supports version 1.39.4 of the MaterialX specifications.
If you are using UE 5.7, the supported version is 1.39.3.
Support of MaterialX Nodes
Shading Model Examples
Autodesk Standard Surface and USD Preview Surface are supported with Substrate enabled or disable.
OpenPBR Surface is supported with Substrate enabled. However, if Substrate is disabled, the material functions of the StandardSurface are used.
glTF Surface is supported with Substrate enabled
Disney Principled BSDF is not supported.
MaterialX Physically Based Shading Nodes
BSDF Nodes | All BSDF nodes are implemented as pass-through. None of their inputs are connected. |
EDF Nodes | With the exception of |
VDF Nodes | All VDF nodes are supported. |
Utility Nodes (labeled in the PBR lib) | Supported:
Supported with Substrate enabled:
|
MaterialX NPR Shading Nodes
g18_rec709_to_lin_rec709, g22_rec709_to_lin_rec709, rec709_display_to_lin_rec709, acescg_to_lin_rec709, g22_ap1_to_lin_rec709, srgb_texture_to_lin_rec709, lin_adobergb_to_lin_rec709, adobergb_to_lin_rec709, srgb_displayp3_to_lin_rec709, lin_displayp3_to_lin_rec709 are supported.
The entire CM lib is supported.
MaterialX CM Nodes (Color Transforms)
viewdirection, facingratio and gooch_shade are supported.
MaterialX Standard Nodes
Standard Source Nodes
Types: All MaterialX types are supported except for:
|
|
|
All other input/output nodes listed below are supported, unless specified otherwise.
Texture nodes:
image |
|
tiledimage (nodegraph) |
|
triplanarprojection (nodegraph) |
|
Procedural nodes:
|
Procedural2D nodes:
|
|
Shape nodes (same nodegroup as Procedural2D):
|
|
Procedural3D nodes:
|
|
Math nodes:
|
|
|
Geometric nodes:
|
Application nodes:
|
Adjustment Nodes:
|
|
Compositing nodes:
|
|
Mix nodes:
|
Conditional Nodes:
|
Channel nodes:
|
|
Convolution nodes:
|
Organization nodes:
|
Geompropvalues
For MaterialX standalone files, geompropvalues are not supported, unless if the type is a vector2 and the name is “st” following USD standard, then the node is converted to a texcoord node.
For MaterialX shader model embedded into USD, geompropvalues are linked to their USD counterpart “primvar” then are baked into texture and converted to an <image> node.
Standard Shader Nodes
All nodes are supported.
General nodes are used when the MaterialX file does not use one of the predefined BXDFs.