Substance Graph Key Concepts
Three concepts are very important in Substance 3D graphs:
Publishing a Graph or creating a Sub-Graph are two very similar, abstract concepts. It means that any graph or network of nodes can be "packaged" together and turned into a re-useable, standalone resource. Creating Sub-graphs is mostly done inside the application to make certain content re-useable in an efficient, smart workflow, as this avoids duplicating a set of nodes over and over. Publishing involves an additional step to export to SBSAR format, making your Node-network Graph useable outside of the application, such as when you create a Material for Unreal Engine.
Inputs, Outputs and Exposed Parameters are extremely important for this concept, as they are the only ways to still interact with the Graph once it is used as a Sub-Graph or as a Published Archive. The reasons are the following:
- No outputs would mean your Graph generates nothing, no data at all.
- No exposed Parameters means your Graph can not be customized in any way. You would not be able to set things such as the intensity of an effect, the opacity of an image being blended, the color of a specific area, etc...
- No Inputs means that in some cases, you wouldn't be able to customize a Graph's result with your own image data, such as baked mesh maps to generate effects from, an input image to perform a blur on, or a custom mask to isolate certain areas of an image.
Inputs & Outputs
An Output is a Node that generates a single 2D result. It's an endpoint, a terminus for your graph, a finished result. Only data connected to an output can be exported outside of Designer, or even used in other Graphs.
Here are a few things you should know about Outputs:
- You can have as many outputs as you want, but you must have at least one output.
- An output can be any resolution up to 8192px wide or tall, it can be color or grayscale and can be exported to any filetype supported.
- Outputs can and should be named uniquely to identify them, it helps when exporting.
- Every connector on the right side of any Node is actually an Output (see "Sub-Graphs for more info)
An Input is similar to an Output, it's an empty, open slot for you or another user to connect your own data to. It allows for the creation of graph that in external, user-defined image data, such as a Filter that modifies an input image (a Blur, or a Contrast adjustment for example).
Here are a few things you should know about Inputs:
- Inputs are completely optional, you should only add them if needed. There is no minimum or maximum amount.
- Inputs have a set resolution (linked to the Graph generally) that you define, as well as if they are grayscale or color. Anything connected to it will be converted to match this.
- Inputs can be bitmap files from your harddrive, other Graphs, Layers from Painter or Alchemist, etc..
- Every connector on the left side of any Node is an Input (see "Sub-Graphs for more info)
Exposing parameters is a concept that can go very deep, but it can be summarized as picking certain properties of nodes in your graph, and creating a dedicated UI control element for them, that is easily available once the Graph is used as a Sub-Graph or if it is Published as an Archive. Because you can no longer quickly or easily select Nodes and tweak their properties, the goal is to create another primary control panel that groups any and all properties relevant for this specific graph.
here are some things you should know about Exposed Parameters:
- Exposed Parameters move a control from the Node, to the Graph, essentially up a level in the hierarchy.
- Exposed Parameters can thus not be changed on the node anymore, only on the Graph.
- Exposed Parameters can be fully customized with names, labels, values, UI editor type and even be hidden and shown for certain conditions.
Exposing Parameters is an abstract and difficult concept for beginners, there is more dedicated documentation on this topic, but it is recommended to fully familiarize yourself with other basic aspects of the software before diving into Exposing Parameters.