Introduction

In part one of the Texture Design series, we looked at a number of different types of tools and methods by which textures can be created. In this second part of the Texture Design series, I thought it would be helpful to cover the various types of components used by texture authoring software to create procedural textures, as well as demonstrate a number of ways these components are used.

A lot of the same principles and techniques tend to work in regular photo editing software like GIMP, though the functions are applied through using filters and layer blending. The process is still similar enough to produce reasonable results, if you do not want to use a texture authoring tool like Material Maker or TextureLab. Just keep in mind that most modern development pipelines do not tend to use photo editing software for this type of work, so depending on your needs, it may be advantageous learning to work with texture authoring software. 

This Texture Design series is intended to be a type of reference material while working on your own textures, and not necessarily a how-to or step-by-step instructional guide for any particular tool. Also keep in mind that I am by no means a professional texture artist, I merely wish to share the things I have learned while designing various textures for Screaming Brain Studios. There may be some details or terminology that I get wrong from time to time, but I will always update these tutorials to correct any errors.

A quick clarification of terminology is needed here: When I use the term Texture, I am referring to the final completed render at the end of the render pipeline, such as a red brick wall. Any time I use the term Material, I am referring to a component of the texture itself, such as the clay that makes up the bricks or the mortar in between them.

Generators

Generators are one of the building blocks that are used to create procedural textures. Each texture authoring tool has its own unique set of Generators, though many of the tools share similar features or generator types. A Generator is a type of component that is capable of outputting a specific mathematical function, and often include things like solid shapes, noise, bricks, tiles, gradients, solid colors, or complex patterns. Some Generators can even function in such specific ways that they are capable of outputting organic patterns, such as wood or fibers. The resulting output of Generators is a base component referred to as a texture primitive. The very first component in every procedural texture is most likely a type of Generator, and every procedural texture begins with one of these texture primitives.

Cells / Bricks / Gradient / Weave / Wood

Unfortunately, Generators are rather specific to texture authoring software, such as TextureLab or Material Maker, and you will not actually find this type of feature in image editing software like GIMP. This is not to say that you can’t use GIMP to create textures, as there are a few ways to create texture primitives using filters or plugins. In other cases, you simply have to find an alternative method to produce certain components and then import them into GIMP to make use of them. There are several Screaming Brain Studios asset packs specifically designed for this type of use, including the Gradient Texture PackNoise Texture Pack, and the Abstract Noise Pack. Each of these packs contains the resulting renders of various Generators from different texture authoring tools.

Each available Generator also has a number of parameters and settings that can be tweaked by the user to change different aspects of the output, allowing for an incredibly wide variety of designs and styles. For example, each of the texture maps below was produced using the same Brick Generator as the example bricks from above.

Variations of the Same Brick Generator

In many cases, it is also possible to set properties like opacity, blending modes, or even the ability to apply additional effects such as colors or smoothing to the Generator result, depending on the software you are using.

I mentioned in Part 1 of the Texture Design series that the very base component of most textures is often a Solid ColorNoise, or a Gradient. These are each produced by a specific type of Generator, and each has a number of different uses, depending on what you are attempting to do. For example, you may use one Generator to produce the outline of some bricks, a second Generator to produce a gray and brown rocky material using some Perlin Noise, and a third Generator to create a black and white grainy heightmap to apply some grit to the texture.

Most texture authoring software also has a Generator or node for the importing of photographs or existing images, allowing the image to be manipulated or transformed, as well as combined with other components to produce an entirely new texture. Some software even has the ability to perform various Texture Synthesis methods, so imported images can be re-scaled or sampled to make new textures. Sometimes it is even desirable to utilize parts of a photograph or existing texture as a material in your pipeline. This can not only save time, but it is useful when you have several existing materials you wish to use across multiple texture designs. 

Gradients

