Lessons Learned in Substance Designer (Part 1)


This post will be more of a tutorial within a tutorial. I plan to make this a series as I share the things I learn when while following a tutorial. I have a good knowledge about substance designer but I followed a pluralsight tutorial to see if there was more I could learn.

Performance Is Key

The tutorial uses a tile generator node but doesn’t utilize much of the functionality. In the tile generator you can input several different bitmaps to give you better control over the process but in the tutorial it only says to use one. Although very useful I have a habit of staying away from the different tile generator nodes designer has to offer. The nodes are generally heavy on performance and my poor computer really slows down if you ask to much of it. I wanted to try to optimize the tile generator node because waste not want not.

Learning To Optimize

I made a copy of the tile generator node then renamed it to customTileGenerator because substance designer graphs that ship with the software are not editable. Next in customTileGenerator I deleted all the inputs I wasn’t going to use. I reduced the graph from 9 inputs down to 2 inputs. I changed the default parameters within customTileGenerator so anything you input will be the the pattern that will be used in the graph.

After on the Left. Before on the Right
Be Wary of Deleting Variables

Next I deleted any exposed parameters that were related with inputs that no longer existed to keep the customTileGenerator organized. But when you delete things without a care in the world problems are sure to arise. I began to see errors in the customTileGenerator’s Fx-map node. The Fx-map used the parameters I deleted to calculate values on how it should generate tiles in the graph because I need it to generate tiles.

Fx-Maps in Substance Designer
A Little TROUBLESHOOTING Is worth Performance

I’m not familiar with Substance Designer’s coding within Fx-maps. I had to tinker a bit to find a solution. All the parameters I deleted were tied to a float or integer variable. So I went through the unfamiliar code while looking for places with missing variable errors and replaced them with zeros. Many of the variables were used with other values so I figured if I multiplied by zero it would be similar to the value not being there. I chose this solution because it was the only solution I could think of without learning the coding in Fx-Maps. Then I realized I can reset parameters in the Fx-maps so I didn’t have to replace values with zeros.

Coding within Substance Designer.
Plans For the Future

Maybe in the future I will learn how coding works in substance designer but in this instance I only wanted to optimize the code.