MDL SDK 2025 (387700.1252): 04 Sep 2025
ABI compatible with the MDL SDK 2025 (387700.1252) binary release
(see https://developer.nvidia.com/mdl-sdk)
Added and Changed Features
-
General
-
Added template wrapper for
ICompiled_material::lookup_sub_expression(). -
Releases on github include now archives with pre-built binaries. Note that not all features are
enabled in these builds. For now, MaterialX support, the Arnold plugin, the AxF example, and
the material browser example are not available. -
A rare race condition related to names of DB elements marked for removal has been fixed. The
corresponding section with the heading "Re-use of names of DB elements eligible for GC" on
IDatabasehas been removed from the API reference documentation. -
The import libraries for MDL Core/SDK on Windows have been removed. Users should access the MDL
Core/SDK libraries usingLoadLibrary()/GetProcAddress()ordlopen()/dlsym()instead (as
it is done in all examples). For cmake, the recommended command istarget_link_libraries(main PRIVATE $<COMPILE_ONLY:mdl::mdl_sdk> ${CMAKE_DL_LIBS})(use
... mdl::mdl_core ...for MDL Core). -
The underlying C++ type has been added to all enums in the MDL SDK API. The now useless
FORCE_32_BITenumerators have been deprecated. They are still available if
MI_BASE_DEPRECATED_FORCE_32_BITand/orMI_NEURAYLIB_DEPRECATED_FORCE_32_BITis defined. The
FORCE_32_BITenumerators have been completely removed from the Python binding (no
deprecation). -
Typos in two enumerators of
IMessage::Kindhave been fixed. The old name are still available
ifMI_NEURAYLIB_DEPRECATED_16_0is defined. -
The new context option "filename_hints" provides more flexibility when exporting nameless
resources. See documentation onIMdl_execution_contextfor details. -
The hash map implementation from
robin_hoodhas been replaced by its successor project
unordered_dense. The latter supports heterogeneous lookups used for performance improvements. -
Defining the preprocessor directive
MI_BASE_ATOM32_USE_ATOMICcan be used on linux-x86-64 to
select an implementation ofmi::base::Atom32that is understood by the thread sanitizer. -
The API reference documentation generated by doxygen uses now SVG for the inheritance diagrams.
-
Improved performance on Linux by adding the compiler flags
-fno-semantic-interpositionand
-fvisibility=hidden. -
Improved performance when accessing DB elements by name.
-
Refactored parts of the code base to remove unused code.
-
-
MDL Compiler and Backends
-
Added “
export_requested_functions” HLSL backend option allowing to export generated functions
in DXIL libraries. -
Improved HLSL code generation resulting in less PHI variables.
-
Also expose names of let expressions in material instances and lambda functions via
mi::mdl::DAG_unit). -
Added support for MDL 1.10: the compiler accepts MDL 1.10, the internal representation is 1.10
now. -
Implemented version promotion for default arguments: As default arguments are hidden to the
user, they are now not only auto imported, but also version promoted. Especially entities that
uses deprecated functions in its default arguments are not filtered out anymore, if they can
be promoted. -
Improved generated debug information by the core compiler, especially fill in debug line
information in several corner cases which were not available before -
API change: built-in module have now there absolute module name stored as their file name. This
allows to have better debug information for code originated from the built-in modules,
especially for code from the base module.
-
-
MDL Distiller and Baker
- Introduced epsilon for the constant detection in the CPU baker.
-
MDL SDK examples:
- AXF to MDL: Updated recommended AxF SDK version to 1.9.2.
Fixed Bugs
- MDL Compiler and Backends
-
Fixed a crash in the compiler that occurred during the type construction if the error
message for "struct S { name name; }" declaration was constructed. -
Fixed a crash in that occurred because a partial structure update
did not generate all struct field access functions, although these are necessary in
the DAG representation. -
Fixed several auto-import problems, for instance caused by default arguments of struct
elemental constructor. As a consequence, it is now always an "internal error" if the compiler
was not able to do the auto-import, not only an assertion in debug builds. -
Fixed declarative property of struct constructors, the declarative property of struct
constructors must be inherited from the struct type definition.
-