You probably already know what a Gradient is, if you have ever done any type of graphic work at all. For anyone that is uncertain, a Gradient or Color Gradient is a range of colors (black to white, blue to green, red to orange to yellow to red, etc.) with a gradual blend from one to another. It is even possible for Gradients to consist of sharp color changes instead of smooth blends, depending on the software you are working with, and in most cases, you can control the angle or shape of the gradient as well. They can be single color, bicolored, or even multicolored depending on your requirements. Just about every graphic editing software today tends to have some sort of Gradient tool available, making them incredibly easy to create.

Angled / Circular / Lines / Sine / Vertical

As you can see in the example image above, each Gradient has a different shape, and not every possible shape is shown here. There are many different shapes including Square, Saddle, Pyramid, or even Spiral gradients. It is also possible to produce custom gradients by combining different components, or through the application of various filters and mixing them with noise functions. The most common shapes of gradient found in most graphic software are LinearRadial, or Conical

Linear / Radial / Conical

Gradients are a type of component that can be used for a variety of different purposes, including applying color to the texture as color palettes, to perform shading and blending effects, or even as heightmaps. It is also possible for Noise to be used to do similar things, like shading, blending, or as heightmaps, but Gradients tend to be combined with different Noise functions to produce specific color or blending effects. You can combine these with different types of Mixing to produce color blends or even produce surface displacement and warping.

For anyone using GIMP, you can easily create all kinds of different Gradients using the Gradient Tool. This can be found if you click and hold on the Bucket Fill tool, then subsequently selecting the Gradient Tool.

Gradient Tool in GIMP

Activating the Gradient Tool will bring up the Tool Options panel on the left where you can change settings including the blend mode, color palette, or the gradient shape. This is also where you can set up custom color palettes for your gradient to utilize. You can then select multiple endpoints on the canvas to adjust the gradient, or you can enter the positions manually using the Start Endpoint and End Endpoint dialog windows.

Square Gradient Made in GIMP

The process for making Gradients is essentially the same in just about any image editing software you could find today, though texture authoring software often has more customization options or built-in features to affect the final output of the gradient generator.

One incredibly useful function of Gradients is to blend materials together, by using the Gradient as a Mask. We will talk more about Masks later on in the tutorial. Some tools allow you to control specific ranges of texture blending, based on the light and dark values in the Gradient, while working with image editing software like GIMP utilizes layer blending to pull off the same techniques.

Base Materials Blended with Gradients

In the above example, you can see a few simple variations of texture blending using a Gradient as the blending mask. With properly designed Gradients and terrain materials such as dirt or grass, you can create terrain blends for things like pathways, roads, and even tile-sets or autotiles for game engines that have believable transitions between the materials.  

Noise

When we talk about Noise in the realm of images and computer graphics, we are sometimes referring to the light and dark values of an image that appear to give graininess or speckling. Though when we are talking about Noise in a texture design context, we are typically talking about Noise Functions, which can include a variety of different types, such as Gradient Noise, Value Noise, and any number of sub-types such as Perlin, Voronoi, or Simplex noise.

Perlin / Blobs / Water / Veins / Voronoi

Noise is a type of component or texture primitive that is used to produce all kinds of different material patterns, such as rocky surfaces, rippling water, cracked paint, fluffy clouds, or even heightmaps for displacing the texture in numerous ways. It is through the creative combination of NoiseGradientsFilters, and Blend Modes that countless materials can be produced. Texture authoring software often allows you to select a gradient or color palette to use when generating Noise or allows you to combine colors and gradients with the Noise through the use of a blending or mixing node. This is also sometimes referred to as colorizing.

Perlin / Blobs / Water / Veins / Voronoi

