Computing Specular Highlights
Introduction
Welcome back to the fourth lesson of Realistic Lighting with the Phong Model! We've made excellent progress implementing ambient and diffuse lighting components, creating a cube that exhibits natural directional shading and three-dimensional depth. Now we're ready to add the final and most visually striking component: specular highlights. These bright, mirror-like reflections are what make surfaces appear shiny and wet, from the glint on a polished apple to the gleam on a metallic surface. Specular lighting responds to both the light source's position and the viewer's perspective, creating highlights that move and dance as we navigate around our scene. By the end of this lesson, we'll complete the full Phong lighting model, transforming our matte-looking cube into a surface with convincing material properties that responds realistically to both illumination and viewing angle.
Understanding Specular Highlights
Specular highlights represent the mirror-like reflection of light sources on surfaces, creating the bright spots that make materials appear glossy, wet, or metallic. Unlike diffuse lighting, which scatters uniformly in all directions, specular reflection follows the law of reflection: light bounces off the surface at the same angle it arrives, but in the opposite direction. This directional behavior means that specular highlights are highly dependent on the viewer's position relative to the surface and light source. When we look at a shiny ball, the bright highlight moves as we change our viewing angle because we're seeing the direct reflection of the light source. In computer graphics, we simulate this phenomenon by calculating the angle between the reflected light ray and the direction toward the viewer's eye, creating highlights that appear most intense when these directions align perfectly.

The Mathematics of Reflection
The foundation of specular lighting rests on computing the reflection vector, which represents the direction that light would bounce off a surface following the law of reflection.
The reflection vector is calculated using the surface normal and the light direction . This formula elegantly captures the physical law that the angle of incidence equals the angle of reflection.
The intensity of the specular highlight is computed using the following formula:
Here, is the specular reflection coefficient (controlling the brightness of the highlight), is the reflection vector, is the normalized view direction (from the surface point to the camera), and is the shininess factor that determines the sharpness of the highlight. The dot product measures how closely the viewer's direction aligns with the reflection direction, and raising it to the power of creates the rapid falloff characteristic of specular highlights.
Once we have the reflection vector, we compute the specular intensity by taking the dot product between the reflection direction and the view direction , then raising it to a power called the shininess factor. This exponential relationship creates the characteristic sharp falloff of specular highlights: surfaces appear brightest when the reflection direction perfectly aligns with our viewing direction, but the intensity drops rapidly as the angle increases.

