<h2 id="foreword">Foreword</h2>
<p>When I was last full indie, I kept extensive notes on the tools I used. I stored these in private Google Docs, and still maintain them in archives. Going ahead with this new venture, I'll be keeping notes on this site and making them public. I hope I help you learn something. This series details Substance Designer and Painter.</p>
<h2 id="launcher">Launcher</h2>
<p>The only time the Launcher needs to be open is when using the Source to Substance functionality. Otherwise it seems to do something in the background and has a bad memory footprint.</p>
<h2 id="designer">Designer</h2>
</ul>
<h3 id="d_nodes">Nodes</h3>
<ul>
<li><strong>Make It Tile:</strong> fixes tiling seams after non-uniform scaling.</li>
<li><strong>Levels:</strong> changes contrast and brightness of images. Top arrow sliders control <em>Levels In</em>, bottom <em>Levels Out</em>
<ul>
<li><strong>Levels In:</strong> expand the range of values by redefining lowest black and highest white points. <em>Increases</em> contrast.</li>
<li><strong>Auto Levels:</strong> finds lowest black and highest white and clamps values within this range.</li>
<li><strong>Levels Out:</strong> limits and shrinks range of values. Establishes minimum and maximum output values. <em>Reduces</em> contrast, useful for setting absolute height of components.</li>
<li><strong>Invert:</strong> cheaper than using an <strong>Invert Grayscale</strong> node.</li>
</ul>
</li>
<li><strong>Histogram Scan:</strong> <strong>Levels</strong> function use to shrink/grow masks by simplifying controls.
<ul>
<li><strong>Position:</strong> compresses <em>Levels In</em> uniformly.</li>
<li><strong>Contrast:</strong> slides compressed <em>Levels In</em> uniformly.</li>
</ul>
</li>
<li><strong>Histogram Shift:</strong> offsets entire range of values. Easy re-randomization of noise maps.</li>
<li><strong>Histogram Range:</strong> squashes height map with <em>Range</em> and move it up or down with <em>Position</em>.</li>
<li><strong>Histogram Select:</strong> selects band in image with <em>Position</em> and slopes out in two directions from there with <em>Range</em>. Useful for selecting low or high areas in height maps for adding dirt/erosion.</li>
</ul>
<h3 id="d_height">Height Mapping</h3>
<ul><li>Use <strong>Blur HQ Grayscale</strong> on Shape Nodes to soften form edges and remove artifacting.</li>
<li>Use <strong>Levels</strong> to raise or lower overall height on forms.</li>
</ul>
<h3 id="d_blending">Blend Modes</h3>
<p>The following content is extrapolated from the Substance Academy series "<a href="https://academy.substance3d.com/courses/Mastering-Blending-Modes" target="_blank">Mastering Blending Modes</a>".</p>
<h4 id="d_blend_keyterms">Key Terms</h4>
<ul><li><strong>Commutative:</strong> the order of the layers is irrelevant.</li>
<li><strong>Noncommutative:</strong> the order of the layers changes the output.</li>
</ul>
<h4 id="d_blend_add">Add (Commutative)</h4>
<ul><li>Add increases (brightens) values.</li>
<li><strong>Masks:</strong> <em>adds</em> the white (visible) areas of the input nodes together.</li>
<li><strong>Height:</strong> acts as an <em>outward</em> extrusion. The higher the white value, the taller the sculpted result.</li>
<li><strong>Use:</strong> build layers of detail.</li>
</ul>
<h4 id="d_blend_subtract">Subtract (Noncommutative)</h4>
<ul><li>Substract decreases (darkens) values.</li>
<li><strong>Masks:</strong> removes (subtracts) areas from the mask, making them black (invisible).</li>
<li><strong>Height:</strong> acts as an <em>inward</em> extrusion. The higher the white value, the flatter the sculpted result.</li>
<li><strong>Use:</strong> flatten areas while preserving detail.</li>
</ul>
<h4 id="d_blend_multiply">Multiply (Commutative)</h4>
<ul><li>Multiply decreases (darkens) values.</li>
<li><strong>Masks:</strong> acts as a union (and) operation, combines overlapping white values from input nodes and discards the rest. Gray values darken.</li>
<li><strong>Height:</strong> simliar to subtract, but smoothly scales pixels down rather than flattening them out.</li>
<li><strong>Use:</strong> combining masks and smooth scaling of height detail.</li>
</ul>
<h4 id="d_blend_divide">Divide (Noncommutative)</h4>
<ul><li>Rarely used, edge-case use.</li>
<li><strong>Use:</strong> combining noises with slight differences, highlighting those differences (offset, disorder).</li>
</ul>
<h4 id="d_blend_min">Min (Commutative)</h4>
<ul><li>Picks the <em>lowest</em> value from top or bottom input.</li>
<li><strong>Masks:</strong> harsher than multiply, gray will obliterate white.</li>
<li><strong>Height:</strong> like a boolean intersection operation, only keeps volume in both inputs.</li>
<li><strong>Use:</strong> mask combine with smooth transition and height cutting with hard edges.</li>
</ul>
<h4 id="d_blend_max">Max (Commutative)</h4>
<ul><li>Picks the <em>highest</em> value from top or bottom input.</li>
<li><strong>Masks:</strong> softer than add, keeps bright areas when combining.</li>
<li><strong>Height:</strong> like a boolean union operation, combines volumes from both inputs.</li>
<li><strong>Use:</strong> smoothly combined masks and to add layers of height detail.</li>
</ul>
<h4 id="d_blend_addsub">AddSub (Noncommutative)</h4>
<ul><li>If the top input is higher or lower than 0.5, it will respectively lighten or darken the result. At 0.5 makes no change.</li>
<li><strong>Masks:</strong> only affects transitions. Top input needs blurry transition, bottom needs detail values.</li>
<li><strong>Height:</strong> better to use seperate Add and Substract operations for greater control.</li>
<li><strong>Use:</strong> to break up edges of transitions in masks, mixing grunge maps.</li>
</ul>
<h4 id="d_blend_overlay">Overlay (Noncommutative)</h4>
<ul><li>Combination of Multiply and Screen, smoother fading bright areas and smooth dark areas.</li>
<li><strong>Masks:</strong> adds bright and dark areas to base mask.</li>
<li><strong>Height:</strong> </li>
<li><strong>Use:</strong> smoothly brighten and darken masks in 1 step, combine top small detail input with bottom large detail input.</li>
</ul>
<h3 id="d_jro_notes">JRO Notes</h3>
<h4 id="d_jro_general">General</h4>
<p>I purchased a few packs of annotated Substances from JRO. Once you understand the basics of how a Substance graph works, one of the best ways to learn more is to unpack an existing graph and see how the results were produced. These particular graphs are reasonably well organized and have plenty of additional notes.</p>
This graph collected all the noises into a single Frame to avoid re-use. Clever, but makes for a lot of stretched connections. At the time of writing, I still don't fully understand the implications of the render time.
Low intensity (0.01-0.001) Slope Blur Grayscale with the same top and bottom inputs can be used to "expand" noises.
Right-click a Layer → Instatiate across texture sets... (Ctrl+Shift+D) → Select Texture Sets.
Now any updates made to parent Layer will be reflected in other Texture Sets.
From the overview in the Academy video series, Alchemist is used to preview and export visual collections of materials. There's an Inspire function that extracts color palettes from images and uses them to generate material variations. Furthermore, it uses a generative layering technique that simplifies what happens in Designer, allowing a less technically-inclined artist to simply layer Substance materials on top of each other and use exposed parameters to non-destructively achieve variations.
Alchemist supports full blend masking, with an internal mask drawing tool that can generate new ambient occlusion and leverage height data.
As of 14.11.2020 the Image to Material (AI) node is trained for ground surfaces, and will give best results with such inputs.
2021.01.03
Next: Articy Draft 3 Notes
Previous: Project Zero Three - Ball Of Steel
Home