In the example image above, you can see the same styles of Noise as the previous example image, only with various Gradients applied to colorize the Noise. Already, this gives you a bit of an idea how simply combining Noise and colored Gradients can begin to produce more intricate patterns or materials. Each type of Noise is suited to different types of uses and selecting the right kind for the job can take some practice or trial and error.

  • Perlin – Resembling clouds, Perlin Noise is useful for all kinds of natural patterns like marble, stone, terrain, water, or stucco.

    Perlin Noise / Clouds, Terrain, Marble

  • Voronoi – Resembling cells, Voronoi Noise has a structured appearance useful for things like ice, crystals, stained glass, cracked surfaces, or rock formations.

    Voronoi Noise / Shaded Stone, Beveled Stones, Ice Crystals

  • Gabor – Resembling worms or streaks, Gabor Noise has a rippling or striped appearance useful for liquids, fabrics, or natural features like sand.

    Gabor Noise / Water, Sand, Liquid

  • Turbulence – Resembling smoke, Turbulent Noise tends to work great when making fabrics, fluids, or metals.

    Turbulent Noise / Fabric, Molten Rock, Shiny Metal

  • Worley – Resembling spheres or cells, Worley Noise has many configurations that are useful for natural features like stones, lava, water caustics, and even animal skin.

    Worley Noise / Agate, Magma, Flagstones

These are just a few different types of Noise and different ways they can be used to produce a wide variety of materials with characteristics. Perlin Noise is one of the most frequently used types of noise functions, and it can be used to produce everything from simple materials to complex terrain mapping. Worley Noise is a little bit different and has a cellular structure, which can be used to produce everything from water caustics to animal scales. Some of these Noise types are actually sub-categories of another Noise function. Voronoi Noise for example, is a type of Worley Noise. This is also referred to as Cellular Noise, due to the way it has the appearance of ‘cells’ or blobs.

Keep in mind, you won’t always have access to every type of Noise in every tool, and each tool may have their own sub-categories or specific names for the different types of Generators. It is always possible to generate a specific type of Noise with one tool and import it into another.

Masks

Another important component in creating textures is the Mask. Since we discussed Gradients and Noise in the previous sections, we can jump right in and quickly explain a key point. While Masks can actually be composed of either Gradients or Noise, or combinations of both, their function is rather different. Anyone who has already worked with tools like GIMP or Photoshop may already have an idea what Masks are, but for anyone who is unfamiliar, a Mask is normally used to block out, or ‘mask’, certain areas of the texture when applying another function or operation to the texture.

Various Types of Masks

These are by no means the only ‘types’ of Masks. In fact, most of the time you will be creating masks out of the same materials you are working on. Almost anything could actually act as a Mask, depending on what it is you are attempting to do, but it is common to work with either grayscale or black and white Masks. The texture blending example in the section on Gradients is an example of a gradient being used as a Mask to tell the software how much of each base material to render, depending on where the light and dark values are in the Gradient. If we were to use the checkered Mask from the example above, the resulting texture blend would look like this instead:

Base Materials Combined with Checkered Mask

So far, we have only looked at the way Masks can be used to blend materials together. Another way Masks are used is to block out areas of a material so when a function or filter is applied, only the uncovered areas are affected. Any area containing a white pixel will be at full opacity, any area containing a black pixel will be fully transparent, and values between white and black will be semi-transparent. This is useful for adding things to a material like wear-and-tear or erosion, isolated color adjustments, complex shadows, or lighting effects. This is also commonly referred to as an Opacity Mask.

Mask / Masked Color Change, Masked Blur, Masked Emboss, Masked Shader

In the example image above, you can see several different ways to use a Mask to add different types of effects to a material. The areas of the Mask that contain white, or lighter values, get affected by changes, whereas the areas that contain black, or darker values, are blocked out and left unaffected. If you invert the colors of the Mask, you can affect the parts of the material that were previously unaffected. Often you will use multiple masks to create your final texture, especially if you are designing something more complex like a cottage wall with wooden beams or window frame with shutters.

Mixing

Another important part of the texture design process is Mixing. Also sometimes referred to as Blending, this is when two or more texture components are combined together to form a composite, either by combining color values or applying some type of distortion or displacement. This could be something as simple as combining a colored Gradient with some Perlin Noise so that the resulting output resembles a blue sky with white clouds, or as complex as combining a heightmap with a steel material to produce the appearance of raised panels. It is also very common to use Masks in conjunction with Mixing to maintain control over which parts of a material are affected by any mixing operations.

