NVIDIA MDL SDK - Get Started



Key Features and Components

  • MDL 1.9 Compatible.
  • Database view on the imported MDL package space.
  • MDL editing. Create instances of functions and materials and connect them to create new materials with new interfaces.
  • Compile materials into DAG's, including inlining, dead code elimination, and complete evaluation of uniform subgraphs, allowing renderers to inspect the material model.
  • Class and Instance compilation modes fitting different rendering requirements.
  • Backends for compilation of texturing functions as well as full materials:
    • Native x86
    • ARM
    • PTX
    • LLVM IR
    • HLSL
    • GLSL
  • Distill from the MDL source to the capabilities of the render engine.
  • C++ component-based API, and plugin architecture for extensibility.
  • SDK code examples for best practice use of the SDK.
  • For use on GPU as well as CPU.
  • Support for MDL's module system. Import and export of MDL modules including dependencies.

Requirements

Operating System

Windows 7, 8, 10, 11 (64-bit only), Linux and Mac OS

Development Environment

C++ Compiler


MDL SDK 2024.0.4

The MDL SDK API is a comprehensive C++ API for integration and customization tasks, which can be dynamically loaded and linked to visualization applications at runtime. The API allows applications to load MDL modules, analyze and understand the structure of a material so it can build a UI for material editing and render the results.


By downloading this SDK, you are confirming that you have read and agree to be bound by the SOFTWARE DEVELOPER KITS, SAMPLES AND TOOLS LICENSE AGREEMENT for use of the SDK package.


The open source version is licensed under the BSD-3 clause.

Enhancements:

  • Added “max_const_data” backend option to limit the size of global constants in the generated code
  • MDL specification updated to version 1.9.2
  • MDL 1.9: Allow material sub structs to be used inside a declarative struct and declarative functions
  • Df_native example now has a GUI for editing material parameters + more enhancements
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK

MDL SDK 2024.0.2

Windows / Linux / MAC

Enhancements:

  • MDL 1.9
    • AOV support, enhance the material model with custom fields. Syntactically materials are now declarative structs and are constructed using declarative functions
    • Improved overload resolution rules
    • Material.ior is now varying
    • Add new math::round_away_from_zero() and clarified math::round()
  • Multiple scope support for the database
  • Restrict evaluation of bsdf to certain paths (reflect, transmit, both) using “libbsdf_flags_in_bsdf_data”
  • New example: code generation using the core api
  • mi::neuraylib::IBaker supports extended uv ranges (UDIM baking in MDL Example Distilling)
  • Treat alpha channel in images as always linear
  • More options when exporting EXR
  • Performance improvements for creating compiled materials
  • Improvements with transmissive_pbr/ue4 distilling
  • MDL Arnold: Added support for Arnold SDK version 7.3.2.1
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK

-->

MDL SDK 2023.1.4

Windows / Linux / MAC

Enhancements:

  • Updated OptiX 7 example to support up to OptiX SDK 8.0.0.
  • AXF example: Added support for AxF 1.9 sheen for SVBRDF representation
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK

MDL SDK 2023.1.3

Windows / Linux / MAC

Enhancements:

  • Support exr images with luminance-chroma encoding
  • Improved argument-editor example code in the axf example
  • Fixed indeterministic generation of rmem* variables for HLSL/GLSL.
  • Fixed invalid HLSL/GLSL code generation
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK

MDL SDK 2023.1.2

Windows / Linux / MAC

Enhancements:

  • Improved buffers for denoising
  • Code generation improvements for hlsl
  • Better handling of arrays in argument blocks
  • Update AXF example to AXF 1.9
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK

MDL SDK 2023.1

Windows / Linux / MAC

Enhancements:

  • AxF Example: Updated to AXF 1.9.0.
  • Vcpkg is now the recommended way to install GLEW and GLFW
  • Multiple transaction support in the SDK database
  • Many performance improvements for material compilation
  • Improved code size and code readability for generated HLSL/GLSL
  • More python bindings and improvements to the existing python bindings
  • More auxiliary buffers for better denoising
  • Many bug fixes and improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2023.0.4

Windows / Linux / MAC

