NodeSet Pro

by Michel's add-ons & more in Scripts and Addons

NodeSet Pro is an add-on that greatly simplifies the process of importing sets of textures to create a node based material.

It allows you import a set of related texture maps by simply pointing to one of them, takes care of setting the color data attribute correctly, adds bump nodes and normal map nodes where needed and wires up everything to the principled shader or a shader node group you have defined, all with a few simple clicks.

Instead of importing textures like basecolor, normalmap, roughness, etc. one by one, with NodeSet Pro you will only need to select a single texture and textures with the same base name will be loaded as well. NodeSet Pro will also apply non-color data options to texture maps that need this, create normal map and bump nodes and wire everything up to a shader.

NodeSet Pro works out of the box with substance painter textures but every aspect of it can be configured in the preferences to seamlessly adapt to your workflow.

{Note that this manual is also included in the download as a PDF file}

NodeSet Pro is an add-on that greatly simplifies the process of importing sets of textures to create a node based material.

Instead of importing textures like basecolor, normalmap, roughness, etc. one by one, with NodeSet Pro you will only need to select a single texture and textures with the same base name will be loaded as well. NodeSet Pro will also apply non-color data options to texture maps that need this, create normal map and bump nodes and wire everything up to a shader.

Out of the box NodeSet Pro is configured to work with texture sets produced in the PBR Metallic Roughness workflow of Substance Painter* and connect them to Blender’s principled shader. However,  because almost every aspect of NodeSet Pro can be configured in its preferences, using texture sets from other workflows, like Specular Roughness or from other software is just as easy.

NodeSet Pro is not limited to single purpose maps like roughness, metallic or height, but it can be configured to work with textures that have different kinds of information mapped in their individual color channels.

NodeSet Pro can also work with custom node groups instead of the principled shader, allowing for one-click operation even if you use a completely different kind of shader.

Using NodeSet Pro is as simple as selecting ‘Add Texture Set’ or ‘Add Texture Set + Shader’ from the ‘Add’ menu in the node editor and then selecting a single texture from a set of textures. A simple tutorial is provided in the first part of the video:

The second part of the video highlights the versatility of the NodeSet Pro configuration options by providing a step by step walkthrough on configuring NodeSet Pro to work with custom texture maps and a custom shader.

*) NodeSet Pro can be configured to work with texture sets generated by many other software packages as well. All product names, trademarks and registered trademarks are property of their respective owners. All company, product and service names used in this manual  are for identification purposes only. Use of these names, trademarks and brands does not imply endorsement either way.


NodeSet Pro is based on my original free NodeSet add-on published in 2017 but was completely rewritten to ease maintenance. The configuration options and functionality where also greatly enhanced, notably with possibilities to work with custom, packed maps, connect to arbitrary nodegroups instead of just the principled shader, add UVMap nodes and Flip Normal nodes and more.






Initial BlenderMarket release


First time installation

Installing NodeSet for the first time is simple:

  • Unpack the .zip file 

