A Material Definition (FBX, GLTF, USDSurface) is represented by a series of maxon::MAXON_ATTRIBUTE and a namespace containing only maxon::MAXON_ATTRIBUTE is called a material description bundle.
Default values must be defined via the Resource Editor.
A maxon::material::MaterialExchangeData representing this series of attributes can be created to define a material definition as a single data structure.
There are two categories of data that can be stored in a maxon::material::MaterialExchangeData:
To help build a maxon::material::MaterialExchangeData, the maxon::material::ParameterStorageInterface provides static helpers to build a complete maxon::material::MaterialExchangeData.
This maxon::material::ParameterStorageInterface can also be used to retrieve a complete material definition from an incomplete maxon::material::MaterialExchangeData by retrieving default values if needed.
A maxon::material::MaterialExchangeData is the data representation of a material definition.
A maxon::material::MaterialExchangeData may not be the complete representation of a material definition.
As an example, a maxon::material::MaterialExchangeData may have stored only information about the diffuse color, while the overall material definition supports diffuse color and reflection.
A maxon::material::MaterialExchangeData is made of:
A constant value can be represented by:
Both have a boolean _isConstant and UInt _dynamicTimestamp members.
The _isConstant defines whether the parameter is constant and only requires a single value for the representation.
The _dynamicTimestamp is the time stamp of the dynamic texture-driven parameter. This is used to manage the parameter dirty state, especially useful for consistent viewport representation.
A Texture value can be represented by: