Substance Designer

Substance Designer

Portals and Frame Improvements

  • Senior Staff Product Designer
  • Adobe (Substance 3D)
  • 6 months
  • 2023ReleasesPortals in v13.0, June 2023
    Frames in v13.1, December 2023
  • Desktop
  • C++ and Qt
What

PortalsTo tidy up complicated graphs

Frame ImprovementsTo organize graphs

Why
Texture artists in games and film build materials as node graphs. Past a few dozen nodes, graphs become a tangled mess of links.
How
I ran workshops with the team, then made prototypes, UX specs, and stress tests for engineering to build from.
Result

PortalsShipped in 13.0, June 2023

Frame ImprovementsShipped in 13.1, December 2023

Both still in the product

Problem

Graphs grow fast. A few dozen nodes in, good luck finding your way.

Substance Designer is the node-based tool behind PBR (Physically Based Rendering) materials for games, film, and products. Artists link patterns, filters, and noises into a graph. The graph outputs every texture map, so editing one node updates them all.

A complex watch face crafted in Substance Designer

A very large Substance Designer graph: hundreds of nodes with long links crossing the whole canvas

The node graph behind the watch. (80.lv (opens in a new tab))

Challenges

How do you keep a big graph readable without forcing users to continually tidy up?

Spaghetti graphs!

Every connection is a link drawn between nodes. As graphs become larger and more complex, if not managed carefully, the graph can begin to look like a plate of spaghetti.

Hidden structure

Artists build a graph in stages, from base shapes to detail to color, but the graph doesn’t automatically show those stages. Anyone opening it later, including its author, has to work them out again.

Frames came last

Frames were the tool for showing structure, but they didn’t resize with their contents and held one line of plain text, so artists added them once a graph was finished, if at all.

Shipped June 2023 · Version 13.0

Portals

Hide the connections between nodes, like going from networking cables to wifi, while still making it easy to reveal connections.

From Dot Node to Portal Node

Portals use Dot nodes to pass data from a named transmitter node to a receiver node, hiding the connection from the graph by default and clearing clutter from a graph.

Hover or select a Portal node to reveal its connections.

An early prototype of Portal nodes

Height→ Height→ Height→ Height→ Height Perlin NoiseHeightShapeBlur HQWarpBlendGradient MapEdge DetectNormalBase ColorCurvature
One Height map, four distant nodes: links cross the graph, portals don’t. A selected portal shows its links.

Design Decisions

Take the line away. Keep the trail.

Built on the Dot node

A portal is a Dot node with a name, not a new kind of node. Artists already drop dots to tidy their links, so portals start from a habit they have.

Connect by name

A receiver picks its transmitter by name from a list, so two nodes at opposite ends of a graph connect without a link drawn between them.

Hidden but not lost

With no line to follow, it’s easy to lose track of where a value comes from. So every receiver can show its link on demand, and its properties name the transmitter it reads from.

Portal Prototypes

The prototypes worked through how a portal shows itself in the graph:

  • Pins that can be shown or hidden
  • A link you can reveal when you need to trace one
  • Properties that read the same way from the graph or the panel

Portal UX Specification

Annotated spec sheets for the portal behaviors: states, naming, and feedback for transmitters and receivers, so engineering could handle the edge cases consistently.

Spec sheet 01, portal labels: placement rules for the portal name and properties icon on a Dot node
Spec sheet 02, portal properties: the Portal section of the Dot node properties panel, with six numbered callouts
Spec sheet 03, Dot node states: the Portal section for each Dot node type, input portal empty and set
Spec sheet 04, quick clear: clearing the input portal link on a Dot node

What Shipped

Shipped in 13.0, June 2023, as a new option on the Dot node.

Version 13.0 release notes

Intro and tutorial

Adobe’s four-minute intro to portals.

Shipped December 2023 · Version 13.1

Frame Improvements

Updating Frames to keep up with graphs as they grow.

Building on What’s There

Frames already drew a box around part of a graph, so I started there. In 13.1 frames grow as new nodes are dragged into them, shrink to what they contain, and now support formatted descriptions.

Interaction Specification

The spec mapped where a click selects, moves, or resizes a frame, and gave the redesign wider edges to grab.