Enhancements:

  • More API functionality exposed through python
  • DXR example enhancements (updated glTF support, improved measured BRDF support, improved glue code, …)
  • Various bug fixes and improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2023.0.2

Windows / Linux / MAC

Enhancements:

  • Worker threads are now created lazily as needed
  • Various bug fixes and improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2023 (July 2023)

Windows / Linux / MAC

Enhancements:

  • This is a major release with API changes
  • MDL 1.8 support
    • Allow Unicode identifiers for package and module names
    • Add function syntax for operators
    • New “lambertian spheres” bsdf
    • Clarified and fixed thin_film implementation
    • More flexible scene_data lookups
    • Allow trailing commas
  • Supported selector string components for OpenEXR
  • Complete switch to OpenimageIO
  • Many small additions, changes and bugfixes and improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2022.1.7 (June 2023)

Windows / Linux / MAC

Enhancements:

  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2022.1 (December 2022)

Windows / Linux / MAC

Enhancements:

  • New high-level Python binding module pymdl.py.
  • New example showcasing the new Python binding
  • Improved Windows Locking (use SWRLOCK instead of CRITICAL_SECTION primitive)
  • Example DXR can now handle measured bsdf and ies light profiles
  • Example DXR improvements regarding MaterialX and glTF support
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2022.1.4 (March 2023)

Windows / Linux / MAC

Enhancements:

  • Improved bump mapping in ::base noise implementations
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2022.1 (December 2022)

Windows / Linux / MAC

Enhancements:

  • New high-level Python binding module pymdl.py.
  • New example showcasing the new Python binding
  • Improved Windows Locking (use SWRLOCK instead of CRITICAL_SECTION primitive)
  • Example DXR can now handle measured bsdf and ies light profiles
  • Example DXR improvements regarding MaterialX and glTF support
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2021.0.1 (September 2021)

Windows / Linux / MAC

Enhancements:

  • MDL1.8 preview: utf8 identifiers
  • Improved material compilation speed
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2022 (August 2022)

Windows / Linux / MAC

Enhancements:

  • New GLSL backend that is on the same functionality level as the HLSL backend, in particular, it can now compile full materials
  • Vulkan examples to illustrate the use of MDL with the GLSL backend in a Vulkan-based renderer
  • Upgrade of the internally used LLVM from version 7 to version 12
  • Permit thin-walled transmissive MDL materials to have non-identical transmissions on both sides and emit a warning and not an error in this case.
  • Various bug fixes and smaller performance improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2021.1.4 (June 2022)

Windows / Linux / MAC

Enhancements:

  • Thin_film on metals implementation now matches clarified MDLK spec
  • CUDArendering example now supports cutouts and backface
  • Native rendering example supports derivatives and cutouts
  • Various bug fixes

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2021.1.2 (April 2022)

Windows / Linux / MAC

Enhancements:

  • Added support for animated textures
  • Added support for texture selectors (channels from vdb and more)
  • Improved glTF support in Example DXR
  • Improved speed on ARM
  • Added new components to nvidia::core_definitions
  • Better resource enumeration on modules
  • Unify materials and function handling in the API
  • Libbsdf allows adaption of the normal by the renderer to improve bump mapping
  • Many improvements to essentially all examples
  • Various bug fixes

MDL SDK 2021.1.1 (March 2022)

Windows / Linux / MAC

Enhancements:

  • Added support for animated textures
  • Added support for texture selectors (channels from vdb and more)
  • Improved glTF support in Example DXR
  • Improved speed on ARM
  • Added new components to nvidia::core_definitions
  • Better resource enumeration on modules
  • Unify materials and function handling in the API
  • Libbsdf allows adaption of the normal by the renderer to improve bump mapping
  • Many improvements to essentially all examples
  • Many bug fixes

MDL SDK 2021.0.2 (October 2021)

Windows / Linux / MAC

Enhancements:

  • Example DXR now supports more glTF extensions
  • Example DXR now supports state::animation_time() and volume attenuation
  • Fixed incorrect BSDF evaluation for df::sheen_bsdf with a transmitting "multiscatter" BSDF
  • Fixed bugs with glTF support in example DXR

