Material Graph¶
Overview¶
The Material Graph allows for the authoring of custom material shade graphs. The graph is composed of shading nodes connected together and stored as UsdShade within the stage.
Nodes¶
Provided with the Material Graph is a comprehensive list of MDL, BSDFs, and functions. Materials and functions are represented as drag and droppable nodes in the Material Graph Node List.
Materials¶
Materials Modifiers¶
Texturing High Level¶
Texturing Basic¶
Math Functions¶
- Abs
- Acos
- Add
- Asin
- Atan
- Atan2
- Average
- Blackbody
- Ceil
- Check Equality
- Clamp
- Compare
- Condition
- Cos
- Cross
- Degrees
- Distance
- Divide
- Dot
- Exp
- Exp2
- Floor
- Fmod
- Frac
- Length
- Lerp
- Log
- Log10
- Log2
- Luminance
- Max
- Max Value
- Min
- Minimum Value
- Multiply
- Normalize
- Pow
- Radians
- Remap
- Round
- Rsqrt
- Saturate
- Sign
- Sin
- SinCos
- Smoothstep
- Sqrt
- Step
- Subtract
- Tan
Constants, State and Primvars¶
- Animation Time
- Constant Bool
- Constant Color
- Constant Float
- Constant Float2
- Constant Float3
- Constant Float4
- Constant Int
- Constant Texture_2d
- Hit Position
- Meters Per Scene Unit
- Object ID
- PI
- Primvar Lookup Color
- Primvar Lookup Float
- Primvar Lookup Float2
- Primvar Lookup Float3
- Primvar Lookup Float4
- Primvar Lookup Int
- Primvar Lookup Int2
- Primvar Lookup Int3
- Primvar Lookup Int4
- Primvar Lookup Uniform Color
- Primvar Lookup Uniform Float
- Primvar Lookup Uniform Float2
- Primvar Lookup Uniform Float3
- Primvar Lookup Uniform Float4
- Primvar Lookup Uniform Int
- Primvar Lookup Uniform Int2
- Primvar Lookup Uniform Int3
- Primvar Lookup Uniform Int4
- Scene Units Per Meter
- Shade Normal
- Shade Tangent
- Shade Bi-Tangent
- Texture Coordinate 2D
- Texture Coordinate 3D
- Transform Normal
- Transform Point
- Transform Scale
- Transform Vector
Constructors, Conversions, and Swizzles¶
- Color from Float
- Color from Float3
- Color from Floats
- Color from Texture Return
- Float2 from Float
- Float2 from Floats
- Float2 from Int2
- Float3 from Color
- Float3 from Floats
- Float3 from Int3
- Float4 from Floats
- Float4 from Float3,Float
- Float from Texture Return
- Int2 from Int
- Int3 from Int
- float4.W float
- texture_return.mono float
- Color.R float
- float2.X float
- float3.X float
- float4.X float
- texture_return.tint.R float
- color.XY float2
- float2.XY float2
- float3.XY float2
- float4.XY float2
- texture_return.XY float2
- color.XYZ float3
- float3.XYZ float3
- float4.XYZ float3
- texture_return.XYZ float3
- Color.G float
- float2.Y float
- float3.Y float
- float4.Y float
- texture_return.tint.G float
- Color.B float
- float3.Z float
- float4.Z float
- texture_return.tint.B float
Advanced¶
Miscellaneous¶
Custom User Nodes¶
You can can add custom MDL nodes to the Material Editor by adding MDL modules to the “User Allow List” in the Material Preferences

User Allow List¶
To add MDL functions and Materials to the Material Editor node list, use the plus button to the right of the “User Allow List” list. Modules listed in the Allow list must also be included somewhere in the MDL Search Path.

User Block List¶
To exclude a module from the node list, add the module the “User Block List”. Use the plus button to the right of the “User Block List” and add the name of module you wish to exclude from the node list.
Material Config¶
Adding MDL modules to the “Allow” and “Block” lists are specified in the material.config.toml in the $HOME/Documents/Kit/shared folder.
material.config.toml
[materialGraph]
userBlockList = [
"OmniShared.mdl"
]
userAllowList = [
"OmniImage.mdl"
]
Exporting Functions and Materials¶
Functions and materials that are prefixed with export are made available to the editor and referenced in UsdShade using the sourceAsset and subIdentifier info attributes.
OmniImage.mdl
export base::projection_mode to_native_projection_mode(uniform projection_mode mode)
{ ... }
export float3 compute_latitude_longitude_projection(float3 pos, uniform float3 rotation)
{ ... }
export base::texture_return texture_lookup_2(
uniform texture_2d texture = texture_2d(),
uniform bool ignore_missing_texture = false,
color missing_color = color(0.0),
uniform bool use_uv_coords = false,
float2 uv_coords = float2(0.0),
uniform wrap_mode s_wrap = wrap_periodic,
uniform wrap_mode t_wrap = wrap_periodic,
base::texture_coordinate_info texture_coordinate_info = base::texture_coordinate_info())
{ ... }
