Values in Substance 3D graphs

Since the Introduction of the Substance 3D Engine v7 in version 2019.1.0, it is now possible to process values in the compositing graph, and not just in functions. Value data is the same data used in Functions ( Integers, Floats and Booleans among others), making it distinctly different from Color or Grayscale image data, which represents pixel values for an entire image. Specifically, when mentioning Values data, this means Integer 1, Integer 2, Integer 3 and Integer 4, Float 1, Float 2, Float 3 and Float 4 and Boolean. Each has a distinct color coding, and are mostly not interchanged with each other.

There are a few usecases for this, such as:

  • Returning and processing non-image data such as single value material properties or extra metadata. For example the IOR value of a material.
  • Optimizing graph calculations that do not need to be calculated per pixel (an alternative to the Pixel Processor). For example a random solid color.
  • Linking properties of one node to another by processing image data into values. For example the Minimum and Maximum values for an image to adjust Levels with.

New Value Nodes and Inputs

Two new Atomic Nodes work with Values:

The Value Processor takes Any number of Grayscale or Color Inputs and allows you to return a single Value from calculations based on these inputs.
The Value Input allows you to create an input slot on sub-graphs that is explicitely defined as a Value.

Additionally, other nodes deal with them in a specific way:

The Output Node automatically adjusts to become a Value Output if you plug a Value connection into it, just like it did before with Grayscale and Color.

There is a new tab on every single node (Atomic and Library/Instance) that allows you to define Value inputs.

Working with Values

Making use of Values is slightly different from regular Compositing Graph work:

Value connections can only be made from a Value Processor, from a Value Input, or from a Sub-Graph. That actually means that a Value Processor is the only way to create a Value connection from scratch, there is no "Static Value" node or anything similar. Instead, Create a Value Processor, place a static Value and set it as output to achieve the same result.

Value Processor can only return a single Value, if you want to return multiple Values, or sets or Groups of Values, you will have to create a Sub-Graph.

To highlight where Values are exposed or in use, any Node that has Value Inputs, or Value Outputs, is highlighted with a thick yellow border: