 Let's talk about procedural textures. You've probably heard the term procedural before, as well as the term generated in the context of CG. These terms are practically synonymous. You can often use them interchangeably. However, the full term is actually procedurally generated textures. Procedurally generated is basically where you create a texture using a mathematical formula instead of pixels. Practically, these generated textures can scale infinitely without loss of resolution, and often have a ton of settings you can tweak to get the look you want. It's also much more efficient when it comes to data and file size. There are several kinds of procedural textures to choose from. Let's go ahead and take a look at them by going to our shader editor's add menu and looking through the textures category. Excluding the image, environment, and IES textures, every other texture you see here is a procedurally generated texture. Each of these procedurally generated textures produces a particular pattern, such as wave, gradient, or noise. Feel free to try any of these out, but for this introduction, I'm going to use Voronoi. This is a fracture-like texture that we can go ahead and connect to our base color input of our shader. As you can see, this texture looks a bit like that underwater reflective pattern you get, caustics. There's a few settings for us to play around with in the node we just made, so let's do that. We can change intensity to cells, and that gives us a cool stained glass version of the texture. We can also switch around exactly what kind of distance formula it uses, but feel free to experiment with that. Most importantly, you can change the scale of the texture infinitely, practically speaking. As you can see, no matter how much I zoom in on the texture by scaling it down, there are still no pixels or resolution problems. Now let's say you don't want the color of the texture, but you like the shapes. Luckily, the factor output is a black and white version of the color output. Let's plug that in instead to double-check. As you can see, it is a nice gray-scale version of our texture. So is there a situation why we would prefer gray-scale over color? Well, gray-scale, or factor, is typically great for a number of different kinds of maps, including roughness maps and transparency maps. Let's go ahead and try to plug this into the roughness value. As you can see, the cube becomes shiny during some parts and rough during other parts. This allows the texture to drive exactly how the roughness is distributed across the mesh. It's important to note that sometimes the factor is not just a gray-scale version of the color output. Instead, it could be, for example, the alpha map or, in the case of the brick texture, it outlines the mortar of the brick. Procedural textures can be very powerful, especially when mixed together. So feel free to play around with how each one looks to better understand their algorithms.