Procedural Rake Brush
For a personal project, I created a procedural rake brush generator to simplify my stylized texturing workflow while still allowing for full art direction. The generator was produced in Adobe Substance Designer, using a combination of Substance graphs for image operations and function graphs for processing parameters.
Customization Options
From the outset, I wanted to take full advantage of Substance Designer's support for procedural generation by allowing the user to adjust every aspect of the brush to suit their needs, with near-instantaneous iteration times. At a high level, the user has the ability to adjust the width, height, warping, and alignment of the brush. Going deeper, the user can control the number of lines in the rake, rotation of individual lines, line width, line width variation, distress to the line, line ends, and line edges, line hardness, offsetting of lines, and warping of the brush stroke.
Generation Process
Generation of the brush is handled in seven distinct stages, each based on user input. In order, these stages include:
- Shaping of the brush, with control over the width, height, and number of lines in the rake.
- Distress along the horizontal and vertical axes of the brush, with control over the amount if distress on each axis.
- Distress to the surface of the brush, with control over the strength of the blended noise.
- Adjustments to the contrast of the brush, with control over the apparent wetness of the brush.
- Warping of the brush using noise to create more organic strokes, with control over the strength of the warp.
- Bending of the brush, with control over the intensity.
- Aligning the brush to the horizontal or vertical axis, with control over the direction.
Usage Examples
In conjunction with the Tile Sampler node, the rake brush generator enables the rapid creation of painterly base texture sets for stylized materials, without the necessity to manually paint individual color, normal, and roughness maps. A version of this workflow can also be used for basic texturing of 3D models, by using baked mesh maps to influence the distribution and properties of brush strokes.