10.2. Specular Reflection

Relevant to Blender v2.31

Unlike Diffusion, Specular reflection is viewpoint dependent. According to Snell's Law, light striking a specular surface will be reflected at an angle which mirrors the incident light angle, which makes the viewing angle very important. Specular reflection forms tight, bright highlights, making the surface appear glossy (Figure 10-3).

Figure 10-3. Specular Reflection.

In reality, Diffusion and Specular reflection are generated by exactly the same process of light scattering. Diffusion is dominant from a surface which has so much small-scale roughness in the surface, with respect to wavelength, that light is reflected in many different directions from each tiny bit of the surface, with tiny changes in surface angle.

Specular reflection, on the other hand, dominates on a surface which is smooth, with respect to wavelength. This implies that the scattered rays from each point of the surface are directed almost in the same direction, rather than being diffusely scattered. It's just a matter of the scale of the detail. If the surface roughness is much smaller than the wavelength of the incident light it appears flat and acts as a mirror.


It is important to stress that the Specular reflection phenomenon discussed here is not the reflection we would see in a mirror, but rather the light highlights we would see on a glossy surface. To obtain true mirror-like reflections you would need to use a raytracer. Blender is not a raytracer as such, but it can produce convincing mirror-like surfaces via careful application of textures, as will be shown later on.

Like Diffusion, Specular reflection has a number of different implementations, or specular shaders. Again, each of these implementations shares two common parameters: the Specular colour and the energy of the specularity, in the [0-2] range. This effectively allows more energy to be shed as specular reflection as there is incident energy. As a result, a material has at least two different colors, a diffuse, and a specular one. The specular color is normally set to pure white, but it can be set to different values to obtain interesting effects.

The four specular shaders are:

Thanks to this flexible implementation, which keeps separate the diffuse and specular reflection phenomena, Blender allows us to easily control how much of the incident light striking a point on a surface is diffusely scattered, how much is reflected as specularity, and how much is absorbed. This, in turn, determines in what directions (and in what amounts) the light is reflected from a given light source; that is, from what sources (and in what amounts) the light is reflected toward a given point on the viewing plane.

It is very important to remember that the material color is just one element in the rendering process. The color is actually the product of the light color and the material color.