It's the first of a graph's Base parameters and, along with the Output Format (or bitdepth), is critical to understand well since it has a large impact on a graph's output, both within Designer and in other applications as a published Substance 3D asset (SBSAR) file.
We strongly recommend acquiring a good understanding of inheritance in Substance compositing graphs as a foundation for using the Output Size property efficiently.
Power of 2 values
The Output size parameter determines the resolution of the texture output by a graph or node.
A texture which is an object in graphics computing bound by some restrictions imposed by the way graphics processing hardware performs its computations. One of these restrictions is the texture should represent an image which pixel count in X and Y is a power of two.
The Output size property uses logarithmic steps to easily map increases of powers of two (e.g., 256, 512, 1024, ...) to a linear scale (e.g. 8, 9, 10, ...). This means increasing or decreasing the Output Size value in X or Y by 1 is akin to multiplying or dividing the current resolution by 2.
This also applies when the Output Size value is controlled by a function, where the function should output the target logarithmic values (relative or absolute) instead of the target resolution.
Increasing or decreasing resolution in both X and Y multiplies or divides the pixel count by 4, which has a significant impact on a graph's performance and memory footprint.
As such, we strongly recommend using the lowest resolution actually needed to get a desired result. Keeping resolutions under control is one of many of our performance optimization guidelines.
|Logarithmic / Power of 2||Absolute number of pixels|
When the Output Size property uses a Relative to... inheritance method, its value is expressed as a modifier relatively to the inherited logarithmic value.
Modifiers relative to the inherited resolution range from -12 to +12 on a logarithmic scale, with the default being 0. This means each step above or below results in doubling or halving of resolution. The table on the right gives an example of how relative resolution changes in one dimension for an inherited value of 9 (i.e., 512 = 2^9) and 11 (i.e., 2048 = 2^11):
Notice how above 8196, the size is capped. This cap is controlled by the Cooking Size Limit setting in the General section of the Preferences. Please note working with very large resolutions comes with a proportional performance cost and exponential memory footprint. Also, limits in graphics processing puts a hard limit on the maximum size of a texture.
Changing the inheritance method
In most cases, the default inheritance method for the Output Size property is the following depending on the item:
- Graph: Relative to parent
- Node: Relative to input – the values inherited by the node's Primary input are used in this case
- Bitmap node: Absolute – see the Bitmap resource page and performance optimization guidelines to know why that is
Display the properties of a node or graph by clicking that item, then in the Properties panel find the Output Size property in the Base parameters section. Click the inheritance method drop down menu select the desired inheritance method.
If you are a new Substance 3D Designer user, you might run into some common problems. We'll list some examples below, along with solutions.
The Parent Size setting is grayed out, and the graph uses in an undesired 256*256 resolution.
In the graph's properties, the inheritance method of the Output Size property was set to Absolute, which stops inheritance in favour of an arbitrary value.
Set the inheritance method for the graph's Output size to Relative to parent.
Above you see a case where the output of a graph results in a different resolution (512*512) than set in the parent (1024*1024), despite the graph being set to Relative to parent.
The problem stems from the Bitmap node. It defaults to the Absolute inheritance method, and picked 512*512 as a resolution based on the Bitmap resource. The node connected to it are set to Relative to input, thus inherit their Output Size from the Bitmap node.
Set the Output Size's inheritance method of the Bitmap node to Relative to parent, resolving the issue further down the chain.
Above you see an issue where the resolution jumps much higher halfway through the chain, resulting to much higher output resolution than defined by the parent.
The problem is caused by a relative modifier of 3 on the Transformation 2D node, making the output 8 times larger.
Set the relative modifiers for Width and Height to 0, leading to no upscaling.