- Substance 3D home
- User guide
- Glossary
- Getting started
- Interface
- Interface
- Customizing your workspace
- Home screen
- Main toolbar
- Preferences
- Explorer
- Graph view
- Library
- Properties
- 2D view
- 3D view
- Dependency manager
- Resources
- Resources
- Importing, linking and new resources
- Bitmap resource
- Vector graphics (SVG) resource
- 3D scene resource
- AxF (Appearance eXchange Format)
- Font resource
- Warnings from dependencies
- Substance graphs
- Substance graphs
- Substance graph key concepts
- Creating a Substance graph
- Exposing a parameter
- Graph parameters
- Inheritance in Substance graphs
- Output size
- Values in Substance graphs
- Publishing Substance 3D asset files (SBSAR)
- Exporting bitmaps
- Exporting PSD files
- Sample Substance graphs
- Warnings in Substance graphs
- Nodes reference for Substance graphs
- Nodes reference for Substance graphs
- Atomic nodes
- Node library
- Node library
- Texture generators
- Texture generators
- Noises
- Noises
- 3D Perlin noise
- 3D Perlin noise fractal
- 3D Ridged noise fractal
- 3D Simplex noise
- 3D Voronoi
- 3D Voronoi fractal
- 3D Worley noise
- Anisotropic noise
- Blue noise fast
- BnW spots 1
- BnW spots 2
- BnW spots 3
- Cells 1
- Cells 2
- Cells 3
- Cells 4
- Clouds 1
- Clouds 2
- Clouds 3
- Creased
- Crystal 1
- Crystal 2
- Directional noise 1
- Directional noise 2
- Directional noise 3
- Directional noise 4
- Directional scratches
- Dirt 1
- Dirt 2
- Dirt 3
- Dirt 4
- Dirt 5
- Dirt gradient
- Fluid
- Fractal sum 1
- Fractal sum 2
- Fractal sum 3
- Fractal sum 4
- Fractal sum base
- Fur 1
- Fur 2
- Fur 3
- Gaussian noise
- Gaussian spots 1
- Gaussian spots 2
- Grunge concrete
- Grunge Damas
- Grunge galvanic large
- Grunge galvanic small
- Grunge leaks
- Grunge leaky paint
- Grunge map 001
- Grunge map 002
- Grunge map 003
- Grunge map 004
- Grunge map 005
- Grunge map 006
- Grunge map 007
- Grunge map 008
- Grunge map 009
- Grunge map 010
- Grunge map 011
- Grunge map 012
- Grunge map 013
- Grunge map 014
- Grunge map 015
- Grunge rough dirty
- Grunge rust fine
- Grunge scratches dirty
- Grunge scratches fine
- Grunge scratches rough
- Grunge shavings
- Grunge splashes dusty
- Grunge spots
- Grunge spots dirty
- Liquid
- Messy fibers 1
- Messy fibers 2
- Messy fibers 3
- Microscope view
- Moisture noise
- Perlin noise
- Plasma
- Caustics
- Voronoi
- Voronoi fractal
- Waveform 1
- White noise
- White noise fast
- Patterns
- Patterns
- 3D linear gradient
- 3D volume mask
- Alveolus
- Arc pavement
- Brick 1
- Brick 2
- Brick generator
- Checker 1
- Cube 3D
- Cube 3D GBuffers
- Fibers 1
- Fibers 2
- Gaussian 1
- Gaussian 2
- Gradient axial
- Gradient axial reflected
- Gradient circular
- Gradient linear 1
- Gradient linear 2
- Gradient linear 3
- Gradient radial
- Height extrude
- Mesh 1
- Mesh 2
- Panorama shape
- Polygon 1
- Polygon 2
- Scratches generator
- Shape
- Shape extrude
- Shape mapper
- Shape splatter
- Shape splatter blend
- Shape splatter data extract
- Shape splatter to mask
- Splatter
- Splatter circular
- Star
- Starburst
- Stripes
- Tile generator
- Tile random
- Tile random 2
- Tile sampler
- Triangle grid
- Weave 1
- Weave 2
- Weave generator
- Filters
- Filters
- Adjustments
- Adjustments
- Apply color palette
- Auto levels
- Channel mixer
- Chrominance extract
- Clamp
- Color match
- Color to mask
- Contrast/Luminosity
- Convert to linear
- Convert to sRGB
- Create color palette (16)
- Grayscale conversion advanced
- Hald CLUT
- HDR range viewer
- Height map frequencies mapper
- Highpass
- Histogram compute
- Histogram equalize
- Histogram range
- Histogram render
- Histogram scan
- Non-uniform histogram scan
- Histogram select
- Histogram shift
- ID to mask grayscale
- Invert
- Lighting cancel high frequencies
- Lighting cancel low frequencies
- Luminance highpass
- Min max
- Modify color palette
- Pow
- Quantize color (Simple)
- Quantize color
- Quantize grayscale
- Replace color
- Replace color range
- Threshold
- View color palette
- Blending
- Blurs
- Channels
- Effects
- Effects
- 3D texture position
- 3D texture SDF
- 3D texture surface render
- 3D texture volume render
- Ambient occlusion (HBAO)
- Ambient occlusion (RTAO)
- Anisotropic Kuwahara color
- Anisotropic Kuwahara grayscale
- Bevel
- Bevel smooth
- Cross section
- Curvature
- Curvature smooth
- Curvature sobel
- Diffusion color
- Diffusion grayscale
- Diffusion UV
- Directional distance
- Edge detect
- Emboss with gloss
- Extend shape
- Flood fill
- Flood fill mapper
- Flood fill to Bbox size
- Flood Fill to gradient
- Flood Fill to grayscale/color
- Flood Fill to index
- Flood Fill to position
- Flood Fill to random color
- Flood Fill to random grayscale
- FXAA
- Glow
- Mosaic
- Multi directional warp
- Non-uniform directional warp
- Reaction diffusion fast
- RT irradiance
- RT shadow
- Shadows
- Shape drop shadow
- Shape glow
- Shape stroke
- Summed area table
- Swirl
- Uber emboss
- Vector morph
- Vector warp
- Normal map
- Tiling
- Transforms
- Material filters
- Material filters
- 1-click
- Effects (Material)
- Transforms (Material)
- Blending (Material)
- PBR utilities
- Scan processing
- Mesh-based generators
- Mesh-based generators
- Mask generators
- Weathering
- Utilities (Mesh-based generators)
- Spline & Path tools
- Spline & Path tools
- Working with Path & Spline tools
- Path tools
- Spline tools
- Spline tools
- Paths to Spline
- Point list
- Scatter on Spline color
- Scatter on Spline grayscale
- Spline 2D transform
- Spline (Cubic)
- Spline (Poly quadratic)
- Spline append
- Spline bridge (2 Splines)
- Spline bridge (List)
- Spline bridge mapper color
- Spline bridge mapper grayscale
- Spline circle
- Spline fill
- Spline flow mapper
- Spline mapper color
- Spline mapper grayscale
- Spline merge list
- Spline render
- Spline sample height
- Spline sample thickness
- Spline select
- Spline warp
- UV mapper color
- UV mapper grayscale
- 3D view (Library)
- 3D view (Library)
- HDRI tools
- Node library
- Substance function graphs
- Substance function graphs
- What is a Substance function graph?
- Create and edit a Substance function graph
- The Substance function graph
- Variables
- FX-maps
- FX-Maps
- How it works
- The Iterate node
- The Quadrant node
- Using Substance function graphs in FX-Maps
- Warnings in Substance function graphs
- Sample Substance function graphs
- Nodes reference for Substance function graphs
- MDL graphs
- Bakers
- Best practices
- Pipeline and project configuration
- Color management
- Package metadata
- Scripting
- Scripting
- Plugin basics
- Plugin search paths
- Plugins packages
- Plugin manager
- Python editor
- Accessing graphs and selections
- Nodes and properties
- Undo and redo
- Application callbacks
- Creating user interface elements
- Adding actions to the Explorer toolbar
- Using color management
- Using spot colors
- Logging
- Using threads
- Debugging plugins using Visual Studio Code
- Porting previous plugins
- Packaging plugins
- Scripting API reference
- Technical issues
- Release notes
Exporting MDL content
This page describes the export processes related to MDL graphs and materials in Substance 3D Designer.
Overview
Once an MDL material is authored in Designer, it needs to be exported into a format which can carry the material's definition and be read by renderers which support MDL. MDL uses proprietary formats to carry material definitions, called MDL modules, written and packaged in different formats which can all be exported from within Designer.
All of these formats can be opened directly with a text editor – sometimes after unpacking them with an archive manager – to inspect the material definition they hold.
MDL module (*.mdl)
This is the fundamental exchange file format for material definitions. An MDL module defines the following:
- the material's characteristics and behaviour
- its exposed parameters and default values
- its annotations (i.e., metadata): author, tags, categories, ...
Exporting an MDL module is performed at the package level. To export an MDL module for a given package, click the Export MDL Module button in the Explorer or select that same option in the package's contextual menu. Select a target location and name for the exported MDL module, and the Export Report dialog is displayed with the list of messages logged during the export process.
The exported module will contain the definitions of all the MDL materials defined by an MDL graph in the package.
Learn more about MDL modules in sections 4 and 15 of NVIDIA's MDL Specification.
Warnings following this template: x appears to be invalid whereas it was expected to be an mdl::call
are caused by the way MDL materials are processed in MDL graphs, and are safe to ignore.
The "Export MDL Module" pathways in the Explorer, and the resulting Export Report dialog
MDL preset (*.mdl)
An MDL module preset is largely identical to the module it is based on, with the only difference being it carries a different set of default values – learn more here.
A preset for an MDL material assigned to a scene material my_material
may be exported from the following locations:
- The Explorer panel, by clicking RMB on the MDL graph resource and selecting the Export Preset... option in the contextual menu
- The 3D View panel, using the Materials > my_material > Export preset... menu option
The menu option opens the Export MDL Material Preset dialog, which offers the following options:
- Directory: The target location the MDL module is exported to
- MDL File Name: The name of the MDL module
- Embed Imported MDL Modules: If the MDL module relies on imported modules – i.e., has any module dependencies, checking this option results in the module dependencies to be embedded into the exported MDL module, making it effectively self-sufficient at the cost of file size and dynamic inheritance
The exported preset will use the material's parameters' current values in the 3D View as the new default values. These values may be modified using the Materials > my_material > Edit option, which will display the material's exposed parameters in the Properties panel.
my_material
in this example.
The "Export preset" pathway in the 3D View, and the resulting Export MDL Material Preset dialog
MDL module archive (*.mdr)
An MDL module archive combines MDL modules – see above – with resources such as textures and readme files into a single transportable file.
Exporting an MDL module archive is performed at the package level. To export an MDL module archive for a given package, click the Export MDL Module Archive button in the Explorer or select that same option in the package's contextual menu. Select a target location and name for the exported MDL module archive, and the Export Report dialog is displayed with the list of messages logged during the export process.
The exported module archive will contain MDL module holding the definitions of all the MDL materials defined by an MDL graph in the package. If a Substance graph is instanced into an MDL graph and connected to a stream going to the Root node, the textures it outputs are saved into the archive.
In addition to these items, the archive includes a MANIFEST file which describes the following metadata for the MDL module archive:
mdl
: the version of MDL used to export the module archive – e.g., "1.5"version
: the version of the module archive – e.g., "1.0.0"module
: the name of the module archive – e.g., "::pbr_metallic_roughness_basic"exports.material
: the name of the materials defined in the module archive – e.g., "::pbr_metallic_roughness_basic::MDL_graph"
The "Export MDL Module Archive" pathways in the Explorer, and the resulting Export Report dialog
MDL encapsulated module (*.mdle)
MDL graphs with exposed parameters can be exported as encapsulated MDL materials. Encapsulation wraps data into a dedicated class so that data cannot be accessed directly.
For instance, while you are still able to modify the values of exposed parameters to control a material's behaviour, the definition of these parameters is not available in an encapsulated MDL module.
Exporting an encapsulated MDL module is performed in the Explorer at the MDL graph level, by selecting the Export as .mdle option in an MDL graph's contextual menu. Select a target location and name for the exported MDL encapsulated module, and the Export Report dialog is displayed with the list of messages logged during the export process.
Only the material definition for the selected MDL graph will be included in the exported encapsulated MDL module.
The "Export as mdle" pathway in the Explorer, and the resulting Export Report dialog