Select Move Resize
Interaction Zones StateDefault StateDefault Original Frame
Frame Description: what this part of the graph does, in a few words that wrap to the width of the frame.
Redesigned Frame
Frame Description: what this part of the graph does, in a few words that wrap to the width of the frame.
Show Zones Select Select
Old and new frame designs side by side, with a mirrored cursor to show how interactions differ. Rebuilt from the original spec sheetsCurrent frame styling above the proposed styling, in default, hover and selected statesVisual updatesThe same frames with move, resize and no-interaction zones color-codedInteraction zones.

Research

Frame Improvements Workshop

What

Series
Short Miro workshops I ran for the team
Focus
Frame improvements, from brainstorm to design review
Output
The priorities for 13.1

Who

People
Up to 21 a session
Roles
Program management, engineering, design, product, and QA
From
The Substance Designer team,
plus partners from the larger org

How

Length
45 minutes a session, kept tight
Q&A
Room for those really engaged
Adopted
By others on the team

See the whole boardThe Frames workshop board on Miro: schedule, intro, framing conversation, micro brainstorm summary, the frame improvements brainstorm and the conclusionThe workshop board on Miro

Key Feedback

“Today frames are more designed to be created when the graph is nearly finished”

Participant

“Resizing frames is annoying (small hit boxes)”

Participant

“Adding Frames is a lot of manual work”

Participant

“Accidental overlapping frames suck”

Participant

“Frames are always the same color”

Participant

“Remove manual managing, focus on creating”

Participant

Sticky notes from the Frames brainstorm, verbatim.

From Ideas to a Milestone

Our first workshop generated a long list of ideas. I hosted a follow-up workshop to review the design work that came out of the brainstorm. We then prioritized and planned the work for shipping.

High

  • Auto-expandv13.1
  • Shrink to fitv13.1
  • Hotkeysv13.1
  • Rich text descriptionsv13.1

Medium

  • Visual updatev13.1
  • Frame context bar
  • Parenting
  • Quality-of-life fixesv13.1

Backlog

  • List of frames
  • Collapse

“Very hard to implement”

The 13.1 priorities from the workshop board. “v13.1” marks what shipped in 13.1 (see Adobe’s release notes).

Design Decisions

Make frames versatile enough to add to a graph early in the process, not at the end.

Grow with the graph

Allow users to drag selected items into a frame and have it auto-expand to include the selected content.

Refined affordances

An updated look can provide some usability and legibility enhancements for frames.

One color, three states

Give users flexibility, while mitigating the chance of getting painted into a corner.

Frame Prototypes

Animated samples showed engineering how each behavior should move: selection, nesting, resizing, and labels.

How the redesigned frame behaves, end to end.
The resize hint, showing which edge a drag will take.
Selecting across frames, and inside one.
Holding Alt (Option) to pull a node out instead of stretching the frame.

Frame Design System

Users can now set their own frame colors. I set up a clear style guide and stress tests to make sure the design could handle whatever a user threw at it.

Picking a frame color by hue, saturation, and value.

Stress Test the Colors

Any color means users can paint themselves into a corner, and someone will always pick the worst one to see what happens. So I tested some of the harshest options in every state, to make sure the design system worked.

Frame Colors
DefaultFrame TitleFrame DescriptionUniform Color2048×2048 – C87.3msHoverFrame TitleFrame DescriptionUniform Color2048×2048 – C87.3msSelectedFrame TitleFrame DescriptionUniform Color2048×2048 – C87.3ms
H
0
S
0
V
0
A
0
#0066CC
  • Fillas picked
  • Border50%70%100%
  • Hover border40%100%100%
  • Selected title40%100%100%

Play the worst-case picks, or drag a slider to try your own.Rebuilt from the original color test sheetsColor test sheet 1: frames in blue, magenta and red (red at 4% alpha) and in white, gray and black at default alpha, each shown in default, hover and selected statesDefault alphaColor test sheet 2: yellow, magenta and cyan frames at 40% alpha beside the same colors at 100% alpha, in default, hover and selected states40% and 100% alphaColor test sheet 3: blue, magenta and red frames at 0% alpha beside the same colors at 100% alpha, in default, hover and selected statesColor at 0% and 100%Color test sheet 4: white, gray and black frames at 0% alpha beside the same colors at 100% alpha, in default, hover and selected statesGrays at 0% and 100%.