Various Noise Masks Used for Displacement

One method applied by some texture authoring software involves mixing a Mask with a source material to produce a warp or displacement effect. In the example image above, you can see a number of different types of masks being used as Opacity Masks and/or as displacement maps to alter the way the material is displayed. Different texture authoring software will have access to different types of Filters or nodes for warping, displacement, and other useful effects, making this process easier than if you were doing it with regular image editing software like GIMP

Most texture authoring tools as well as image editing software also have ways to mix materials together using a number of different color blending algorithms. The way image editors such as GIMP do this is by using layers and Blend Modes, which you can change using the drop-down menu whenever you have a layer selected. Each tool has its own specific mixing or blend modes available, but some of the most common mixing algorithms found in just about any available tools are AddSubtractMultiplyDivide, DifferenceBurnDodgeLightenDarken, or Screen.

  • Add – Takes the input material or layer color values and adds them together, resulting in a brightening effect. This can be used for light or glowing effects.

    Add/Additive Blend Mode

  • Subtract – Takes the input material or layer values and subtracts them from the base color values, resulting in a darkening effect. This can result in pure black depending on the colors in the mixed materials.

    Subtract/Subtractive Blend Mode

  • Multiply – Takes the input material or layer color values and multiplies them, resulting in a darkening effect. This can be great for producing shadows or darkening certain areas of a texture.

    Multiply/Multiplicative Blend Mode

  • Divide – Takes the input material or layer colors and divides the background colors by the foreground colors. This is essentially the opposite of Subtract.

    Divide Blend Mode

  • Difference – Takes the input material or layer color values and subtracts them from the base color values before recombining them with the base color values again. Useful for creating strange color blends or inversions.

    Difference Blend Mode

  • Burn – Takes the input material or layer color values and raises the contrast of the base colors, resulting in an overexposure effect. This can be used to create a washed-out effect.

    Burn Blend Mode

  • Dodge – Takes the input material or layer color values and reduces the contrast of the base colors, resulting in a brightening effect. Useful for applying saturation to the mid tones.

    Dodge Blend Mode

  • Lighten – Takes the input material or layer color values and compares them to the base colors and keeps the lighter of the two.

    Lighten Blend Mode

  • Darken – Takes the input material or layer color values and compares them to the base colors and keeps the darker of the two.

    Darken Blend Mode

  • Screen – Takes the input material or layer color values and multiplies them with the inverted values of the base colors before inverting them again. This is essentially the opposite of the Multiply blend mode.

    Screen Blend Mode

There are a number of other types of blend or mixing modes, but these are generally the ones you will find in most tools. These different blend modes allow you to combine texture primitives and materials into more complex designs. For instance, you can use the Multiply blend mode to combine a material with a bump or heightmap to produce a simple shadow effect. Often this blend mode is used for restoring contrast and detail in photo retouching.

*This tutorial will be expanded over time! Part 3 Coming Soon!

Base Materials

A process that I follow is to first create a number of base materials, working my way up to more detailed and intricate materials. These base materials are plain, mostly featureless component materials that make up my final texture. I gave an example of this in Part 1 of the Texture Design series where a brick texture was composed by using two base materials and a mixing mask. The example image below shows a number of different base materials created using various processes and using different types of NoiseGradients, or Masks to achieve different types of surfaces.

Example Base Materials

When working on a new texture, I find that it helps to look up a number of existing images or photographs online to use as a frame of reference. With a reference image, you can try to break your texture down to its component parts. I’ll use the brick wall texture as an example again here. Looking at an existing photograph of a brick wall, we can first begin to divide it into base materials by examining the color differences and different substances that exist in the real-world image.

The most apparent substances here are the reddish clay making up the bricks and the white gritty mortar holding them together. The very first thing I want to do is create some texture primitives and work my way up to having a base material for the red clay and a base material for the gritty white mortar.