Specular ReflectionLecture 27Mon, Nov 10, 2003
Specular ReflectionThe intensity of specular reflected light varies with direction.The maximum intensity is in the ideal direction.Angle of reflection = angle of incidence.
Specular ReflectionSpecular reflection creates the appearance of shininess.Surfaces with a high specular reflection appear very shiny.Surfaces with a low specular reflection appear matte.
Blinn and Phong LightingOpenGL uses the Blinn lighting model of specular reflection.However, we will first study the Phong lighting model since it seems more natural.
Phong LightingThe intensity of the reflection is a function of the angle between the viewer and the ideal direction r of reflection of light from the light source off the surface.
Phong LightingTo compute r, note that r + s equals twice the projection of s onto n.
Phong LightingThe projection of s onto n is(s n)/(n n)n = (s n)nTherefore,r + s = 2(s n)nandr = s + 2(s n)n
Computing Specular ReflectionAccording to the Phong lighting model, the specular reflection is proportional to the cosine of the angle between v and r, raised to a power (called shiny).This is calculated as(r v)shiny
Computing Specular ReflectionTwo other factors areIntensity of the incident light.0 Ls 1.Specular property of the surface.0 ms 1.The formula for specular reflection isrs = Lsms(r v)shiny
Computing Specular ReflectionOf course, if s n < 0 or if r v < 0, then rs = 0.Why?
Blinn LightingA slightly more efficient method is the Blinn lighting model.Let h be the halfway vector, the unit vector halfway between s and v.Use h n instead of r v.rs = Lsms(h n)shiny
Blinn LightingHow does h n compare to s v?If s, n, and v are coplanar, then the angle between h and n is half of the angle between s and v.Why is Blinn lighting more efficient?h is computed as h = (s + v)/|s + v|.This is more efficient to compute than r.
Emissive LightingEmissive lighting is light that emitted by the surface itself.It is used for objects that are meant to glow.It is independent of all light sources and directions.Let me be the intensity of the emissive light.
Computing the Shade of a SurfaceThe total reflection from a point is the sum of the ambient, diffuse, and specular reflections and the emissive light.sama + Lama + Ldmd(s n) + Lsms(h n)shiny + me
Lighting in OpenGLSince the diffuse and specular reflections depend on light sources, there is a separate contribution for each light source.OpenGL provides up to 8 light sources.Furthermore, there is a separate color component for each type of light.Red, green, blue.
The Lighting ModelThe complete formula for n lights is
I = (sarmar + sagmag + sabmab) + 0n(Larmar + Lagmag + Lagmag)+ 0n(Ldrmdr + Ldgmdg + Ldbmdb)(s n)+ 0n(Lsrmsr + Lsgmsg + Lsbmsb)(h n)shiny+ (mer + meg + meb).
The Lighting ModelFor each color, the computed value is clamped to the interval [0, 1].If the value exceeds 1, then it is set to 1.
Gouraud Shading vs. Phong ShadingGouraud shading computes the specular reflection only at the vertices and then interpolates.This guarantees that the brightest reflection will be at a vertex (or along an edge).
Gouraud Shading vs. Phong ShadingPhong shading interpolates (and normalizes) the normal vectors and then uses them to compute the specular reflection at each vertex.Phong shading ismuch more realistic.much less efficient.
Gouraud Shading vs. Phong ShadingdimreflectiondimreflectiondiminterpolatedreflectionGouraud shading.
Gouraud Shading vs. Phong ShadingbrightreflectionPhong shading.interpolated vectorsdimreflectiondimreflection