Releases: AcademySoftwareFoundation/MaterialX
Releases · AcademySoftwareFoundation/MaterialX
Version 1.39.4
Added
- Added support for WebGPU Shading Language in MaterialX shader generation.
- Added support for hex-tiled images, with initial implementations in hardware shading languages and MDL.
- Added support for latitude-longitude images, implemented as a language-independent graph.
- Added support for 2D fractals, with initial implementations in hardware shading languages, OSL, and MDL.
- Added support for NanoColor names in default color space management.
- Added support for custom OCIO configurations in shader generation.
- Added support for anisotropy in the graph definition of glTF PBR.
- Added support for the time and frame nodes in the MaterialX Viewer and MaterialX Graph Editor.
- Added support for node output types in document validation.
- Added the first animated material example to the MaterialX test suite.
- Added the first UDIM texture example to the MaterialX test suite.
Changed
- Raised the minimum Python version to Python 3.9.
- Raised the minimum OpenImageIO version to OIIO 2.2.
- Raised the default PyBind11 version to PyBind11 2.13.6.
- Optimized the graph definitions of Standard Surface, OpenPBR Surface, and glTF PBR in hardware shading languages, roughly halving the fill cost for these shading models in GLSL, ESSL, and MSL.
- Optimized the implementation of height-correlated Smith masking-shadowing in GLSL.
- Aligned implementations of the heighttonormal node beween GLSL and OSL, improving visual consistency and enabling support for arbitrary procedural heightfields.
- Deprecated the fps input of the time node, allowing it to be removed in a future specification update.
- Updated the default NanoGUI version in the MaterialX Viewer to enable builds with CMake 4.
- Improved the workflow for adding nodes in the MaterialX Graph Editor.
- Aligned viewport background colors across the MaterialX Viewer and MaterialX Graph Editor.
Fixed
- Fixed the handling of UI display color spaces in the MaterialX Viewer and MaterialX Graph Editor.
- Fixed a crash with multioutput nodes in the MaterialX Graph Editor.
- Fixed a race condition in the setting of format options for multithreaded shader generation.
- Fixed default inputs in the definitions of the atan2 nodes.
- Fixed token handling in functional nodegraphs.
- Fixed an edge case where subgraph flattening would generate invalid connections.
- Fixed incorrect face and vertex counts in GeometryHandler::createQuadMesh.
- Fixed the computation of throughput in the GLSL implementations of the BSDF multiply, add, and layer nodes.
- Fixed the interpretation of weight in the OSL and MDL implementations of subsurface_bsdf.
- Fixed the handling of missing attributes in the OSL implementation of the frame node.
- Fixed the offset of the cloverleaf node, aligning it with that of other shape nodes.
- Fixed storage of width and height in MslRenderer::setSize.
- Fixed handling of null images in MetalTextureHandler::createRenderResources.
- Fixed a missing header include in GCC 15 builds.
- Fixed the installation of PDB files in Windows debug builds.
- Patched GLFW to improve monitor detection on MacOS.
Version 1.39.3
Added
- Added support for the fract node, with implementations in GLSL, OSL, and MDL.
- Added a bitangent input to the bump node, aligning its feature set with the normalmap node.
- Added support for OSL 1.14 in shader generation, leveraging the latest closures when available.
- Added support for MDL 1.10 in shader generation, leveraging the latest closures when available.
- Added initial support for data library builds, allowing future releases to generate derived artifacts from the MaterialX data libraries.
- Added an ElementVec type alias in MaterialX C++, allowing certain patterns to be expressed more clearly and concisely.
Changed
- Improved the compatibility of MaterialX shader generation with Hydra Storm.
- Refactored the type system in shader generation, improving the thread-safety and robustness of the generation process.
- Improved the implementations of the BSDF operator nodes, preferring data definitions over explicit C++ code.
- Improved the implementations of the time node, using a graph definition in hardware shading languages.
- Optimized GitHub CI to reduce build times for contributors.
- Raised the minimum CMake version to CMake 3.26.
Fixed
- Fixed two edge cases in the version upgrade logic for normalmap nodes, addressing the usage of MaterialX versioning in OpenUSD.
- Fixed tangent frame orthogonalization for the normalmap node in OSL shader generation.
- Added validation of tree depth and XInclude depth in XML parsing, addressing cases where unusually complex documents could trigger a stack overflow.
- Adding two missing null checks in the getShaderNodes helper function.
- Integrated fixes to OSL type classes from recent work in the OSL project.
- Improved the handling of invalid materials in the MaterialX Viewer, addressing cases where missing lights could trigger a crash.
Version 1.39.2
Added
- Added support for the Chiang Hair BSDF, with initial implementations in hardware shading languages and MDL.
- Added support for the Disney Principled shading model, implemented as a language-independent graph.
- Added support for generic color ramps, using a graph-based ramp node with ten control points.
- Added support for Worley noise with solid cells, opening up new artistic options for metal flake shaders.
- Added support for data library referencing, enabling improved performance in shader generation.
- Added support for custom structure types in MaterialX.
- Added support for functional equivalence tests between MaterialX elements.
- Added support for geompropvalueuniform nodes, improving functional parity between MaterialX and USD.
- Added support for transmission effects in the translation graph from Standard Surface to glTF PBR.
- Added support for coated emission in the translation graph from Standard Surface to UsdPreviewSurface.
- Added support for Apple framework builds.
- Added support for MDL 1.9 in shader generation.
- Added support for viewdirection space in hardware shading languages.
- Added support for image downsampling in MaterialXRender.
- Added support for image difference statistics in render tests.
- Added a combined version define to MaterialX C++.
- Added a release signing workflow to GitHub Actions.
- Added documentation for keyboard shortcuts in the MaterialX Viewer.
Changed
- Improved the performance of graph traversal by skipping edges that have already been visited.
- Reduced duplication between the MSL and GLSL implementations of nodes.
- Updated the UsdPreviewSurface shading model to v2.6, maintaining the visual interpretation of existing assets.
- Raised the minimum OSL version to v1.12.6 in OSL shader generation.
Fixed
- Fixed unintentional camera orbiting in the render view of the MaterialX Graph Editor.
- Fixed banding artifacts in the MaterialX Viewer on MacOS.
- Fixed the handling of missing scenes in the MaterialX Web Viewer.
- Fixed an edge case for node pasting in the MaterialX Graph Editor.
- Fixed the implementation of texture filtering in OSL shader generation.
- Fixed the implementation of the heighttonormal node in OSL shader generation.
- Fixed a call to the anisotropic_vdf closure in OSL shader generation.
Removed
- Removed support for the legacy OSL closures, focusing exclusively on the MaterialX-synchronized closures in OSL 1.12 and beyond.
Version 1.39.1
Added
- Added initial shader translation graphs between Standard Surface and OpenPBR Surface.
- Added initial support for code generation hints.
Changed
- Raised the minimum CMake version to CMake 3.24.
- Moved feature proposals from the main specification to a new MaterialX Proposals document.
- Updated the open definitions of the MaterialX Lama nodes to improve alignment with RenderMan.
Fixed
- Fixed errors in the installation steps for CMake builds.
- Fixed the computation of Fresnel transmission in GLSL.
- Fixed an implementation of the combine2 node in MDL.
- Fixed transposed matrices in color transforms for the displayp3 space.
- Fixed edge cases in the version upgrade process for swizzle nodes.
- Fixed a crash in the Graph Editor when renaming a node graph.
- Fixed the exporting of PugiXML symbols in MaterialXFormat.
Removed
- Removed an extra installation of the resources folder in MaterialXGenShader.
Version 1.39.0
Added
- Added support for the OpenPBR Surface shading model, including the MaterialX definition and example materials for OpenPBR Surface v1.1.
- Added support for Hoffman-Schlick Fresnel, Zeltner sheen, and energy-compensated Oren-Nayar diffuse, with initial implementations in hardware shading languages.
- Added support for the LamaGeneralizedSchlick and LamaIridescence nodes, with definitions provided as MaterialX graphs.
- Added support for integer-type add, subtract, and conditional nodes.
- Added support for matrix-type switch and conditional nodes.
- Added support for additional convert node input and output types.
- Added support for monolithic builds of MaterialX.
- Added support for the full set of shader generators in JavaScript.
- Added support for frame timing in the MaterialX Viewer.
- Added a uiScale option for adjusting DPI in the Graph Editor.
- Added an example script to generate a MaterialX document from a folder of textures.
- Added unit tests for core utilities and ESSL shader generation.
- Added support for Python 3.12 in Python wheel generation.
- Added GCC 14 and Clang 18 builds to GitHub Actions CI.
Changed
- Raised the minimum C++ version for MaterialX builds to C++17.
- Updated the PyBind11 library to version 2.12.0, enabling support for recent compilers and CMake versions.
- Improved the expression of thin-film layering in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Improved the generality of the normalmap node in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Extended the switch node to ten inputs in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Renamed the inputs of the atan2 node in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Changed the type of subsurface_bsdf radius from vector3 to color3 in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Renamed the normalmap nodedef in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Improved the support for double-sided materials in MaterialX 1.39.
- Optimized Fresnel computations in GLSL, improving the performance of physically based shading in real-time renders.
- Applied lossless optimization to PNG and JPG textures in the MaterialX repository.
Fixed
- Fixed default values for the creatematrix node.
- Fixed an issue with keyboard input focus in the Graph Editor.
Removed
- Removed the swizzle node in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Removed the channels attribute in MaterialX 1.39, with automatic upgrade logic for legacy documents.
- Removed the unimplemented arrayappend node in MaterialX 1.39.
Version 1.38.10
Added
- Added support for environment light intensity in generated GLSL shaders.
Changed
- Removed an extra suffix from element names in texture baking.
Fixed
- Moved environment prefilter functions to their referencing GLSL files, addressing shader compilation errors in USD.
- Enabled color and unit transforms on root nodes in shader generation, addressing missing color transforms in USD.
- Updated document caches to store elements in declaration order, addressing compiler-dependent behavior in nodedef lookups.
- Switched to framework linkage for OpenGL libraries on MacOS, addressing build issues in downstream projects.
- Switched to legacy OpenGL libraries for Python wheels on Linux, addressing missing OpenGL functionality in Python wheels.
- Added a missing vertex data prefix in Vulkan GLSL shader generation.
Version 1.38.9
Added
- Added an initial NPR (non-photorealistic rendering) data library to MaterialX, supporting the View Direction, Facing Ratio, and Gooch Shading nodes.
- Added new nodes to the standard data library, including Reflect, Refract, Safe Power, Create Matrix, and Round.
- Added support for the generation of pre-filtered environment maps in MaterialX GLSL and MSL.
- Added support for geometry drag & drop, frame capture, UI ranges and enumerated values in the MaterialX Web Viewer.
- Added floating popups for hovered pins in the MaterialX Graph Editor.
- Added UI ranges to the 'useSpecularWorkflow' and 'normal' inputs of the UsdPreviewSurface shading model.
- Added versioning rules for the MaterialX API and data libraries to the developer guide.
- Added initial C++ fuzz tests and coverage tests to GitHub Actions CI.
- Added GCC 13, Clang 15, and Python 3.12 builds to GitHub Actions CI.
Changed
- Enabled the new OSL closures by default in shader generation, with the MATERIALX_OSL_LEGACY_CLOSURES flag used to request legacy closures.
- Updated the MaterialX Web Viewer to three.js r152.
- Switched to a more efficient representation of HDR images in the MaterialX Web Viewer.
- Improved the logic for connecting pins in the MaterialX Graph Editor.
- Improved the handling of filename inputs in OSL shader generation.
- Reduced the size of the MaterialX data libraries, improving the use of graph definitions and merging duplicate implementations.
- Raised the minimum CMake version to CMake 3.16.
- Updated the C++ unit test library to Catch 2.13.10.
Fixed
- Fixed the attenuation of coated emission in the Standard Surface shading model.
- Fixed the implementation of the overlay node in shader generation.
- Fixed an edge case for type pointer comparisons in shader generation.
- Fixed an edge case for transform nodes in GLSL and MSL shader generation.
- Fixed the implementation of mx_hsvtorgb in MDL shader generation.
- Fixed orphaned links when deleting nodes in the MaterialX Graph Editor.
- Fixed scroll wheel interactions across windows of the MaterialX Graph Editor.
- Fixed the generation of unused imgui.ini files in the MaterialX Graph Editor.
- Fixed a dependency on module import order in MaterialX Python.
- Fixed an off-by-one index check in Element::setChildIndex.
- Fixed a missing null check in Graph::propertyEditor.
- Fixed cases where absolute paths were stored in MaterialXConfig.cmake.
Version 1.38.8
Added
- Added a broad set of new pattern nodes to MaterialX, including Circle, Hexagon, Cloverleaf, Line, Grid, Crosshatch, Checkerboard, Random Color, Random Float, Triangle Wave, Integer Floor, Integer Ceiling, and Distance.
- Added support for MaterialX builds on iOS.
- Added support for drag-and-drop import of MaterialX files in the Web Viewer.
- Added generation of MaterialX Python wheels in GitHub Actions, enabling the distribution of MaterialX Python packages through PyPI.
- Added support for the lin_displayp3 and srgb_displayp3 colorspaces in shader generation.
- Added support for the blackbody PBR node in shader generation.
- Added support for displacement in MDL generation.
- Added blend and up-axis controls to the triplanar projection node.
- Added version details to shared libraries on Windows.
- Added a MacOS 13 build to GitHub Actions.
Changed
- Raised the minimum C++ version for MaterialX builds to C++14.
- Upgraded the PyBind11 library to version 2.10.4, raising the minimum Python version to 3.6, and enabling support for Python versions 3.11 and beyond.
- Improved the performance and convergence of GGX importance sampling in GLSL generation, leveraging insights from the HPG 2023 paper by Jonathan Dupuy and Anis Benyoub.
- Improved property panel display in the MaterialX Graph Editor.
- Improved node spacing in the MaterialX Graph Editor.
- Improved the robustness of MaterialX unit tests with respect to the current working directory.
- Simplified the handling of default colors in GLSL generation, removing dynamic branches on texture size.
- Simplified the definitions of the default color transforms, implementing them as language-independent MaterialX graphs.
- Simplified the interface of ShaderGenerator::emitFunctionCall, marking its original interface as deprecated.
- Marked legacy interfaces for findRenderableElements and findRenderableMaterialNodes as deprecated, making their usage visible to clients as compiler warnings.
- Moved the MaterialX specification to public Markdown files in GitHub, enabling direct contributions from the community.
Fixed
- Fixed brightness artifacts in the triplanar projection node.
- Aligned default values for conductor_bsdf with the MaterialX specification.
- Fixed volume mixing in MDL generation.
- Fixed a bug to improve shader generation determinism.
- Fixed a bug to improve the consistency of auto layout in the MaterialX Graph Editor.
- Fixed a bug to enable multi-output connection edits in the MaterialX Graph Editor.
- Fixed a bug in dot node optimizations for shader generation.
Version 1.38.7
Added
- Added the MaterialX Graph Editor, an example application for visualizing, creating, and editing MaterialX graphs.
- Added support for the Metal Shading Language in MaterialX shader generation and rendering.
- Added support for the generalized_schlick_edf node, enabling the expression of coated emissive surfaces.
- Added support for the adobergb and lin_adobergb color spaces in shader generation.
- Added uisoftmin and uisoftmax attributes to mix nodes and IOR inputs.
- Added support for authored bitangent vectors in GLSL, selected by the hwImplicitBitangents generator option.
- Added a tangent input to the glTF PBR shading model.
- Added a Clang Format step to GitHub Actions builds.
- Added support for Xcode 14.
Changed
- Included the standard data libraries in MaterialX Python packages.
- Improved the support library and node implementations for OSL generation.
- Updated MDL shader generation to support MDL 1.7.
- Improved the handling of functional graphs in MDL generation.
- Upgraded the NanoGUI version in the viewer to support Apple M1 builds.
- Upgraded the Catch library to version 2.13.9.
Fixed
- Fixed logic for tangent basis orthogonalization in generated GLSL.
- Fixed logic for metallic F90 and an opacity edge case in UsdPreviewSurface.
- Fixed parsing of inline source code variables in node implementations.
Version 1.38.6
Added
- Added new Unified Noise, Color Correct, and Bump nodes, providing artistic interfaces over the standard procedural, adjustment, and geometric primitives.
- Added shader generation support for the MaterialX closures in OSL, selected by a new CMake build option.
- Added a shader translation graph from Autodesk Standard Surface to glTF PBR.
- Added support for the transmission_extra_roughness input in the Standard Surface shading model.
- Added support for the iridescence inputs in the glTF PBR shading model.
- Added support for the subsurface_bsdf node in MDL.
- Added an operationorder input to the 'place2d' node.
- Extended the mix node to support multi-channel interpolators.
- Extended the flattenSubgraphs method to handle a broader range of graph structures.
Changed
- Improved the alignment of the UsdPreviewSurface shading graph with reference implementations.
- Improved the accuracy of the thin-film BSDF implementation in GLSL.
- Improved code generation for the mix node of 'surfaceshader' type.
- Removed add and multiply nodes for 'surfaceshader', 'volumeshader', and 'displacementshader' types.
- Refactored and extended the Advanced Options panel in MaterialXView.
Fixed
- Fixed the implementation of the screen compositing node in GLSL, OSL, and MDL.
- Fixed parent/child precedence in the getGeometryBindings function.
- Fixed OpenGL errors when unbinding geometry in MaterialXView on MacOS.