Frame Description Formats

We wanted to provide a way for frames to include rich-text formatting (bold, italic, underline, lists, etc.). Thankfully the Qt UI framework provides multiple options.

A frame description authored as plain text
The same description authored in Markdown
The same description authored in HTML
The same description authored in an inline WYSIWYG editor

What Shipped

Version 13.1 shipped in December 2023 with auto-expand, fit to content, HTML descriptions, new states, and wider resize zones.

Version 13.1 release notes

Samples from the 13.1 release notes.

Outcomes

Both features shipped in back-to-back releases, and both are still in Substance Designer three years later.

By the Numbers

22,000+

views of Adobe’s portal tutorial, released with 13.0, with 541 likes, as of October 2026

9

new frame features in the 13.1 release notes, from auto-expand and fit to content to new interaction zones and states

All 4

high-priority ideas from the 13.1 priority board shipped: auto-expand, shrink to fit, hotkeys, and rich text descriptions, plus 2 of the 4 medium ones

How It Landed

Artists had been asking for portals before I started, and said so when they arrived.

“Feature got added in latest version.”

A user, closing the Reroute Nodes request on Adobe’s ideas forum

“Has been sorely needed for years.”

A comment on Adobe’s portal tutorial

The Two Releases

13.0June 2023

Portals

  • Portal option on the Dot node: name a transmitter, then pick it as any receiver’s input
  • Hidden links: distant nodes connect without a link across the graph
  • Quick access to key nodes from anywhere in the graph

“No more spaghetti-style node graphs!”

Adobe, June 2023 release post
13.1December 2023

Frame Improvements

  • Auto-expand: hold Shift while moving a node to grow its frame
  • Fit a frame’s size to its content
  • HTML-formatted descriptions, for comments too
  • New resize zones and more tolerant belonging rules
  • A refreshed look

“quality-of-life improvements to the node graph, mainly regarding frames”

Adobe, 13.1 release notes

Substance is used in “the vast majority of AAA games,” per Adobe in 2019.

The Substance team on stage in tuxedos at the 2023 Scientific and Technical Awards, one speaking at the podium, between two Oscar statues.

2023 Scientific and Technical Awards

An Academy Award for the Team

In February 2023, the year I joined, the Academy gave Substance Designer a Technical Achievement Award for its procedural workflow.

The honor belongs to the team who built it over a decade. I was proud to be there the year it came.

Still from the Academy’s ceremony video

Appendix

Yes, and…

A collection of additional activities, or cool experiments that didn’t make the cut.

Same Graph, Framed Many Ways

As a warm-up for the Frame Improvements workshop, everyone was given a chance to frame/comment on some sample graphs. No two graphs looked the same, which was a helpful gateway into the discussion that followed.

The Warm-Up

For every workshop, I’d give a few minutes for people to filter in and get their tech set up. While that was happening, I’d often have an activity for participants to engage with. Here’s some sticky-note pixel art from one session.

A Miro board of sticky notes recolored into pixel art: a cartoon character, a pair of sunglasses with the words deal with it, the Substance star with SUB STA NCE and DE SIG NER, a pink glyph and a smiley face.

Experiments

Exploration 1

Portals with Previews

Showing previews of nodes in the dropdowns fell out of scope, but would have been handy.

Exploration 2

Testing Node Types in Context

The early design focused on a new Node type that showed a preview of what was transmitted/received, which would read better when zoomed out, but we couldn’t get it to work in scope for the milestone.

Exploration 3

Multi-Input Properties

This design allowed Portal nodes to be treated like a generic portal that values could be passed into and picked up elsewhere.

Exploration 4

Multi-Input Preview

This showed how a user could use the same preview of a node to see what the different data being passed through was.

Cool idea, but too complex for what we were aiming for.

Exploration 5

Color Portal

Showing how we could pack colors into a multi-Portal node and use it as a color library elsewhere in a graph.

A Portal node design that carries a color value

More Work