Let’s dive into a nice little tool that can help you merging different texture sets and see how I modified it with just a couple of nodes in order to use it with a packed textures workflow.
Being a huge fan of the Substance suite, I recently stumbled upon a great little tool created by Wes McDermott years ago called the Merge Texture Set Utility. It’s a Substance Designer graph packed into a simple .sbsar, substance archive, you can open also with the free Substance Player and that lets you combine together different sets of textures. It comes really handy for example when you are using different texture sets inside Substance Painter and you want to combine them together for the final output that will be imported into a game engine. While I was finding this tool really helpful, I felt the need to add a little change to it in order to be really part of my pipeline. Luckily the Substance Designer graph was provided so I was able to put my hands on it.
Adding Texture Packing To The Mix
Developing content for real-time engines (Unreal Engine in my case) it’s something that requires you to constantly plan ahead and create a pipeline for the most optimized output at the best quality possible. It’s always a balance between performance and quality.
One of the steps that can greatly help for optimization is the possibility to use as few textures as possible for your assets, reducing calls and required disk/memory space at once. A great technique in this regard is the adoption of texture packing. A single packed texture (also known as RMA or ORM texture depending on the order of the channels) can contain the necessary data for up to four channels. What a packed texture does is to combine the greyscale data from channels like roughness, metallic and ambient occlusion and save each into one of its RGB/RGBA channels.
One Texture To Rule Them All
Having a full image file for roughness or other greyscale textures is a waste because this kind of shader channels do not need a full RGB image in order to do their work. Packing them together is advantageous in many ways and it doesn’t affect the quality of the final result. You usually end up with a total of only three textures per asset (base color, normal map and this packed texture), so less content to manage, less content to load into the engine, less content to store on your hard drive. You can combine these channels into a single texture in many ways, but the main two I am aware of are via Photoshop (manually) or via Substance Painter (automatically during export).
The Merge Packed Texture Set Utility
In order to combine the Merge Texture Set Utility with the packed textures, I only added a couple of nodes into the graph and changed the output nodes accordingly. Doing this I was now able to automatically combine different texture sets into a single packed texture set.
How To Use It
So the process, once your texturing is done, is to export the channels of all your texture sets individually with alpha channel enabled and a small amount of dilation (between 2 and 4 should work fine).
Then you can download the freebie from here, open the sbsar, choose the number of texture sets you have as inputs, assign the required textures to their slots and export the newly created packed set.
That’s all for today!
I hope you will find it useful in your texturing process.
See you in the next one!