Surface textures

Remember that each material on an object in a 3d scene has different channels that describe different aspects of a surface. Typically you will have one texture for each of these channels (though more are possible in complex systems). For each of these channesl you can think of the texure use as a set of "instructions" for how that aspect of the surface should be rendered, but in a visual format.

Diffuse / Albedo Seriously, screw this naming convention. / Color Maps

A diffuse or color map has the obvious purpose of holding the base color for any given point on a surface. This is typically the starting point of any material.

The multiple names you might see used in various software environments comes from pretentious computer graphics artists. There is no difference in the way a piece of software will see a so called "diffuse" or "albedo" map. The difference is semantic and describes the way artists used to create subtle lighting effects within the image for diffuse maps and stuck with pure surface color for physical rendering while using albedo maps. In practice there's no reason the map created had to change based on the engine however. Because there's so little difference we will simply be referring to them as color maps.

Let's look at the different maps as they layer upon one another. To start with we have a simple brick / tile texture applied to a four-sided polygon (and a few random spheres in front of it). While there is a light in the scene the objects themselves have surface color only.

Bump Maps (Greyscale)

Greyscale bump maps are a quick way of defining detail on an object. The grout areas in the image you see here now have the appearance of "depth" via the use of a bump map (note how it reacts to the direction of the light). Greyscale bump maps *DO NOT* change the hue or saturation of a surface color but *DO* change the brightness of it.

Remember, this is a surface texture only, it is not adding or removing polygons in any way. The plane in the example is a simple quad. If you were to look at a 2d plane with a bump map applied from the side it would still disappear because it is still a two dimensional object.

To be honest there is little use for greyscale bump mapping in this day and age. It really served as more of a stop gap between non-bumped CG and normal mapping (described below).

The Specular channel

The idea of "specular" is not something that actually exists in the real world. What we think of as specular is just a form of reflection.

There are two images for this example because in many cases you'll be allowed to turn on, and adjust, the specular channel without a map. With no map a specular sheen is simply applied across the entire surface area without variation. Depending on the object this can be perfectly ok. For instance a drinking glass or a pastic toy which are both made out of one substance may have the same shiny look to them all over. But many objects don't have the same shiny look all over, a shiny knife with a rough wood handle, or a car with a winshield more reflective than the body which is in turn more reflective then the tires. In these cases we require a way to control *where* the specular map is applied.

The first image has no specular map so the "shine" is applied to the entire plane. Notice that both the brick and the grout areas are shiny.

The second image has a specular map defined (using a greyscale image) which allows some parts of the surface to be shiny and preventing others from being shiny at all. This gives the impression that the bricks are smoother and more reflective than the grout in between them.

Careless use of specular maps is often the cause of the "plastic" look many computer generated images have.

Reflection Channels

While most rendering algorithms use the raytracing method to find a surface with a single ray, and then show the information of that surface point alone, they can also utilize bouncing rays to find objects from the point of view of that surface. This is exactly what it sounds like, a ray is cast out from the viewer's position, hits a surface for an initial sample, and then bounce off of that surface to find another object and sample that surface as well. Just as in real life this change of direction is dependent on the angle of the surface. In complex rendering it's not impossible for a ray to bounce many times before it reaches a predefined stopping point.

Just as with the specular channel, the reflective channel in most 3d programs can exist with or without a texture map, where the entire object will appear reflective if a map is not defined. With that in mind, let's go straight to how a texture map can be utilized.

The example image now has the appearance of "wetness" to it, as if a puddle of water is standing within a dip in the ground, and is now reflecting the spheres in front of it. This is accomplished by shading only the center of our (greyscale) map and leaving the outer area. In this case we've also shaded the same area where the grout exists in the color map to give the appearance of the water filling the nearby grout grooves.

Normal Maps

Firstly; the Unity Game Engine Documentation Web Site has an excellent explanation of what normal maps are and how they work if you'd like to read that.

A Normal Map is a special kind of bump map. Effectively they do the same thing and give the "impression" of minor surface geometry without actually adding geometry. The difference is that a normal map will do so more accurately and effeciently. But how?

To understand how a normal map works we have to keep in mind a concept of geometry.

The 3 numbers (X, Y, Z) we use to store positions can also store directions. From any given point a value of "0,10,0" can describe a movement of 10 units straight up in a system where "y" is up. This idea is akin to a "vector", "velocity" or "magnitude".

At the same time we just happen to store color values using 3 numbers (Red, Green, Blue).

Therefore it is possible to encode 3D vector directions into the pixels of a 2D image. HOW COOL IS THAT?!?!

In a way we really only need two of the channels. Say we keep the surface direction for X rotation in our Red Channel and the surface direction for Y rotations in our Green Channel. In this setup one possible conversion would be that a Red value of 255 means the surface is facing fully right while a Red value of 0 means the surface is facing fully left. At the same time a Blue value of 255 means the surface is facing fully up while a Blue value of 0 means the surface is facing fully down.


Procedural textures


Changing Geometry with textures


xxxxxxxxxxx xxxxxxxxx xx xxxxxxxx xx xxxxxxxxxx xx xxxxxxxxxx xx xxxxxxxxxx xx xxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxx

    • list
    • list
    • list
figure column.