Skip to content

MDL SDK 2025 (387700.1252): 04 Sep 2025

Choose a tag to compare

@jreichel-nvidia jreichel-nvidia released this 01 Oct 09:18
· 4 commits to master since this release

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
      IDatabase has 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 using LoadLibrary()/GetProcAddress() or dlopen()/dlsym() instead (as
      it is done in all examples). For cmake, the recommended command is

      target_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_BIT enumerators have been deprecated. They are still available if
      MI_BASE_DEPRECATED_FORCE_32_BIT and/or MI_NEURAYLIB_DEPRECATED_FORCE_32_BIT is defined. The
      FORCE_32_BIT enumerators have been completely removed from the Python binding (no
      deprecation).

    • Typos in two enumerators of IMessage::Kind have been fixed. The old name are still available
      if MI_NEURAYLIB_DEPRECATED_16_0 is defined.

    • The new context option "filename_hints" provides more flexibility when exporting nameless
      resources. See documentation on IMdl_execution_context for details.

    • The hash map implementation from robin_hood has 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_ATOMIC can be used on linux-x86-64 to
      select an implementation of mi::base::Atom32 that 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-interposition and
      -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.