- Substance 3D home
- User guide
- Glossary
- Getting started
- Interface
- Interface
- Customizing your workspace
- Home screen
- Main toolbar
- Preferences
- Explorer
- Graph view
- Library
- Properties
- 2D view
- 3D view
- Dependency manager
- Resources
- Resources
- Importing, linking and new resources
- Bitmap resource
- Vector graphics (SVG) resource
- 3D scene resource
- AxF (Appearance eXchange Format)
- Font resource
- Warnings from dependencies
- Substance graphs
- Substance graphs
- Substance graph key concepts
- Creating a Substance graph
- Exposing a parameter
- Graph parameters
- Inheritance in Substance graphs
- Output size
- Values in Substance graphs
- Publishing Substance 3D asset files (SBSAR)
- Exporting bitmaps
- Exporting PSD files
- Sample Substance graphs
- Warnings in Substance graphs
- Nodes reference for Substance graphs
- Nodes reference for Substance graphs
- Atomic nodes
- Node library
- Node library
- Texture generators
- Texture generators
- Noises
- Noises
- 3D Perlin noise
- 3D Perlin noise fractal
- 3D Ridged noise fractal
- 3D Simplex noise
- 3D Voronoi
- 3D Voronoi fractal
- 3D Worley noise
- Anisotropic noise
- Blue noise fast
- BnW spots 1
- BnW spots 2
- BnW spots 3
- Cells 1
- Cells 2
- Cells 3
- Cells 4
- Clouds 1
- Clouds 2
- Clouds 3
- Creased
- Crystal 1
- Crystal 2
- Directional noise 1
- Directional noise 2
- Directional noise 3
- Directional noise 4
- Directional scratches
- Dirt 1
- Dirt 2
- Dirt 3
- Dirt 4
- Dirt 5
- Dirt gradient
- Fluid
- Fractal sum 1
- Fractal sum 2
- Fractal sum 3
- Fractal sum 4
- Fractal sum base
- Fur 1
- Fur 2
- Fur 3
- Gaussian noise
- Gaussian spots 1
- Gaussian spots 2
- Grunge concrete
- Grunge Damas
- Grunge galvanic large
- Grunge galvanic small
- Grunge leaks
- Grunge leaky paint
- Grunge map 001
- Grunge map 002
- Grunge map 003
- Grunge map 004
- Grunge map 005
- Grunge map 006
- Grunge map 007
- Grunge map 008
- Grunge map 009
- Grunge map 010
- Grunge map 011
- Grunge map 012
- Grunge map 013
- Grunge map 014
- Grunge map 015
- Grunge rough dirty
- Grunge rust fine
- Grunge scratches dirty
- Grunge scratches fine
- Grunge scratches rough
- Grunge shavings
- Grunge splashes dusty
- Grunge spots
- Grunge spots dirty
- Liquid
- Messy fibers 1
- Messy fibers 2
- Messy fibers 3
- Microscope view
- Moisture noise
- Perlin noise
- Plasma
- Caustics
- Voronoi
- Voronoi fractal
- Waveform 1
- White noise
- White noise fast
- Patterns
- Patterns
- 3D linear gradient
- 3D volume mask
- Alveolus
- Arc pavement
- Brick 1
- Brick 2
- Brick generator
- Checker 1
- Cube 3D
- Cube 3D GBuffers
- Fibers 1
- Fibers 2
- Gaussian 1
- Gaussian 2
- Gradient axial
- Gradient axial reflected
- Gradient circular
- Gradient linear 1
- Gradient linear 2
- Gradient linear 3
- Gradient radial
- Height extrude
- Mesh 1
- Mesh 2
- Panorama shape
- Polygon 1
- Polygon 2
- Scratches generator
- Shape
- Shape extrude
- Shape mapper
- Shape splatter
- Shape splatter blend
- Shape splatter data extract
- Shape splatter to mask
- Splatter
- Splatter circular
- Star
- Starburst
- Stripes
- Tile generator
- Tile random
- Tile random 2
- Tile sampler
- Triangle grid
- Weave 1
- Weave 2
- Weave generator
- Filters
- Filters
- Adjustments
- Adjustments
- Apply color palette
- Auto levels
- Channel mixer
- Chrominance extract
- Clamp
- Color match
- Color to mask
- Contrast/Luminosity
- Convert to linear
- Convert to sRGB
- Create color palette (16)
- Grayscale conversion advanced
- Hald CLUT
- HDR range viewer
- Height map frequencies mapper
- Highpass
- Histogram compute
- Histogram equalize
- Histogram range
- Histogram render
- Histogram scan
- Non-uniform histogram scan
- Histogram select
- Histogram shift
- ID to mask grayscale
- Invert
- Lighting cancel high frequencies
- Lighting cancel low frequencies
- Luminance highpass
- Min max
- Modify color palette
- Pow
- Quantize color (Simple)
- Quantize color
- Quantize grayscale
- Replace color
- Replace color range
- Threshold
- View color palette
- Blending
- Blurs
- Channels
- Effects
- Effects
- 3D texture position
- 3D texture SDF
- 3D texture surface render
- 3D texture volume render
- Ambient occlusion (HBAO)
- Ambient occlusion (RTAO)
- Anisotropic Kuwahara color
- Anisotropic Kuwahara grayscale
- Bevel
- Bevel smooth
- Cross section
- Curvature
- Curvature smooth
- Curvature sobel
- Diffusion color
- Diffusion grayscale
- Diffusion UV
- Directional distance
- Edge detect
- Emboss with gloss
- Extend shape
- Flood fill
- Flood fill mapper
- Flood fill to Bbox size
- Flood Fill to gradient
- Flood Fill to grayscale/color
- Flood Fill to index
- Flood Fill to position
- Flood Fill to random color
- Flood Fill to random grayscale
- FXAA
- Glow
- Mosaic
- Multi directional warp
- Non-uniform directional warp
- Reaction diffusion fast
- RT irradiance
- RT shadow
- Shadows
- Shape drop shadow
- Shape glow
- Shape stroke
- Summed area table
- Swirl
- Uber emboss
- Vector morph
- Vector warp
- Normal map
- Tiling
- Transforms
- Material filters
- Material filters
- 1-click
- Effects (Material)
- Transforms (Material)
- Blending (Material)
- PBR utilities
- Scan processing
- Mesh-based generators
- Mesh-based generators
- Mask generators
- Weathering
- Utilities (Mesh-based generators)
- Spline & Path tools
- Spline & Path tools
- Working with Path & Spline tools
- Path tools
- Spline tools
- Spline tools
- Paths to Spline
- Point list
- Scatter on Spline color
- Scatter on Spline grayscale
- Spline 2D transform
- Spline (Cubic)
- Spline (Poly quadratic)
- Spline append
- Spline bridge (2 Splines)
- Spline bridge (List)
- Spline bridge mapper color
- Spline bridge mapper grayscale
- Spline circle
- Spline fill
- Spline flow mapper
- Spline mapper color
- Spline mapper grayscale
- Spline merge list
- Spline render
- Spline sample height
- Spline sample thickness
- Spline select
- Spline warp
- UV mapper color
- UV mapper grayscale
- 3D view (Library)
- 3D view (Library)
- HDRI tools
- Node library
- Substance function graphs
- Substance function graphs
- What is a Substance function graph?
- Create and edit a Substance function graph
- The Substance function graph
- Variables
- FX-maps
- FX-Maps
- How it works
- The Iterate node
- The Quadrant node
- Using Substance function graphs in FX-Maps
- Warnings in Substance function graphs
- Sample Substance function graphs
- Nodes reference for Substance function graphs
- MDL graphs
- Bakers
- Best practices
- Pipeline and project configuration
- Color management
- Package metadata
- Scripting
- Scripting
- Plugin basics
- Plugin search paths
- Plugins packages
- Plugin manager
- Python editor
- Accessing graphs and selections
- Nodes and properties
- Undo and redo
- Application callbacks
- Creating user interface elements
- Adding actions to the Explorer toolbar
- Using color management
- Using spot colors
- Logging
- Using threads
- Debugging plugins using Visual Studio Code
- Porting previous plugins
- Packaging plugins
- Scripting API reference
- Technical issues
- Release notes
Version 14.0
Substance 3D Designer 14.0 brings several quality of life improvements (graph navigation, performances, ...) but above all it includes a lot of new nodes (color manipulation, Kuwahara filter, histogram tools, bevel smooth, directional distance, ...). See below for more details about all these changes.
Release date: July 30th, 2024
In this page
This 14.0 version brings a lot of new content with the new nodes listed below:
- Nodes dedicated to color manipulation: one node (Quantize color) to reduce the number of colors in an image and extract a palette from it, a family of tool nodes to build your own color palette (View / Create / Modify color palette) and one to apply it to another image using an ID map (Apply color palette). You will also find the ID to mask grayscale node to convert your ID map — computed by Quantize color — to a grayscale mask. With this full set of nodes, you have all you need to create stylization effects using colors.
- Kuwahara filter: if you want to go even further with stylization, you can generate some painterly effects thanks to the Anisotropic Kuwahara color / grayscale filters. In details, it applies an anisotropic directional blur which conforms to the details of the image. The result is an image which appears to flow in the direction of the shapes within.
These nodes (Quantize color and Anisotropic Kuwahara) are explained in this tutorial. It shows how to use them to stylize materials as well as handle colors more efficiently and intuitively!
Other powerful nodes join the party:
- Curvature smooth: this new version now correctly supports all tiling modes, adds two new outputs (convexity and concavity) and improves both in accuracy and performance.
- Histogram equalize: this node equalizes the histogram for a grayscale image by adjusting values to get an equal distribution. This nodes comes with two companion nodes: Histogram render to output the image's histogram and Histogram compute to encode an histogram as a row of pixels.
- Bevel smooth: thanks to his one, you can draw a gradient or a flat color from the borders of a mask (outward, inward or both). The node Directional distance draws gradient too but in a specific direction.
- Normal uncombine: this node is the opposite of the Normal combine node, it removes from a normal map the surface details described by a height map.
Curvature smooth
Histogram equalize
Bevel smooth
Normal uncombine
- Performances and responsiveness when working on big projects have been improved. For example removing nodes can be up to 75 times faster. Cooking time has also been reduced for graphs referencing several times the same bitmap.
- Inherited parameters: when a parameter is inherited, instead of showing the default value, we now display the inherited one so you know the currently used value. Learn more about inheritance in this dedicated page of our documentation.
- Trackpad support on MacOS has been completely reworked to be more natural and in line with other software. Moving nodes beyond the borders of the Graph View has also been rethinked in order to be smoother and more consistent across all the operating systems.
- Gradient map: use the mouse middle click to shift all the gradient keys to the left or to the right (and so preserve all the gaps between all the keys).
- Parameters: in order to inject custom functions through parameters, you can now use the Edit function widget. It's a powerful solution to create custom tools where you want to drive parameters using a Substance function graph.
The scripting API includes four new methods:
- Methods to get and set the graph type of a Substance compositing graph: myGraph.setGraphType("newType") ; myGraph.getGraphType()
- Method to open a package resource in its editor (E.g., a Substance graph in the Graph View): myUIManager.openResourceInEditor(myResource)
- Method to select a package resource in the Explorer (E.g., a Substance graph): myUIManager.setExplorerSelection(myResource)
- Method to frame a specific node in the graph view: myUIManager.focusGraphNode(myGraphViewID, myNode)
Every year, the VFX Reference Platform publishes a list of tools and libraries versions to be used in every software for the VFX industry to minimise incompatibilities between software. As usual, we update all our dependencies in order to respect all these recommendations.
Note that these updates have two majors consequences:
- Linux requirements have changed, and Designer is now requiring RHEL version 8 or 9 (CentOS is no longer supported). All details can be found in the System requirements page.
- Plugins for Designer have to be updated as some functions have been deprecated in Qt6. You will find all required information to update your plugins in the community forum.
14.0.0
(Released July 30th, 2024)
Added
- [Content] New Anisotropic Kuwahara filter
- [Content] New Bevel Smooth Node
- [Content] New Curvature Smooth v2 node
- [Content] New Directional Distance node
- [Content] New Histogram Tools: Compute, Equalize, Render
- [Content] New ID to Mask node
- [Content] New Normal Uncombine node
- [Content] New Palette nodes: Create, Apply, Modify, View
- [Content] New Quantize Color node
- [Content] Non-Uniform Directional Warp: Set default Intensity Map Value to 1
- [Content] Add 'Color' or 'Grayscale' suffix to all node labels which have these versions
- [Content] Deprecate "White Noise" only keep "White Noise Fast"
- [Content] Deprecate 'Negate Float1' node in Substance function graph
- [Content] Rename "Quantize Color" to "Quantize Color (Simple)"
- [2D View] Display values in Information panel for pixels outside of 0-1 range
- [Engine][Text] New kerning for some fonts
- [Graph] Improve invalidation time when editing deep subgraphs while using in-context edition
- [Linker] Do not duplicate bitmaps in SBSASM
- [Parameters] Add a new "function" widget for all input parameter types
- [Properties] Improve display of inherited parameters
- [UX] Improve Trackpad support (Mac only)
- [UX] Modernize panning when reaching border of graph while selecting
- [UX] Remove 'Disable High DPI' functionality
- [Branding] New branding for Splash Screen and About window
- [Gradient Map] Add a way to shift all keys and loop
- [Library] Switch all default filters to sentence case
- [API] Add method to frame a specific node in the Graph View viewport
- [API] Add method to open a package resource in its editor (E.g., a Substance graph in the Graph View)
- [API] Add method to select a package resource in the Explorer (E.g., a Substance graph)
- [API] Add methods to get and set the graph type of a Substance compositing graph
- [ThirdParty] Follow 2023 VFX platforms recommendations
- [ThirdParty] Follow 2024 VFX platforms recommendations
- [ThirdParty] Update Boost to 1.82.0 + USD to 23.08
- [ThirdParty] Update NGL to 1.38
- [ThirdParty] Update OpenColorIO to 2.3.x
- [ThirdParty] Update OpenExr to 3.2.x
- [ThirdParty] Update OpenSubdiv to 3.6.x
- [ThirdParty] Update Python to 3.11.x
- [ThirdParty] Update Qt to 6.5.x
- [ThirdParty] Update gcc to 11.2.1
- [ThirdParty] Update glibc to 2.28
- [ThirdParty] Update libstdc++ ABI to C++11 one
- [Documentation] New 'Glossary' page
Fixes
- [Bakers] Crash when rebaking a scene which filename was changed
- [Bakers] Crash when saving bakers preset to JSON file
- [Content] 'Scatter on spline': Expose Input image alpha parameter
- [Content] 'Tile Sampler Color': missing visibleif expression
- [Content] Anisotropic Noise: negative value for X/Y amount produces wrong result
- [Content] Anisotropic Noise: tiling issue when using odd value as X amount and no smoothness
- [Content] Normal Distrib function: incorrectly placed max() can lead to NaN
- [Content] RTAO, Bent Normal and RT Shadows do not work correctly on some platforms
- [Content] Shape Splatter Blend Color: OpenGL normal maps are not blended correctly
- [Content] Unwarranted space after 'Multi' prefix in node labels
- [Dependencies] Crash when moving graph within or across packages
- [Engine] Precision error in Warp nodes impacting the Slope Blur nodes
- [Engine] SBSAR layer in SD is unable to read SBSAR with SBSASM content > 2GB
- [Function graph] Incorrect result for 0^n
- [Graph] 'Display node size' option is mislabelled
- [Graph] Crash when copying a parented comment to another graph
- [Graph] Freeze when alt-dragging a Dot node
- [Graph] Node search can miss obvious matches in some cases
- [Graph] Performance issue when editing a function graph instanciated multiple times with supergraph opened
- [Graph] Too many invalidations when creating an output
- [Security] ICO Parsing Out-Of-Bounds Write Vulnerability
- [Security] Deprecate some unused image format
- [Parameters] Bitmap PKG Resource Path should not be editable
- [Parameters] Fix issues related to exposing/batch exposing the parameter of a value processor
- [Parameters] String parameters are ignored when batch exposing
- [Properties] Performance issue when editing a function graph instanciated multiple times with properties opened
- [SVG] Edits to shapes are not applied in rasterised image
- [UI] Fix some bugs/inconsistencies with scrollable widgets (Windowss only)
- [UI] Inconsistent order of 3D scene file formats in import/export lists
- [UI] Window's actions are duplicated in the UI
- [Version Control] 'perforce.py' script does not work on Python 3