- Added a Save Material option to the viewer.
- Added property accessors to PropertyAssign and PropertySetAssign
- Added Python bindings for TypeDesc and array-type Values.
- Added Python functions getTypeString, getValueString, and createValueFromStrings.
- Added support for GCC 9 and Clang 8.
- Updated the interface of readFromXmlFile and writeToXmlFile to support FilePath and FileSearchPath arguments.
- Extended Python bindings for FilePath and FileSearchPath.
- Deprecated Python functions typeToName, valueToString, and stringToValue.
- Removed deprecated Python functions objectToString and stringToObject.
- Fixed the OSL implementation of roughness_dual.
Merged shader code generation and physically-based shading nodes from Autodesk's ShaderX extensions. Added a default MaterialX viewer based on GLSL shader generation.
- Added the MaterialXGenShader library, supporting shader code generation in GLSL and OSL.
- Added the MaterialXRender library, providing helper functionality for rendering MaterialX content.
- Added the MaterialXView library, providing a default MaterialX viewer.
- Added the physically-based shading node library (libraries/pbrlib).
- Added a root-level 'cmake' folder, including a standard FindMaterialX module.
- Added a root-level 'resources' folder, including example materials and meshes.
- Added documents for the 1.37 specification.
- Moved the MaterialX data libraries from 'documents/Libraries' to 'libraries'.
- Updated MaterialX node definitions to the 1.37 specification.
- Updated the PyBind11 library to version 2.2.4.
- Removed customizations of PyBind11 to support Python 2.6. Only Python versions 2.7 and 3.x are now supported.
- Added support for 'nodedef' attributes on MaterialX::Node, integrating this usage into GraphElement::addNodeInstance.
- Added the MaterialX::GeomPropDef class for geometric input declarations.
- Added the Document::getGeomAttrValue method.
- Added the ValueElement::getResolvedValue method.
- Added support for the MATERIALX_SEARCH_PATH environment variable.
- Added support for GCC 8 and Clang 7.
- Added callbacks Observer::onCopyContent and Observer::onClearContent, and removed callback Observer::onInitialize.
- Moved the standard document library to the 'documents/Libraries/stdlib' folder.
- Added support for interface tokens, including the MaterialX::BindToken class and '[TOKEN]' syntax in filenames.
- Added support for Clang 6.
- Updated geometry token syntax from '%TOKEN' to '<TOKEN>'.
- Replaced readXIncludes boolean with a readXIncludeFunction callback in the XmlReadOptions structure.
- Combined individual options into an XmlWriteOptions argument for the XML write functions.
- Extended functionality of the vector and matrix classes.
- Updated the PyBind11 library to version 2.2.3.
- Updated the PugiXML library to version 1.9.
- Fixed graph implementations of range, extract, tiledimage, and ramp4 nodes.
Updated the MaterialX library to the v1.36 specification.
- Added support for Element namespaces.
- Added support for NodeDef inheritance.
- Added support for root-level node elements.
- Added support for inheritance attributes on MaterialX::Material and MaterialX::Look.
- Added support for include and exclude attributes on MaterialX::Collection.
- Added the MaterialX::Token class for string substitutions.
- Added the MaterialX::Variant, MaterialX::VariantSet, and MaterialX::VariantAssign classes.
- Added the MaterialX::GeomPath class for geometry name comparisons.
- Added the Collection::matchesGeomString method, for testing matches between collections and geometries.
- Added the Material::getGeometryBindings method, for finding the bindings of a material to specific geometries.
- Removed the MaterialX::MaterialInherit and MaterialX::LookInherit classes.
- Removed the MaterialX::CollectionAdd and MaterialX::CollectionRemove classes.
- Removed the MaterialX::Override class and support for public names.
- Removed the 'channels' attribute from MaterialX::InterfaceElement.
- Removed the Material::getReferencingMaterialAssigns method (deprecated in Python).
- Added material inheritance support to graph traversal and the high-level Material API.
- Added Material methods getActiveShaderRefs and getActiveOverrides.
- Added PropertySet methods setPropertyValue and getPropertyValue.
- Added Element methods setInheritsFrom, getInheritsFrom, traverseInheritance, hasInheritanceCycle, and getDescendant.
- Added function templates MaterialX::fromValueString and MaterialX::toValueString.
- Added math functionality to the vector and matrix classes.
- Added support for Visual Studio 2017, GCC 7, and Clang 5.
- Renamed Matrix3x3 to Matrix33 and Matrix4x4 to Matrix44.
- Renamed VectorN::length to VectorN::numElements.
- Updated the PyBind11 library to version 2.2.1.
- Added high-level Material API, including getPrimaryShaderParameters, getPrimaryShaderInputs, getBoundGeomStrings, and getBoundGeomCollections.
- Added methods ValueElement::getBoundValue and ValueElement::getDefaultValue.
- Added support for multi-output nodes.
- Added support for TypeDef members.
- Added StringResolver class, for applying substring modifiers to data values.
- Added example interfaces for the Disney BRDF, Disney BSDF, and alSurface shaders.
- Renamed method Material::getReferencedShaderDefs to Material::getShaderNodeDefs.
- Renamed method ShaderRef::getReferencedShaderDef to ShaderRef::getNodeDef.
- Renamed method Node::getReferencedNodeDef to Node::getNodeDef.
- Added a 'string' suffix to all accessors for 'node', 'nodedef', and 'collection' strings.
- Combined individual booleans into an XmlReadOptions argument for the XML read functions.
- Removed method Document::applyStringSubstitutions (deprecated in Python).
- Removed method InterfaceElement::getParameterValueString (deprecated in Python).
- Added support for Python 3.
- Added support for standard TypeDef attributes.
- Added support for values of type 'stringarray'.
- Added method Element::setName.
- Extended Python bindings for Document, NodeGraph, MaterialAssign, and Collection.
- Modified NodeGraph::topologicalSort to return elements in a more intuitive top-down order, with upstream elements preceding downstream elements.
- Removed special cases for string return values in MaterialX Python, with all strings now returned as 'unicode' in Python 2 and 'str' in Python 3.
- Updated OSL reference implementations.
- Fixed handling of empty names in Element::addChildOfCategory.
- Fixed an edge case in Document::upgradeVersion.
- Added OSL source files for the standard nodes.
- Added example document 'PostShaderComposite.mtlx'.
- Added method MaterialX::prependXInclude.
- Argument 'writeXIncludes' defaults to true in MaterialX::writeToXmlStream and MaterialX::writeToXmlString.
- Fixed handling of BindInput elements with missing connections.
- Added a 'viewercollection' attribute to MaterialX::Visibility.
- Added Python support for visibility and source URI methods.
- Changed naming convention from 'ColorSpace' to 'ColorManagement' in Document methods.
- Split library document 'mx_stdlib.mtlx' into 'mx_stdlib_defs.mtlx' and 'mx_stdlib_osl_impl.mtlx'.
Updated the MaterialX library to the v1.35 specification.
- Added the MaterialX::Visibility class.
- Added 'file', 'function', and 'language' attributes to MaterialX::Implementation.
- Added 'node' and 'nodedef' attributes to MaterialX::ShaderRef. In v1.35, these attributes define which NodeDef is referenced by a ShaderRef.
- Added a 'material' attribute to MaterialX::MaterialAssign. In v1.35, this attribute defines which Material is referenced by a MaterialAssign.
- Removed the MaterialX::LightAssign and MaterialX::Light classes. In v1.35, this functionality is now handled by the MaterialX::Visibility class.
- Removed the 'default' attribute from MaterialX::ValueElement. In v1.35, this functionality is now handled by the 'value' attribute.
- Replaced the 'matrix' type with 'matrix33' and 'matrix44', and replaced the MaterialX::Matrix16 class with MaterialX::Matrix3x3 and MaterialX::Matrix4x4.
- Renamed Material::getMaterialAssigns to Material::getReferencingMaterialAssigns.
- Changed the argument type for MaterialAssign::setExclusive and MaterialAssign::getExclusive to boolean.
- Added support for graph-based implementations of nodes.
- Added support for subtree/subgraph pruning in traversals.
- Added NodeGraph::topologicalSort and MaterialX::printGraphDot methods.
- Added a File module to MaterialXFormat and MaterialXTest.
- Extended NodeGraph::flattenSubgraphs to support subgraph recursion.
- Added a searchPath argument to MaterialX::readFromXmlFile.
- Fixed an issue where connecting elements were not returned in graph traversal edges.
- Added support for document validation, including the Document::validate and Element::validate methods.
- Added helper methods ValueElement::getResolvedValueString and Element::getNamePath.
- Added standard library document.