you probably already have done that as it contains this document (NodeSetUsermanual.pdf) and the add-on itself (a Python file,

  • Select File → User Preferences ... → Add-ons from the menu

  • Click ‘Install from file …’ (at the bottom of the screen) and select the file

  • Click ‘Install from file ...’ (at the top right of the screen)

  • Check the enable check box to the left of the add-on you just installed

The add-on menu options will now be available from the Add → Texture menu in the Node editor.

Installing a newer version of NodeSet Pro

If you want to replace a previous version of NodeSet Pro you have to remove the old version first. To do this, go to File → User preferences … → Add-ons and either search for NodeSet Pro or go to the ‘Node’ category where it will be located. Click on the add-on and then on the ‘Remove’ button. After removing the old version follow the instructions above to install the new version.


NodeSet Pro adds three menu entries to the Add → Texture menu of the node editor:

The menu offers to insert just a collection of texture nodes or add a shader with a complete node setup as well, possibly connecting any height map to the (experimental) displacement socket of the material output node.

Each menu entry starts with opening a file selector that lets you browse through your folders. By default only image files that have the word ‘Color’ in their name are shown to decrease clutter:


If you click the ‘Import Texture set’ button, the selected texture will be loaded along with any other textures in the set that share the same basename. With the menu ‘Image Texture Set’ chosen the result would look like this (for a typical set of five textures produced by Substance Painter’s metallic/roughness export):

Note that by default some extra nodes are added for convenience: a UV Map node, so that you can select the UV map for the object in case you have more than one, plus a Normal Map node and a Bump node to compute a combined normal. The addition of extra nodes can be controlled in the add-on preferences.

Would you have chosen ‘Add Texture Set + Shader’ from the menu instead, the result would have looked different:

A correctly wired up Principled shader is now present as well. (You are not limited to the Principled shader, in the add-on preferences you can select any NodeGroup to be used instead and NodeSet Pro will try to connect all the nodes in a suitable manner).

You can even use the experimental micro displacement option of Blender with the ‘Add Texture Set + Shader (Displacement)’ menu. If a Material Output node is present it will create a slightly different node setup:

As you can see additional nodes have been added between the Height map and the displacement output. Because heightmaps often range between [0,1] is convenient to center this around zero and offer a scaling option when we use it directly as a displacement instead of a bump map input. 

Add-on Preferences: Adapt NodeSet Pro to your workflow

Almost every aspect of NodeSet Pro’s behavior can be configured, from the way it recognizes texture map filenames to the names of the input sockets on the shader it connects to and everything in between.

To make it as simple as possible to adapt NodeSet Pro to your chosen workflow the configuration options are grouped in distinct groups, each documented in the following sections.

All types of texture map feature a suffix option. Based on this suffix a filename will be recognized as a texture map of a given type. The suffix is the last part of the filename before the file extension, the prefix or base name is the rest of the filename before the suffix. For example in the filename MyMesh_MyMaterial_Normal.png you could consider _Normal the suffix in which case MyMesh_MyMaterial would be the base name.

When selecting a file,  NodeSet Pro will try to match the filename against any of the defined suffixes and if found, treat the file as a texture of a certain kind. It will also try to find other file names in the same directory with the same base name but different suffixes. This way when you select a file that ends in ‘_BaseColor’, for example ‘SampleMaterial_BaseColor.png’,  all other image files in the same directory that start with ‘SampleMaterial’ will be loaded as well.

The other texture map options may seem bewildering at first because there are a great number of them, but all follow the same pattern. As indicated each map has options for

  • Texture map suffix

this specifies the last part of the filename that will determine the type of the texture

  • Color data

With this checkbox  you can indicate whether this texture contains data that is not linear, that is, contains data that should be color corrected.  It is checked by default for all color maps (Base Color, Diffuse and Emission)

  • Invert

If checked a math node will be added to the Color output socket of the texture node that will invert the value, that is, map a range [0,1] to [1,0]. This is convenient for example if you want to connect a glossiness map to a roughness input of a shader. For normal maps a special Flip Normal node will be inserted that allows for conversion between DirectX and OpenGL normals.

  • Alpha

Adds an inverting math node to the Alpha output socket of the texture. This option is only present for color textures

  • Shader input socket

The name of the shader input socket to which to connect the Color output of the texture node

  • Alpha

The name of the shader input socket to which to connect the Alpha output of the texture node. This option is only present for color textures

If the socket names of a shader to connect to do not exist, no connection will be made.

Texture map options

All possible textures maps are grouped according to their common workflow. In the sections below screenshots are shown for the default configurations that are present when you install NodeSet Pro

Metallic/roughness workflow

Note that the names of the suffixes are the defaults as generated when exporting maps from Substance Painter in the Metallic/Roughness workflow  and that the input socket names are the appropriate names to connect to a Blender Principled shader.

Specular/glossiness workflow

Note that the names of the suffixes are the defaults as generated when exporting maps from Substance Painter in the Specular/Glossiness workflow. The input socket names are names present on a Blender Principled shader but this is almost certainly not what you want because the Principled shader is not targeted at the Specular/Glossiness workflow. So most likely you will want to specify socket names of an alternative shader, a shader that you can specify with the Alternative shader option.

Common workflow

Note that if the Invert option is checked for the Normal texture map a special Normal flip node will be inserted that will invert just the green channel. This makes it possible to convert between DirectX and OpenGL normals (and vice versa).

Additional textures

An emission map contains color data and is by default treated that way. It may have an alpha channel as well but whether this will contain useful data depends on the software. We do provide an option to connect the alpha channel to a shader socket just in case.

Custom texture maps

NodeSet Pro allows you to configure two custom maps. Custom maps can be defined in software like Substance Painter to pack different kinds of data into the color and alpha channels of a single text map, thereby reducing the number of different texture maps you need to move around.

Out of the box the first map contains defaults that might be useful for a texture that combines the height, roughness and metallic information in the red, green and blue channels respectively:

We have indicated that the texture should be treated as individual channels (by checking ‘Split’) and we have specified the role of the red channel to be ‘Height’. This will cause this channel to be connected to a Bump node first before being connected to the shader socket (in this case configured to be the Normal socket).  Each channel can be individually connected to a math node that will invert the data.

A custom map does not have to contain different kinds of information, it could be another type of color map (like for example Specular Color) or some sort of vector map (a flow map perhaps). Custom map 2 is by default configured not to be split and all other options have been left empty:


General options


The preferences listed under the Files section control the way NodeSet Pro tries to find texture files.

Case Sensitive

If checked file matching will be case sensitive: mytexture_basecolor.png will be considered different than Mytexture_BaseColor.png.

Link Existing Tex Files

If checked will not load a new copy of the image if the image is already present. Instead it will link the Texture node to this existing image.

File extensions

The list of filename extensions that will be considered as texture files.

File filter

If checked will filter the list of files using a wildcard (see next option)

Wildcard (Keyword)

The default of Color will restrict the list of files to show to just those containing the word Color in their name. Textures with the same base name will still be loaded of course. Unchecking the File filter option or specifying a different keyword might be useful if your workflow creates textures sets that do not contain a file with Color in its name (for example Albedo).


The Shader preferences control how the other nodes beside the texture nodes that may be created by NodeSet Pro are configured.

Remove nodes

If checked will remove any nodes already present in your material before inserting new ones. It will only do this for the ‘Add Texture set + Shader’ and ‘Add Texture set + Shader (Displacement)’ menu entries (not for the ‘Add Texture set’ entry) and it will not remove any Material Output node or Group input/output node. 

Object Space in Normal Map

If a Normal Map node is inserted in the node setup, this option determines if it will be configured to use Object Space mapping or Tangent Space mapping. 

Add a UVMap node

If checked an extra UVMap node is inserted before the group of texture nodes and connected to their Vector input socket. This allows for the use of a different UVMap than the default map.

Use normal maps nodes

If checked will add a Normal Map node to a normal map texture.

Normal strength

The default strength of any Normal Map node added (Blender’s default of 1.0 is often too strong so for convenience this is set to 0.3)

Bump strength

The default strength of any Bump node added (Blender’s default of 1.0 is often too strong so for convenience this is set to 0.3)

Use principled shader

If checked will use Blender’s Principled shader, if not will use an alternative NodeGroup (see next option)

Alternative shader

The NodeGroup to use as a shader instead of Blender’s Principled shader. Note that this NodeGroup must already be present in the .blend file in order to be selectable, so normally you would include such a custom shader NodeGroup in your startup file.


The layout preferences influence minor points of the look-and-feel of the generated nodes.

Texture Frame Color

The texture nodes that are created are grouped inside a frame with a descriptive name. This option controls the color of this frame.

Shader Frame Color

All nodes added to the material, including any shader and the frame with the texture nodes is placed inside a frame. This option controls the color of this frame.

Zoom out

If checked will try to make all nodes visible in the node editor.

I have a suggestion for an enhancement/feature, how do I contact you?

I am open to any good suggestion and you can either contact me by clicking the  Contact Creator button on my BlenderMarket shop or by filling out the contact form on my Small Blender Things blog.

How do I use a shader group I have instead of the Principled shader?

In the Shader section of  the add-on preferences, uncheck the Use principled shader option. This will reveal a dropdown box called ‘Alternative shader’:

This will show a list of available node groups. To have anything to choose from here, you must make sure any node group you wish to use as a shader is already included in your .blend when you configure the NodeSet Pro add-on. The most convenient way to do so is by including this node group as part of your Blender startup file.

If you are configuring NodeSet Pro with a .blend file open that does not (yet) contain the node group you want to use you have to add the group with File → Append before you can select it.

Note that if you create a new startup file, existing .blend files that you open later will NOT read this startup file so the preferences might indicate this condition in red. If so, just add the node group to the existing .blend

I have more than one UVMap on my object, how do I specify which one to use?

In the Shader section of  the add-on preferences, make sure that the Add a UVMap node is checked. This will add a UVMap node in front of any texture node present. This UVMap node will offer a dropdown of the available uv-maps on this object. You can leave it blank to use the default map.

How do I convert DirectX normals?

In the add-on preferences, check the ‘Invert’option of the normal map. This will insert a special conversion node that will flip the green channel of the normal map only, thereby converting from DirectX format to OpenGL format (or vice versa).

    No ratings have been submitted yet.

Purchase this item to leave a review!