Announcement: MDL SDK 2019 released

Get the update on or the sourcecode directly at

Changes compared to previous version (excerpt from the full release notes shipped with the SDK):

MDL SDK 2019, build 314800.830
Added and Changed Features

  • This release contains a preview version of the new MDL encapsulated (MDLE) file format. Please note that MDLE files generated with this SDK version will be invalidated with the next update.
  • A new API component mi::neuraylib::IMdle api has been added, which can be used to create MDLE files.
  • The function mi::neuraylib::IMdl compiler::load module() can now load MDLE files. Please note that the option bool "experimental" has to be set in the mi::neuraylib::IMdl execution context in order to enable support for MDL 1.5, which is needed for MDLE files.
  • The functions { mi::neuraylib::IMaterial instance::is default() and { mi::neuraylib::IFunction call::is default() have been added.
  • The standalone tool mdlm has been extended with MDLE specific commands.
  • The class mi::neuraylib::IBaker has been extended to allow baking of constants of type mi::IBoolean.

MDL Distiller and Baker

  • A new distilling target transmissive pbr has been added.

MDL SDK examples

  • A new example example mdle has been added to illustrate the use of MDLE files.
  • The example example df cuda has been adapted to allow loading and rendering of MDLE files.
  • A new example example generate mdl identifier has been added to illustrate how to generate a valid MDL identifier, e.g., a module name.
  • The example example distilling has been extended to support the transmissive pbr distilling target.
  • The example mdl browser has been extended to display MDL keywords in the info tooltip as well as above the description in list view mode.

Fixed Bugs

  • A bug when translating light profile and bsdf measurement constructors from the MDL SDK API representation to the MDL Core representation has been fixed.

MDL Compiler and Backends

  • The hash calculation for struct field access DAG calls for the PTX code cache has been fixed.
  • The handling of array parameters in class compilation has been fixed.
  • A crash when trying to fold an invalid array constructor has been fixed.
  • Missing parentheses when printing operators with the same precedence as MDL or GLSL has been fixed ("a/(b*c)" was printed as "a/b*c").
  • A potential crash when generating code for distribution functions has been fixed.
  • The generated GLSL code for type casts has been fixed to correctly generate (T)(a+b) instead of (T)a + b.
  • An issue with MDL distilling in the case of common subexpressions has been fixed.
  • Wrong error messages "varying call from uniform function" have been fixed, which were generated by the MDL compiler under rare circumstances for struct declarations.
  • Wrong error messages "function preset’s return type must be ’uniform T’ not ’T’" has been fixed, which were generated by the MDL compiler for function variants if the original function always returns a uniform result but its return type was not declared as uniform T.
  • A discrepancy between code execution on CPU and GPU for constant folding of sqrt(c) (c < 0) has been fixed. Now NaN is computed for both.