490 likes | 1.19k Views
Specular Reflection. Lecture 27 Mon, Nov 10, 2003. Specular Reflection. The intensity of specular reflected light varies with direction. The maximum intensity is in the “ideal” direction. Angle of reflection = angle of incidence. Specular Reflection.
E N D
Specular Reflection Lecture 27 Mon, Nov 10, 2003
Specular Reflection • The intensity of specular reflected light varies with direction. • The maximum intensity is in the “ideal” direction. • Angle of reflection = angle of incidence.
Specular Reflection • Specular reflection creates the appearance of “shininess.” • Surfaces with a high specular reflection appear very shiny. • Surfaces with a low specular reflection appear matte.
Example • LampShader.exe
Blinn and Phong Lighting • OpenGL uses the Blinn lighting model of specular reflection. • However, we will first study the Phong lighting model since it seems more natural.
Phong Lighting • The 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 Lighting Light Source Eye Ideal Direction n r s v P Surface
r s n s r Phong Lighting • To compute r, note that r + s equals twice the projection of s onto n.
Phong Lighting • The projection of s onto n is (sn)/(nn)n = (sn)n • Therefore, r + s = 2(sn)n and r = –s + 2(sn)n
Computing Specular Reflection • According 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 (rv)shiny
Computing Specular Reflection • Two other factors are • Intensity of the incident light. • 0 Ls 1. • Specular property of the surface. • 0 ms 1. • The formula for specular reflection is rs = Lsms(rv)shiny
Computing Specular Reflection • Of course, if sn < 0 or if rv < 0, then rs = 0. • Why?
Blinn Lighting • A slightly more efficient method is the Blinn lighting model. • Let h be the halfway vector, the unit vector halfway between s and v. • Use hn instead of rv. rs = Lsms(hn)shiny
Blinn Lighting Light Source Eye Halfway n h s v P Surface
Blinn Lighting • How does hn compare to sv? • 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 Lighting • Emissive 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 Surface • The total reflection from a point is the sum of the ambient, diffuse, and specular reflections and the emissive light. sama + Lama + Ldmd(sn) + Lsms(hn)shiny + me
Lighting in OpenGL • Since 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 Model • The complete formula for n lights is I = (sarmar + sagmag + sabmab) + 0…n(Larmar + Lagmag + Lagmag) + 0…n(Ldrmdr + Ldgmdg + Ldbmdb)(sn) + 0…n(Lsrmsr + Lsgmsg + Lsbmsb)(hn)shiny + (mer + meg + meb).
The Lighting Model • For 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 Shading • Gouraud 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 Shading • Phong shading interpolates (and normalizes) the normal vectors and then uses them to compute the specular reflection at each vertex. • Phong shading is • much more realistic. • much less efficient.
Gouraud Shading vs. Phong Shading Gouraud shading. dim interpolated reflection dim reflection dim reflection
Gouraud Shading vs. Phong Shading Phong shading. bright reflection dim reflection dim reflection interpolated vectors