MDL SDK 2021.0.1 (September 2021)

Windows / Linux / MAC

Enhancements:

  • Updated nvidia::core_definitions with new functionality
  • Reduced memory usage for DDS textures with subformat BC7
  • Improved compilation times
  • Bug fix for sheen and thin_film implementations

MDL SDK 2021.0 (June 2020)

Windows / Linux / MAC

Enhancements:

  • MDL 1.7
  • Supports ARM Linux as a platform
  • Python binding for the MDL SDK
  • New interface for incremental building of new modules (demonstrated in dedicated example)
  • Unified handling of materials and functions
  • Distiller is now a plugin and the OS release can use the distilling plugin
  • Addex example for CPU rendering
  • Many performance optimisations for loading, compilation and execution
  • ….and many more bug fixes and improvements

For a complete list of changes and fixes please see the release notes shipped with the SDK

MDL SDK 2020.1.2 (December 2020)

Windows / Linux / MAC

Enhancements:

  • Option to adapt roughness for higher bounces to improve convergence
  • Improved “Example Distilling Unity”
  • Various bug fixes and code optimizations

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2020.1.1 (October 2020)

Windows / Linux / MAC

Enhancements:

  • Single init for all functions in a compilation unit reduces code size
  • Strict evaluation of ternary operators to reduce reduces code size (new default)
  • Updated MaterialX support in “Examples DXR”
  • New example: “Example Distilling Unity”

For a complete list of changes and fixes please see the release notes shipped with the SDK


MDL SDK 2020.1 (August 2020)

Windows / Linux / MAC

Enhancements:

  • additional functionality for efficient internal database inspection
  • improvements to the derivative calculation
  • added ability to apply certain code transformations to MDL modules
  • Autodesk Arnold integration example (CPU rendering)
  • improved DXR example including support for GLTF
  • improved Optix 7 example

MDL SDK 2020.0.2 (June 2020)

Windows / Linux / MAC

  • maintenance release

MDL SDK 2020.0.1 (April 2020)

Windows / Linux / MAC

Enhancements:

  • Code generation for hair bsdf added
  • Example for cuda rendering now supports hair materials
  • Runtime support for user scene data added to HLSL backend
  • Example for DXR rendering now supports user scene data (primvars)
  • Example for DXR rendering now supports UDIM textures

MDL SDK 2020.0 (March 2020)

Windows / Linux / MAC

Enhancements:

  • Code generation for hair bsdf added
  • Example for cuda rendering now supports hair materials
  • Runtime support for user scene data added to HLSL backend
  • Example for DXR rendering now supports user scene data (primvars)
  • Example for DXR rendering now supports UDIM textures

MDL SDK 2019.1.1 (June 2019)

Windows / Linux / MAC

Enhancements:

  • Support for annotations on annotation declarations
  • Configurable parameter folding in class compilation related to ternary operators
  • Performance improvements for MDLE files

MDL SDK 2019.1

Windows / Linux / MAC

Enhancements:

  • New HLSL backend including full material compilation
  • DXR rendering sample using HLSL
  • MDL 1.5
    • MDL encapsulated file (MDLE)
    • New BSDF: measured_factor
    • Localization (final)
    • New type hair_bsdf and interface for chiang_hair_bsdf

MDL SDK 2019

Windows / Linux / MAC

Enhancements:

  • New distilling target supporting anisotropy, volume, glossy transmission with refraction
  • MDL 1.5 feature preview: MDL encapsulated file format

MDL SDK 2018.1.2

Windows / Linux / MAC

Enhancements:

  • First pre-release draft of the NVIDIA Material Definition Language 1.5: Appendix E - Internationalization has been added to the documentation set.
  • New standalone tool to manage MDL archives has been added (mdlm).
  • Support for removal of MDL modules from the database has been added.
  • Support for automatic derivatives for 2D texture lookups has been added to the PTX, Native x86 and LLVM IR backends.
  • support for more distribution functions (DF) (spot EDF, measured EDF, measured BSDF) has been added to the PTX, Native x86 and LLVM IR backends.

For a complete list of changes and fixes please see the release notes shipped with the SDK



Additional Resources