Workflow Overview


Substance Designer is a Node-Based editor. That means almost every type of project or resource will involve placing nodes (building blocks) and connecting them to create a chain of operations (a Graph).This page explains the concept of Node-Based workflows, and provides a summary of the 3 main types of Graph you can author in Substance Designer.

Node-Based workflow

Working in Substance Designer is different from other 2D image editing software such as Photoshop. Instead of performing an action manually (like adjusting saturation by going to a menu option and changing a slider), you construct the logical steps of editing or creating your image. This happens by building a network of little building blocks, called "Nodes". Image data travels from left to right through the building blocks, connected by Links that determine the path of the information. Every Node, if connected, will contribute to the final results.

The major advantage is that your workflow becomes non-linear. Unlike actions performed manually that go into a history stack, you can always swap out or modify a Node at any point in time. If you decide that your very first Contrast adjustment, affecting the result of your image all the way to the end, was too much, then you can still go back and adjust it or even cut it out completely, without losing all the work you performed afterwards.



Sub-Graph Workflow

Sub-Graphing is a key process in Substance Designer. It allows you to build your own nodes by taking any size or type of Graph and packaging it up as new Node building block. These types of Nodes are called "Graph Instances" This allows you to be much more efficient, save time and share work with others. You developed a great technique for edge wear for example? Sub-Graph it and re-use it yourself, share it with the community, or your team!

For more information about Sub-Graphs, there is a dedicated section about them in the documentation.



Custom Parameters

Any Node in your chain of operations will have some form of control: buttons, sliders, settings for you to tweak, influencing the final result. If you create a Sub-Graph, or want to export your Substance File to another application, you can build your own "control panel" for your files, allowing anybody using the Graph to tweak and modify it with a fully unique control panel, exposing endless possiblities.

The method for exposing Parameters differs between Graph Types. The general concept is explained on this page, but for Substance Graphs, Functions and MDL Graphs there are dedicated pages.


Graph Types

Below you can find a summary of the three types of Graph you can edit in Substance Designer, as well as a link to the relevant section of the documentation.

Substance Graphs

Workflow Overview are the main type of Graph created in Substance Designer. Their purpose is to generate and process 2D image data that is not constrained to a set resolution, color or shape. They are meant as extremely versatile image-processing and generation tools, not just static, pre-set results.

The results can be in the form of a simple black-and-white pattern, a filter that only runs on other images and doesn't generate content by itself, or even a full-fledged procedural material with multiple channels.

Substance Graphs are the most widely supported type of Graph, and can be exported and used in a plethora of different workflows.

Examples

Below you can find some typical examples of common usecases.


 Click here to expand...

A simple mask shape for a decal is created by generating a piece of text and a disc shape, extracting the edge from the disc and the finally blending them together before setting them as final output.

The Text with the number, or the thickness of the edge can be exposed externally to make this a more dynamic graph.

A filter graph takes a normalmap as input (with a custom preview), converts it to curvature and then adjusts the contrast to create a mask of Convex edges as final output.

The contrast values set in the Histogram can be exposed, making this a simple but useful filter in cimbination with the dynamic Input slot.

A more complicated graph blends two Base Materials. One Base material is kept simple, the other uses some custom inputs to add interest. A Mask is used to determine which of the two materials appear where before being set as final outputs.

This example makes use of Link Creation Modes to simplify using multiple links.

Functions

Functions process single values (integers, floats, vectors) instead of image data (whole sets of pixels). Functions are also Graphs with node networks, but the Nodes used and the interface is different from regular Substance Graphs. The workflow is completely based on mathematical operations and does not show any image preview thumbnails, making it a much more advanced way to work with Substance Designer.

Functions can be used in many different contexts, the main ones being to modify the behaviour of an exposed Parameter, to author the behaviour of Pixel Processors or FX-Maps and to to use Values in a Graph.

Examples

Below are some examples from common usecases for Functions.

 Click here to expand...

A simple function in the context of an exposed parameter. It gets an input float value called "Intensity" that is determined to go from 0 to 1 (a range easy to understand) and remaps it to a set range of 0.1 - 0.8. That means if the user sets Intensity ot 0, internally 0.1 will be used, if the Ui is set to 1, 0.8 wil be used, and any value in between will be interpolated linearly.

This function could also be written as lerp(0.1, 0.8, Intensity) in a pseudocode similar to HLSL or GLSL.

This advanced Function shows the inner workings of a Pixel Processor meant for adjusting the Hue of a color map input based on the intensity of a second grayscale mask input.

It samples both inputs with the system "$pos" variable, then strips the Alpha, converts the color value to HSL and modifies the Hue component by multiplying it with the sampled grayscale value. Afterwards it re-assembles the vector, converts the HSL back to RGB and adds the Alpha back in for the final output.

in pseudo-code this would be a much more complicated function that would not fit on a single line.

MDL (Material Definition language)

Created by Nvidia, MDL stands for Material Definition Language. It is a language is meant to describe the property of a physically based material, and how it is supposed to behave. The goal of MDL is to provide a portable method of defining materials, ensuring they look the same across different rendering engines and applications. MDL is not a shading language like HLSL or GLSL, as it does not define the behavior of the light itself. Light and material are generally extremely dependent to each other, which can affect the portability to another platform. More information about Material Definition language can be found on the Nvidia website.

MDL Graphs were introduced in Substance Designer 5.5, making it the first and only nodal MDL authoring application. Substance Designer allows rendering and material artists to explore new possiblities, improve their iRay renders and turns Substance Desginer into a material hub application for different rendering targets.

Examples

Below some examples of MDL applications can be seen.

 Click here to expand...

This metallic clearcoat material is impossible to define only through textures. It features two separate specular highlights that behave completely different: one rougher metallic coat with speckles, and one very smooth clear topcoat. Before MDL this would have to be explicitely set up in your target rendering application, but now it can be defined and exported from Substance Designer. There is a tutorial on Academy on creating this effect yourself.

In this example showing a Malachite with Chrysocola rock, MDL was used to define the very specific colored, anisotropic highlights on the cut tops of the rock. This example is completely explained on Substance Academy.