User Guide Cancel

Performance optimization guidelines | Substance 3D Designer

Performance optimization guidelines

Substance graphs

The more complex your Substance graphs are, the more processing power you need to render them. You should try to strike a balance between complexity and rendering speed.
This is especially important if you will use them in real-time graphics applications, such as games.

Generally speaking, nodes exposing custom parameters - that can be modified at run-time - should be placed as close to the end of the graph as possible.

This is because the output of each node is cached wherever possible. Therefore, the further up the graph your tweakable node is, the more outputs will need to be processed whenever one of those exposed parameters is modified. If your exposed node is close to the end of the graph, only the few nodes between it and the output nodes will need to be recomputed.

For example, if tweaking a uniform color at the beginning of your graph, all the following nodes will be recomputed. If you tweak a HSL node placed right before the output, only this node will be recomputed, greatly improving the performance of the graph.

Please make a good note of the following guidelines:

GENERAL PERFORMANCE-RELATED SETTINGS

GRAPH OPTIMIZATION

OPTIMIZATIONS FOR MOBILE USAGE

SIZE OPTIMIZATIONS FOR EMBEDDED BITMAPS

Bitmaps have their Output Size set to 'Absolute' by default. This means that if the bitmap is connected through the node chain to an output, it will then force the final output to be the size of the embedded bitmap.
A node you insert after the bitmap will have its Output Size set to 'Relative to Input'. This means that the node will also inherent the size of the bitmap and carry this size down the node chain to the outputs. To correct this, you need to set the node after the bitmap to have its Output Size set to 'Relative to Parent'.

If the graph is set to have a dynamic resolution, you can change the Output Size on the embedded bitmap to be Relative To Parent.
This way, the bitmap size will change based on the parent graph and you won't get into a situation where the graph is processing higher resolution in the bitmap than what is needed.

Alert:

Setting a Bitmap node to "Relative to parent" and publishing the graph to a Substance 3D asset (SBSAR) will save the bitmap at a resolution of 256x256 instead of its original size. It is advised instead to keep the inheritance method of Bitmap nodes' Output Size as 'Absolute' and use a Transformation 2D node set to 'Relative to parent' just after the Bitmap node.

Embedded bitmaps optimisation 1

Embedded bitmaps optimisation 2

Also, it is advised to set the format of Bitmap resources to Jpeg for minimising the size of published Substance 3D assets (SBSAR).

Embedded bitmaps optimisation 3

Get help faster and easier

New user?