Victor Andreyenkov shares some tips on making Substance Painter a less demanding task for your computer and explains how to do it without decreasing the quality of your work.
In case you missed it
You may find these articles interesting
Substance Painter is a versatile instrument for creating texture maps for 3D models whether you create PBR, non-PBR, or completely stylized texture maps of whatever nature. However, giving you many possibilities to transfer your imagination into textures Substance Painter intensively consumes a lot of system resources, especially graphics card’s memory and GPU. It is therefore very important to understand how to optimize the process of making texture maps in order to postpone or even evade the moment when your hardware will start limiting your creativeness.
The first section of the article is dedicated to fine-tuning the Substance Painter working environment. The second section of the article is dedicated to texturing workflow optimization.
Fine-Tuning the Working Environment
After being installed on a PC, any software has a number of settings set to their default values. These values are usually set with compatibility in mind and in most cases are not optimal for each and every PC. For example, a cash file should be located on the fastest drive installed on your PC to ensure fast access to already used resources. However, the software development team does not know which drive is the fastest in your system. So tuning this particular setting can drastically improve your experience with Substance Painter. Tuning the Substance Painter settings shall be the subject matter of this first part of the article.
Substance Painter has a database of resources (materials, alphas, brushes, smart materials, etc.) distributed among the shelves based on their purpose. Each resource of your shelf in essence is a file located on your drive. In order to display the thumbnails of the resources Substance Painter should read, process, and generate a preview icon (thumbnail) for it. Generated thumbnails are stored in a cache file in order to be displayed again immediately without repeating this long procedure (read, process, generate). If the new thumbnails are generated and the Local cache budget is exceeded the oldest ones are replaced with the newest ones. You can find cache settings in the Edit > Settings menu.
To mitigate the issue of the constant overwrite of older thumbnails with the new ones the Local cache budget option, which is set in megabytes, should be increased depending on the size of your library (number of all resources located on the shelves). A wise decision would be to set it to a value of around 2000MB.
Another major concern is where to store the cache file. Nowadays the SSD drives are used almost everywhere to install an operating system so if you do not have an even faster drive/RAID you can leave Local cache directory value at its default, on the C drive. Otherwise, it would be smart to create a folder for the local cache file on the fastest drive of your system in order to promptly see the content of your Substance Painter shelves.
The same is equally applicable to the Cache directory for Substance Painter’s temporary file. The faster the drive they are located on is, the more comfortable your work will be.
Shader quality settings are very important for the correct display of your textures within the Substance Painter viewport as it sets the number of samples made for specular contribution computation. Using low settings you most definitely get a wrong display of metallic and shiny surfaces and the Substance Painter viewport display will differ from your final render that uses exported textures. It is therefore very important to set this value as high as your graphics card’s performance can afford. Below are the examples of Substance Painter’s default Low settings (16 samples) and Ultra settings (256 samples).
To meet performance rates of different graphics cards there are a couple of settings in between Low and Ultra like Medium (32 samples), High (64 samples), and Very high (128 samples).
Baked Maps Resolution
Baked Maps (also called Mesh Maps) could unreasonably make the project file much bigger than it might be. There are a few hints that will help you to decrease their size without influencing their quality.
The Normal Map is advised to be 16-bit Color. Color gradients on this map are very important for model lighting so making it less than 16-bit might lead to lighting quality degradation. This is the only map that might be baked not just at the same resolution as the final texture map but even 2 times bigger. It depends on the performance of your particular hardware. The quality of this map is extremely important both for generators in Substance Painter and in-game. Especially if the model contains many small details.
The Position Map is advised to be half of the final texture map resolution. This map is just a gradient, has no influence on resolution, and is used only by Substance Painter generators. It does not make much difference if it is baked in 16-bit or 8-bit Color so it is rather up to your preference.
Ambient Occlusion Map, Curvature Map, and Thickness Map are advised to be the same resolution as the final texture map, which is 16-bit Greyscale.
World Space Normal Map and ID Map are advised to be the same resolution as the final texture map, 16-bit Color.
It is impossible to set these parameters independently for each Baked Map in Substance Painter before the baking process, therefore after you bake them they should be exported as 16-bit PNG files using the standard “Mesh Maps” preset.
Each map should then be edited in any appropriate image editing software of your choice. After saving maps with the parameters mentioned above you can import them back to Substance Painter and assign them to appropriate slots in the Mesh Maps section of the Texture Set Settings.
You’re all done! Not only will it optimize the file size of the project but it will increase the performance of the processes that use these baked maps. It will also decrease the project file memory footprint. Do not forget to use the File > Clean function to completely get rid of your originally baked maps (see the description of this function below in this article).
Texturing Workflow Optimizations
When texturing using Substance Painter it is wise to always keep in mind that project files should be as little as possible and the graphics card’s memory should be used as little as possible. However, the size of the file on the disk might not be the subject of concern as much as its footprint in the memory of your graphics card because upon reaching the end of available memory on your graphics card, a part of textures will be stored in your system memory. In this case, Substance Painter will slow down the process of texturing drastically until you decrease the current working texture resolution (good for us we can export textures in any resolution without losing quality but who wants to decrease working resolution anyway). Below are some hints that should allow you to make your project file smaller and use less of the memory of your graphics card.
While you use Paint Layers (it is equally applicable to materials and masks) make more strokes without pulling your stylus off the tablet whenever possible. It will make your project file smaller and will use less of the memory of your graphics card.
Anchors are not just a very useful feature that allows you to use already existing masks and create variations on their basis but it is also a way to save some graphics card’s memory and disk space.
Anchors serve the same purpose as shortcuts to the files in Microsoft Windows operating system. They do not contain any data except target object location. Another analogy 3D artists are familiar with is an Instance of an object: Instance (like the Anchor) does not take even nearly as much memory to store its properties as the object itself because it contains only the link to the object and inherits its parameters. Using the Anchors is not a matter of taste but rather a matter of rationality.
Substance Painter allows you to hide the content of certain layers or folders in the viewport. Hiding them allows you to compare a couple of versions of textures and save you an option for the future to choose from if you are not sure what the best option is right now. However, when you have finished the project and there are no more alterations to be made to the project file it is wise to check your folders and layers for hidden ones and delete them in order to decrease the project file size. If someone pays you for a Substance Painter project file it is moreover important to have clean folders/layers structure without any garbage because other people might work on it afterward.
Imported Masks and Stencil Images Resolution
When masking or using stencils you might want to use a picture from the Internet. There is a wide variety of image resolutions and usually, we use any of them not really caring if they truly meet our needs or if they are big enough. However, it would be wise to change the imported mask/stencil resolution so it would correspond to the final texture map resolution.
For example, there is no need to import the whole 8K texture as a mask if you intend to export a 1K texture map at the end. An 8K mask/stencil will take a lot of space in your project file and you will not profit from its crispiness in any way unless your final texture map is 4K or above. Instead, you may decrease resolution or crop a part of the imported image resaving it in 2K (in case the final texture map is 1K). This will give you a good quality mask/stencil meanwhile the project file will not grow a lot.
Getting Rid of Unused Resources
When texturing you might import certain resources like masks, stencils, baked maps, or other kinds of resources supported by Substance Painter. However, at the end of the texturing process, you might end up with some resources being not used at all. In this case, the project file should be cleaned. To clean the project file select File > Clean.
Before using this function make sure you have already assigned all imported resources you need to appropriate layers/masks otherwise you will have to import them again if needed. You might use this function from time to time but it is highly recommended to use it before saving the final version of the project file to make sure no unneeded (i.e. garbage in all senses) resources are saved to it occupying drive space and memory while the scene is loaded.
Save and Compact
When you use the Ctrl+S combination the project file archive can be fragmented a lot. While this will not lead to project file corruption this can introduce empty spaces in the project file which leads to an unnecessary increase in file size. However, there is a function in Substance Painter that rebuilds the project file compacting its content – Save and Compact.
Depending on how actively you work on your project it should be used from time to time. It does defragment data within a single file. I would recommend using it each time you save a project file before closing it.
In case you work with a project file created in an earlier version of Substance Painter there is a chance some of Painter’s resources have been updated in the latest version and therefore project file contains outdated resources (brushes, maps, shaders, etc.). To check if there are new versions of the resources used in your project file you can launch Resources Updater.
In Resource Updater you can check if some of the shelf resources or shaders have been outdated and update them to their latest versions. It would be easier to do if you select “Outdated” in the Status dropdown menu.
You will then see the list of outdated resources which might be updated with the “Update” button on the right side of each resource. Updating resources to the most recent version serves the same purpose as updating the Substance Painter itself – fixing bugs, optimizing performance and visual quality.