Diffuse and Specular Reflection

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

Visualize the effects of Mathematica's default lighting on a color wheel of spheres with adjustable diffuse and specular reflectivity. By default all seven spheres have the same color specular reflectivity, which is controlled by the upper section’s color slider and indicated by the monochromatic wheel icon. The six perimeter spheres have red, yellow, green, cyan, blue, and magenta diffuse reflectivity and the central sphere is an achromatic diffuse reflector, which is indicated by the polychromatic wheel icon. The lower section’s lightness slider controls all seven spheres’ diffuse reflectivity. The bottom checkbox exchanges the roles of the diffuse and specular color controls so that all seven spheres have the same diffuse reflectivity, but the polychromatic wheel arrangement of specular reflectivities. Note that the specular exponent control moves between the upper and lower section so as to always accompany the specular color or lightness control.

Contributed by: Christopher Haydock (Applied New Science LLC) (March 2011)
Open content licensed under CC BY-NC-SA



In the first three snapshots, the spheres vary in diffuse reflectivity.

Snapshot 1: no specular reflectivity

Snapshot 2: adds specular reflectivity at the same moderate exponent as in the main output graphic, but with both diffuse and specular reflectivity increased so that the total intensity of light reflected from polygons facing the light sources is generously larger than 1

Snapshot 3: a high specular exponent with the reflectivities decreased to keep all reflected light intensities less than 1

Snapshots 4-6: The spheres vary in specular rather than diffuse reflectivity. The diffuse reflectivity is absent or at a very low level so that the effect of varying the specular exponent is emphasized. Note that a specular exponent of 1 gives reflectivity somewhat similar to diffuse reflectivity, but not quite the same because the reflected intensity depends on the difference between the viewing angle and the specular reflection angle rather than the angle between the incident light and the surface normal.

The lightness control crudely approximates the Munsell color system’s vertical axis; see the Wikipedia articles on lightness and relative luminance. The RGB values are manipulated in a simple way (see the source code), so that the perimeter sphere’s colors are fully saturated at lightness 1/2, smoothly decrease to black at lightness 0, and increase to white at lightness 1.

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.