Breakdown: Modular Swords in Substance Designer

Breakdown: Modular Swords in Substance Designer

Tomáš Svojša shared a breakdown of his Modular Sword Builder made in Substance Designer.

Tomáš Svojša shared a breakdown of his Modular Sword Builder made in Substance Designer.


My name is Tomáš Svojša. I am an environment artist at Warhorse Studios currently working on project Kingdom Come: Deliverance in a beautiful city of Prague, Czech Republic.

Since work in Substance Designer has become a big part of my personal and professional projects, I’m still trying to increase my skills and efficiency in this amazing software solution. Projects like this, where you step out from routine procedures, are great for relaxing from usual work in Designer. It also helps me to explore new nodes and techniques in a fun way.

Project Idea

The idea of the project came to me when I was watching Hobbit movie and was amazed at beautiful weapon props from Weta Workshop in the movie. I turned on Substance Designer on my second screen and started building some cool dagger I found on Pinterest, then I moved to saber and realized it would be cool to create something more robust. After a few long nights, I ended up with more than a hundred possible combinations of sword elements with modification possibilities, switchable materials, and other cool features.

Test samples


The project itself is composed of sword parts, materials, and a few utilities. Each sword part has its own subgraph with height map and material ID data. All components are merged together in the last graph. Preview could be rendered with Substance Player from SBSAR file or with Marmoset Toolbag in the case of exported textures. I used a simple tessellated plane with Specular-Glossiness shader.


Here is sneak into the crossguard graph, one of four graphs that are merged into the final sword.

Each crossguard usually starts with Shape node using square. It’s bent, blurred and edited with Curve node to achieve a round edge effect, or blended with different gradients to reach the required shape and profile. Some of the nodes has exposed parameters for various effects like bend intensity, amount of scratches, engraving opacity etc. Final Height maps are plugged into Multi Switch which is also exposed in order to allow switching between crossguard types later. The output of Multi Switch is modified with Slope Blur node where edges and shape could be a bit distorted if we want to. Then Opacity mask is created with the help of Levels node. In the green frame, there are two colors (grey for Iron and orange for Brass) plugged into Switch thereby we can later select the material of crossguard through exposed Switch parameter.

Same principles go for other graphs. For example, the pommels graph below:

  • Base nodes like Shapes and Gradients are prepared
  • Building shape and profile of cross-guards (Height map output expected)
  • Expose parameters for customization
  • Height maps from each pommel type are plugged into Multi Switch node
  • Output of Multi Switch (Height map) is used for the creation of opacity mask after editing with Levels node
  • Output of Multi Switch is blended with scratches (intensity exposed)
  • ID map is cropped by opacity mask
  • Everything is plugged into the Base Material node
  • Outputs are created

The final graph where all the part are merged into final outputs:

  • In the first column, you can see the parts of the sword sorted by position. Pommels on the top, grips, cross-guards and blades bellow
  • Each previously exposed parameter needs to be exposed again
  • Visible If is set for each parameter
  • Outputs of sword elements are plugged into Material Transform nodes where final position and scale of elements is set
  • Then everything is merged with help of Height Blend nodes
  • The Normal map is generated from the Height map
  • Proper ID colors are picked for each material from the Diffuse map
  • Everything is connected to the Base Material node
  • Outputs are created and ready to be previewed in 3D view

Below is the list of exposed parameters. Many of them are with specified Visible If feature which allows us to hide parameter whenever it is not necessary to see it.

Detail with ”Visible If’” set in. This one will set this parameter visible only if the third crossguard in input_selection_guard parameter is selected.

Here is a preview from Substance Player where you can see hiding and unhiding parameters depending on the currently selected elements (click the image).

You can get SBSAR for Substance Player for free or full SBS on my Gumroad if you are interested.

If you found this article interesting, below we are listing a couple of related Unity Store Assets that may be useful for you.

Tomáš Svojša, Environment Artist at Warhorse Studios

Interview conducted by Kirill Tokarev

Join discussion

Comments 1

  • Imarhiagbe Jeffry

    you made a sword in SD,.... wtf!!


    Imarhiagbe Jeffry

    ·10 months ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more