Local Illumination and Shading Computer Graphics – Lecture 3 Taku Komura tkomura@ed.ac.uk Institute for Perception, Action & Behaviour
Today is about calculating the color of objects The incident light Position of light source Direction Color The object Reflectance Viewer Position
Overview Illumination (how to calculate the colour) Shading (how to colour the whole surface)? BRDF (how to simulate the reflection of real objects)
Illumination Simple 3 parameter model + + = Ambient (colour) Diffuse The sum of 3 illumination terms: Ambient : 'background' illumination Specular : bright, shiny reflections Diffuse : non-shiny illumination and shadows 'Virtual' camera + + = Ambient (colour) Diffuse (directional) Specular (highlights) Rc
Ambient Lighting Object Light from the environment light reflected or scattered from other objects Coming uniformly from all directions and then reflected equally to all directions simple approximation to complex 'real-world' process Result: globally uniform colour for object I = resulting intensity Ia = light intensity ka = reflectance Example: sphere Object
Diffuse Lighting Light reflected to all directions Ln N I Object considers the angle of incidence of light on surface (angle between light and surface normal) Also known as Lambertian reflection Result: lighting varies over surface with orientation to light Ln Infinite point light source Example: sphere (lit from left) N I Object No dependence on camera angle!
Specular Lighting Direct reflections of light source off shiny object specular intensity n = shiny reflectance of object Result: specular highlight on object Ln N Infinite point light source R (Reflection) α Object Ip: light intensity I : output color R: reflection vector S : direction towards the camera α : angle between R and S No dependence on object colour.
Specular Light
Combined Lighting Models Summing it altogether : Phong Illumination Model + + = Ambient (colour) Diffuse (directional) Specular (highlights) Rc
When you implement it… Use dot product of the vectors instead of calculating the angles N L R α Object V : Vector from the surface to the viewer : Normal vector at the colored point : Normalized reflection vector : Normalized vector from the coloured point towards the light source
Demo applets http://www.cs.auckland.ac.nz/~richard/research- topics/PhongApplet/PhongDemoApplet.html
Local Illumination Model Considers light sources and surface properties only. Not considering the light reflected back onto other surfaces Fast real-time interactive rendering. Most real-time graphics (games, virtual environments) are based on local illumination models Implementation - OpenGL, Direct3D
Attenuation Haven’t considered light attenuation – the light gets weaker when the object is far away Use 1/(s+k) where s relates to eye-object distance and k is some constant for scene. Note: must apply 3 times – for each primary colour
Color Finally color the pixel by the RGB color
Overview Illumination (how to calculate the color) Shading (how to color the whole surface)?
How often do we do the computation of illumination? At all the points on the surface? But usually we have normals only at the vertices Depends on the shading model – Flat Shading (once per polygon) (less computation needed) – Gouraud shading (once per vertex) – Phong Shading (once per pixel) (heavy computation needed)
Flat Shading Compute the colour at the middle of the polygon All points in the same polygon are coloured by the same colour
Shading Polyhedra Flat (facet) shading: really made of flat faces. Works well for objects really made of flat faces. Appearance depends on number of polygons for curved surface objects. If polyhedral model is an approximation then need to smooth.
Mach banding. Physiological effect exaggerates difference between closely coloured polygons. Mach banding. Exaggerates intensity change at an edge with a discontinuity in magnitude. Our eyes are well adapted to seeing edges ! Using a finer mesh is surprisingly ineffective.
Gouraud Shading (Smooth Shading) Compute the color at each vertex first Compute the color inside the polygon by interpolating the colors of the vertices composing the polygon
Gouraud shading
Gouraud Shading. Find vertex normals by averaging face normals B A - Use vertex normals with desired shading model, Interpolate vertex intensities along edges. Interpolate edge values across a scanline. B A Ibc Iac Iac interpolated A to C, Ibc interpolated B to C. C
Phong Shading interpolating the normal vectors at the vertices Do the computation of illumination at each point in the polygon
Phong shading. For specular reflection, highlight falls off with cosn Gouraud shading linear interpolates – makes highlight too big. Gouraud shading may well miss a highlight that occurs in the middle of the face. Direction of maximum highlight
Phong shading. In Phong model of specular reflection, highlight falls off with cosn Gouraud shading linear interpolates – makes highlight too big. Gouraud shading may well miss a highlight that occurs in the middle of the face. Direction of maximum highlight Highlight on surface.
Phong example
Gouraud Shaded Floor Phong Shaded Floor Gouraud shading is not good when the polygon count is low
Problems with interpolation shading. Problems with computing vertex normals. A B C A,B are shared by all polygons, but C is not shared by the polygon on the left. Shading information calculated to the right of C will be different from that to the left. Shading discontinuity. Solution 1: subdivide into triangles that that share all the vertices Solution 2 : introduce a ‘ghost’ vertex that shares C’s values
Problems with interpolation shading. Problems with computing vertex normals. Face surface normals and averaged vertex normals shown. Unrepresentative so add small polygon strips along edges or test angle and threshold to defeat averaging.
Problems with interpolation shading. Rotational invariance? When interpolating the colour inside a polygon, the edge colours are determined first, and then they are interpolated to compute the internal colour If the number of edges is >= 4, the results of interpolation shading can change with orientation of the polygon. A B C D Point on left is interpolated between AD & AB , Point on right is interpolated between AB & BC C
Problems with interpolation shading. Solution. Decompose polygon into triangles before Gouraud shading.
Overview Illumination (how to calculate the color) Shading (how to color the whole surface)? BRDF (how to simulate the reflection of real objects)
What about real objects? Phong Illumination model is popular but actually it is not accurate True photorealism, requires more sophisticated and elaborate models of surface properties
Reflectance of objects The way the light reflects depends on the physical characteristics of the surface Its not uniform
Bidirectional Reflectance Distribution Function (BRDF) The reflectance of an object can be represented by a function of the incident and reflected angles This function is called the Bidirectional Reflectance Distribution Function (BRDF) where E is the incoming irradiance and L is the reflected radiance
What affects the BRDF? The way light reflecting over the surface The smoothness/roughness of the surface Single reflection : if smooth, specular Multiple reflections : diffusive The shadowing effect
Isotropic and Anisotropic BRDFs Can model by diffuse + specular reflection Anisotripic Brushed metal Cannot model by diffuse + specular reflection Reflectance changing systematically with respect to direction
Measuring the BRDF Measured using a device called gonioreflectometer Casting light from various directions to the object, and capturing the light reflected back
Summary Illumination model Shading BRDF Phong model Flat, Gouraud, Phong Shading BRDF Measuring
Recommended Reading Foley et al. Chapter 16, sections 16.1.6 up to and including section 16.3.4. Introductory text Chapter 14, sections 14.1.6 up to and including section 14.2.6.