Previous:Highlights Main Index Next:Iridescence

#### Specular Reflection

When light does not diffuse and it does reflect at the same angle as it hits an object, it is called specular reflection. Such mirror-like reflection is controlled by the `reflection` keyword in a `finish` statement. For example:

      finish { reflection 1.0 ambient 0 diffuse 0 }

This gives the object a mirrored finish. It will reflect all other elements in the scene. Usually a single float value is specified after the keyword even though the syntax calls for a color. For example a float value of 0.3 gets promoted to the full color vector < 0.3,0.3,0.3,0.3,0.3> which is acceptable because only the red, green and blue parts are used.

The value can range from 0.0 to 1.0. By default there is no reflection.

Adding reflection to a texture makes it take longer to render because an additional ray must be traced. The reflected light may be tinted by specifying a color rather than a float. For example

       finish { reflection rgb <1,0,0> }

gives a red mirror that only reflects red light.

POV-Ray uses a limited light model that cannot distinguish between objects which are simply brightly colored and objects which are extremely bright. A white piece of paper, a light bulb, the sun, and a supernova, all would be modeled as `rgb<1,1,1>` and slightly off-white objects would be only slightly darker. It is especially difficult to model partially reflective surfaces in a realistic way. Middle and lower brightness objects typically look too bright when reflected. If you reduce the `reflection` value, it tends to darken the bright objects too much. Therefore the `reflection_exponent` keyword has been added. It produces non-linear reflection intensities. The default value of 1.0 produces a linear curve. Lower values darken middle and low intensities and keeps high intensity reflections bright. This is a somewhat experimental feature designed for artistic use. It does not directly correspond to any real world reflective properties. We are researching ways to deal with this issue in a more scientific model. The `reflection_exponent` has no effect unless `reflection` is used.

Note that although such reflection is called specular it is not controlled by the `specular` keyword. That keyword controls a specular highlight.

Previous:Highlights Main Index Next:Iridescence