Title: Illumination Models
1UBI 516 Advanced Computer Graphics
Aydin Öztürk ozturk_at_ube.ege.edu.tr http//www.ube.
ege.edu.tr/ozturk
2Lighting
- Given a 3-D triangle and a 3-D viewpoint, we can
set the right pixels - But what color should those pixels be?
- If were attempting to create a realistic image,
we need to simulate the lighting of the surfaces
in the scene - Fundamentally simulation of physics and optics
- As youll see, we use a lot of approximations to
do this simulation fast enough
3Definitions
- Illumination the transport of energy from light
sources to surfaces points - Note includes direct and indirect illumination
- Lighting the process of computing the luminous
intensity (i.e., outgoing light) at a particular
3-D point, usually on a surface - Shading the process of assigning colors to pixels
4Definitions
- Illumination models fall into two categories
- Empirical simple formulations that approximate
observed phenomenon - Physical models based on the actual physics of
light interacting with matter - We mostly use empirical models in interactive
graphics for simplicity - Increasingly, realistic graphics are using
physically based models
5Components of Illumination
- Two components of illumination
- Light sources
- Surface properties
6Components of Illumination(cont.)
- Light sources (or emitters)
- Spectrum of emittance (i.e., color of the light)
- Geometric attributes
- Position
- Direction
- Shape
7Components of Illumination(cont.)
- Surface properties
- Reflectance spectrum (i.e., color of the surface)
- Geometric attributes
- Position
- Orientation
- Micro-structure
8Components of Illumination(cont.)
- Common simplifications in interactive graphics
- Only direct illumination from emitters to
surfaces - Simplify geometry of emitters to trivial cases
9Ambient Light Sources
- Objects not directly lit are typically still
visible - E.g., the ceiling in this room, undersides of
desks - This is the result of indirect illumination from
emitters, bouncing off intermediate surfaces - Too expensive to calculate (in real time), so we
use a hack called an ambient light source - No spatial or directional characteristics
illuminates all surfaces equally - Amount reflected depends on surface properties
10Ambient Light Sources
- For each sampled wavelength, the ambient light
reflected from a surface depends on - The surface properties,
- The intensity of the ambient light source
(constant for all points on all surfaces )
11Ambient Light Sources
- A scene lit only with an ambient light source
12Directional Light Sources
- For a directional light source we make the
simplifying assumption that all rays of light
from the source are parallel - As if the source were infinitely far away from
the surfaces in the scene - A good approximation to sunlight
- The direction from a surface to the light source
is important in lighting the surface - With a directional light source, this direction
is constant for all surfaces in the scene
13Directional Light Sources
- The same scene lit with a directional and an
ambient light source
14Point Sources
- Emit light equally in all directions
- p0 point source location
- Proportional to the inverse square distance
Point source illuminating a surface
15Point Sources (cont)
- Finite size light sources
- Umbra full shadow
- Penumbra partial shadow
- Attenuation
Shadows created by finite-size light source
16Distant Light Sources
- Far from the surface ? Vector does not change
- Location ? Direction
parallel light source
point light source
Parallel light source
17Point Light Sources
- Using an ambient and a point light source
18Other Light Sources
- Spotlights are point sources whose intensity
falls off directionally. - Requires color, pointdirection,
falloffparameters - Supported by OpenGL
19Spotlights
- Characterized by a narrow range of angle through
which light is emitted - ps apex of a cone
- ls direction of pointing
- ? angle to determine width
- s angle between ps and the point on the surface
- Distribution of light
- Concentrate in the center. Attennuation
- Light intensity drop off. Exponent
spotlight
20Other Light Sources
- Area Light Sources define a 2-D emissive surface
(usually a disc or polygon) - Good example fluorescent light panels
- Capable of generating soft shadows
21The Physics of Reflection
- Ideal diffuse reflection
- An ideal diffuse reflector, at the microscopic
level, is a very rough surface (real-world
example chalk) - Because of these microscopic variations, an
incoming ray of light is equally likely to be
reflected in any direction over the hemisphere - What does the reflected intensity depend on?
22Lamberts Cosine Law
- Ideal diffuse surfaces reflect according to
Lamberts cosine law - The energy reflected by a small portion of a
surface from a light source in a given direction
is proportional to the cosine of the angle
between that direction and the surface normal - These are often called Lambertian surfaces
- Note that the reflected intensity is independent
of the viewing direction, but does depend on the
surface orientation with regard to the light
source
23Lamberts Law
24Computing Diffuse Reflection
- The angle between the surface normal and the
incoming light is the angle of incidence - Idiffuse kd Ilight cos ?
- In practice we use vector arithmetic Idiffuse
kd Ilight (n l)
25Diffuse Lighting Examples
- We need only consider angles from 0 to 90
(Why?) - A Lambertian sphere seen at several different
lighting angles
26Attenuation Distance
- fatt models distance from light
- Idiffuse kd fatt Ilight (n l)
- Realistic
- fatt 1/(dlight)2
- Hard to control, so use
- fatt 1/(c1 c2dlight c3dlight2)
27Specular Reflection
- Shiny surfaces exhibit specular reflection
- Polished metal
- Glossy car finish
- A light shining on a specular surface causes a
bright spot known as a specular highlight - Where these highlights appear is a function of
the viewers position, so specular reflectance is
view-dependent
28The Physics of Reflection
- At the microscopic level a specular reflecting
surface is very smooth - Thus rays of light are likely to bounce off the
microgeometry in a mirror-like fashion - The smoother the surface, the closer it becomes
to a perfect mirror
29The Optics of Reflection
- Reflection follows Snells Laws
- The incoming ray and reflected ray lie in a plane
with the surface normal - The angle that the reflected ray forms with the
surface normal equals the angle formed by the
incoming ray and the surface normal
?(l)ight ?(r)eflection
30Non-Ideal Specular Reflectance
- Snells law applies to perfect mirror-like
surfaces, but aside from mirrors (and chrome) few
surfaces exhibit perfect specularity - How can we capture the softer reflections of
surface that are glossy rather than mirror-like? - One option model the microgeometry of the
surface and explicitly bounce rays off of it - Or
31Non-Ideal Specular Reflectance An Empirical
Approximation
- In general, we expect most reflected light to
travel in direction predicted by Snells Law - But because of microscopic surface variations,
some light may be reflected in a direction
slightly off the ideal reflected ray - As the angle from the ideal reflected ray
increases, we expect less light to be reflected
32Non-Ideal Specular Reflectance An Empirical
Approximation
- An illustration of this angular falloff
- How might we model this falloff?
33Phong Lighting
- The most common lighting model in computer
graphics was suggested by Phong
v
- The nshiny term is a purelyempirical constant
that varies the rate of falloff - Though this model has no physical basis, it
works (sort of) in practice
34Phong Lighting The nshiny Term
- This diagram shows how the Phong reflectance term
drops off with divergence of the viewing angle
from the ideal reflected ray - What does this term control, visually?
35Calculating Phong Lighting
- The cos term of Phong lighting can be computed
using vector arithmetic - V is the unit vector towards the viewer
- R is the ideal reflectance direction
- An aside we can efficiently calculate R
36Calculating The R Vector
37Calculating The R Vector
N
L
R2(NL)N-L
2(NL)N
38Phong Examples
- These spheres illustrate the Phong model as L and
nshiny are varied
39The Phong Lighting Model
- Lets combine ambient, diffuse, and specular
components for a single point light source
40The Phong Lighting Model
- Light reflection for more than one light source
- Commonly called Phong lighting
- Note once per light
- Note once per color component
- Do ka, kd, and ks vary with color component?
41Color Consideration
- To incorporate color, we need to write the
intensity equation as a function of the color
properties of the light sources and object
surfaces. - We specify the reflectivity coefficients as three
element vectors( Red, Green and Blue) - Taking the blue component as an example,
expression for the intensity can be written as
42Utah Teapots with Different Material Properties
43Transparency
- A transparent surface produces both reflected and
transmitted light. - The relative contribution of transmitted light
depends on the degree of transparency of the
surface and whether any light sources are behind
the transparent surface.
Incident light
transparent object
44Transparency(cont.)
N
- Realistic transparency effect are modeled by
considering the light refraction. - The overall effect of the refraction is to shift
the incident ligh to a parallel path.
R
L
?i
?i
?i
?r
?r
T
45Transparency(cont.)
- Snells law
- Transmission vector T can be used to locate
intersections of the refraction pathwith objects
behind the transparent surface
46Transparency(cont.)
- We can combine the transmitted intensity through
a surface from a background object with the
reflected intensity from the transparent surface.
47Phong Lighting Intensity Plots
48Shadows
- Hidden surface methods can be use to locate areas
where light sources produce shadows. - By applying a hidden-surface method with a
light source at the view position, we determine
which surface section cannot be seen.
49Displaying Light Intensities
- Values of intensity calculated by an illimunation
model must be converted to one of the allowable
intensity levels for the particular graphics
system in use.
50Assigning Intensity Levels
- We perceive light intensities on a logarithmic
scale. If the ratio of two intensities is the
same as the ratio of two other intensities, we
perceive the difference between each pair of
intensities to be the same. - To display n1 successive intensity levels with
equal perceived brightness, the intensity levels
on the monitor should be spaced so that the ratio
of successive intensities is constant.
51Assigning Intensity Levels(cont.)
- Any intermediate intensity can be expressed in
terms of the initial intensity
intensity
1.0
0.5
1.0
0.5
0
Normalized electron gun voltage
52Assigning Intensity Levels(cont.)
- The lowest intensity value I0 depends on the
charecteristic of the monitor. - Typically in the range 0.005 to 0.025.
- For black and white monitor with 8 bits per pixel
n 255, I0 0.01, r 1.0182 - Values for the 256 intensities on this system are
0.0100, 0.0102, 0.0104, 0.0106,
0.0107, 0.0109, ... , 0.9821
53Half-toning and Dithering
- Half-toning
- Technique to simulate gray levels by creating
patterns of black dots of varying size - Dithering ( digital half-toning)
- Use digital halftone to simulate halftoning with
fixed sized pixels
54- Polygon Rendering Methods
55Polygon Rendering Methods
- We consider the application of an illumination
model to the rendering of standard objects with
polygon surfaces. - Two ways of rendering surfaces
- Each polygon can be rendered with a single
intensity - The intensity can be obtained at each point of
the surface using an interpolation scheme.
56Constant Intensity Shading(Flat Shading)
- The simplest approach, flat shading, calculates
illumination at a single point for each polygon - If an object really is faceted, is this accurate?
flat shading of polygonal mesh
57Constant Intensity Shading
Is flat shading realistic for faceted object?
- No
- For point sources, the direction to light varies
across the facet
- For specular reflectance,
- direction to eye varies
- across the facet
58Grauraud Shading(cont.)
- This method renders a polygon surface by linearly
interpolating intensity values across the
surface. - To get smoother-looking surfaces we introduce
vertex normals at each vertex - Usually different from facet normal
- Used only for shading
- Think of as a better approximation of the real
surface that the polygons approximate
59 Grauraud Shading(cont.)
- Vertex Normals
- Vertex normals may be
- Provided with the model
- Computed from first principles
- Approximated by averaging the normals of the
facets that share the vertex
60 Grauraud Shading(cont.)
- A common approach
- Determine the average unit normal vector at each
polygon vertex. - Apply an illumination model to each vertex to
calculate vertex intensity. - Linearly interpolate the vertex intensities over
the surface of the polygon.
61Gouraud Shading(cont.)
N2
N1
N4
V
N3
62Gouraud Shading(cont.)
c1 t1(c2-c1) t3(c1 t2(c3-c1)- c1 -
t1(c2-c1))
C1
c1 t1(c2-c1)
C3
c1 t2(c3-c1)
C2
63Gouraud Shading
- Artifacts
- Often appears dull
- Lacks accurate specular component
C1
C3
C2
Cant shade that effect!
64Gouraud Shading
- Artifacts
- Mach Banding
- Artifact at discontinuities in intensity or
intensity slope
C1
C4
C3
C2
Discontinuity in rateof color changeoccurs here
65Wireframe
66Flat Shading
67Gouraud Shading
68Phong Shading
- Linearly interpolating the surface normal across
the facet, applying the Phong lighting model at
every pixel - Same input as Gouraud shading
- Usually very smooth-looking results
- But, considerably more expensive
69Phong Shading
- Linearly interpolate the vertex normals
- Compute lighting equations at each pixel
- Can use specular component
N1
Remember Normals used in diffuse and specular
terms Discontinuity in normals rate of change
is harder to detect
N4
N3
N2
70Shortcomings of Shading
- Polygonal silhouettes remain
Gouraud Phong
71Wire-frame
72Ambient Illumination Only
73Flat-Shading
74Gouraud Shading
75Phong Shading
76Shadows, Texture Enviromental Mappings
77Raytracing and Radiosity Methods
78 Ray Tracing
- Cast a ray from the viewers eye through each
pixel - Compute intersection of this ray with objects
from scene - Closest intersecting object determines color
79 Basic Ray Tracing Algorithm
- First, we set up a coordinate system with the
pixel positions dsignated in the x-y plane
y
x
Projection reference point
z
80 Basic Ray Tracing Algorithm(cont.)
- First, we set up a coordinate system with the
pixel positions dsignated in the x-y plane
R4
R3
T3
S4
R1
S3
R2
T1
S1
S2
Projection reference point
81Recursive Ray Tracing
- Cast a ray from intersected object to light
sources and determine shadow/lighting conditions - Also spawn secondary rays
- Reflection rays and refraction rays
- Use surface normal as guide (angle of incidence
equals angle of reflection) - If another object is hit, determine the light it
illuminates by recursing through ray tracing
82Recursive Ray Tracing
- Stop recursing when
- Ray fails to intersect an object
- User-specified maximum depth is reached
- System runs out of memory
- Common numerical accuracy error
- Spawn secondary ray from intersection point
- Secondary ray intersects another polygon on same
object
83Recursive Ray Tracing
- Still producing PhDs after all these years
- Many opportunities to improve efficiency and
accuracy of ray tracing - Reduce the number of rays cast
- Accurately capture shadows caused by non-lights
(ray tracing from the light source) - Expensive to recompute as eyepoint changes
84Radiosity
- Ray tracing models specular reflection and
refractive transparency, but still uses an
ambient term to account for other lighting
effects - Radiosity is the rate at which energy is emitted
or reflected by a surface - By conserving light energy in a volume, these
radiosity effects can be traced
85Radiosity
86Radiosity
87Radiosity
- Goal Simulate diffuse inter-object reflections
and shadows
88Radiosity
- Basic Idea Treat every polygon as light source
89Radiosity
90Matrix Solution Methods
1 iteration
24 iterations
2 iterations
100 iterations
91Light Sources in OpenGL
92Light Sources in OpenGL
- At least 8 light sources
- GL_LIGHT0, , GL_LIGHT7
- glEnable(GL_LIGHTING) // light sources enabled
- glEnable(GL_LIGHT0) // light source 0 on
- OpenGL uses phong shading model
93Light Sources in OpenGL
- Light source functions in OpenGL
- glLightf ( GLenum light, GLenum name, GLfloat
value ) - glLightfv ( GLenum light, GLenum name, GLfloat
values )
94Light Sources in OpenGL
- Light source position (or direction)
- glLightfv(GL_LIGHT0, GL_POSITION, light0_pos)
- Point light source, spotlight position
- GLfloat light0_pos 1.0, 2.0, 3.0, 1.0
- Distant light source direction vector
- GLfloat light0_pos 1.0, 2.0, 3.0, 0.0
95Light Sources in OpenGL
- The amount of ambient, diffuse, specular light
- GLfloat ambient_0 1.0, 0.0, 0.0, 1.0 //
RGBA rep. - GLfloat diffuse_0 1.0, 0.0, 0.0, 1.0
- GLfloat specular_0 1.0, 1.0, 1.0, 1.0
- glLightfv(GL_LIGHT0, GL_AMBIENT, ambient_0)
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse_0)
- glLightfv(GL_LIGHT0, GL_SPECULAR, specular_0)
96Light Sources in OpenGL
- Global ambient light (if necessary)
- GLfloat global_ambient 0.1, 0.1, 0.1,
1.0 // RGBA rep. - glLightModelfv ( GL_LIGHT_MODEL_AMBIENT,
global_ambient )
97Light Sources in OpenGL
- Distance attenuation model
- glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a)
- glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, b)
- glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, c)
98Light Sources in OpenGL
- Viewer location
- Default Infinite viewpoint Direction between
it and any vertex is constant - Enabling of COP
- glLightModeli ( GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_TRUE ) - This places the viewpoint at (0, 0, 0).
- To change to infinite viewpoint pass GL_FALSE.
99Light Sources in OpenGL
- Spot Light
- GLfloat spot_direction -1.0, -1.0, 0.0
- glLightf ( GL_LIGHT0, GL_SPOT_CUTOFF, 30.0 )
- glLightf ( GL_LIGHT0, GL_SPOT_EXPONENT, e )
- glLightfv ( GL_LIGHT0, GL_SPOT_DIRECTOIN,
spot_direction )
?
100Light Sources in OpenGL
- Two-sided shading
- Enabling of back face shading
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDED,
GL_TRUE)
101Position and Direction (1/5)
- Achieving three different effects by changing the
point in the program at which the light position
is set. - 1. Light Remains Fixed
myReshape(int w, int h) glViewport(0, 0, w,
h) glMatrixMode(GL_PROJECTION)
glLoadIdentity() if (w lt h)
glOrtho(-1.5, 1.5, -1.5h/w, 1.5h/w, -10.0,
10.0) else glOrtho(-1.5w/h, 1.5w/h,
-1.5, 1.5, -10.0,10.0) glMatrixMode(GL_MODELV
IEW) glLoadIdentity( )
- myInit( )
- GLfloat light_position 1.0, 1.0, 1.0, 1.0)
- glLightfv(GL_LIGHT0, GL_POSITION,
light_position)
102Position and Direction (2/5)
- 2. Light Moves Relative to a Stationary Object
- One way to do this is to set the light position
after the modeling transformation, which is
itself changed specifically to modify the light
position. - We can begin with the same series of calls in an
init( ) routine early in the program. - Then, probably within an event loop, we need to
perform the desired modeling transformation (on
the modelview stack) and reset the light position.
103Position and Direction (3/5)
- The Display () routine causes the scene to be
redrawn with the light rotated spin degrees
around the object. - void display(GLint spin) GLfloat
light_position 0.0, 0.0, 1.5, 1.0
glClear( GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_
BIT ) glPushMatrix( ) glTranslatef( 0.0,
0.0, -5.0 ) glPushMatrix( ) glRotatef(
(GLdouble) spin, 1.0, 0.0, 0.0 ) glLightfv(
GL_LIGHT0, GL_POSITION, light_position )
glPopMatrix( ) draw_object( ) / Draws
the object / glPopMatrix( ) glFlush( )
104Position and Direction (4/5)
- 3. Light that moves along with the viewpoint
- Set the light position before the viewing
transformation. - This way, the viewing transformation effects both
the light and the viewpoint in the same way. - In the myInit( ) routine
- GLfloat light_position 0.0, 0.0, 1.0,
1.0glViewport(0, 0, w-1, h-1)glMatrixMode(GL_
PROJECTION)glLoadIdentity( )gluPerpective(40.0
, (GLfloat) w / (GLfloat) h, 1.0,
100.0)glMatrixMode(GL_MODELVIEW)glLightfv(GL_L
IGHT0, GL_POSITION, light_position)
105Position and Direction (5/5)
- When the object is redrawn, both the light
position and the view point are moved spin
degrees. - void display(GLint spin) glClear(
GL_COLOR_BUFFER_MASK GL_DEPTH_BUFFER_MASK
)glPushMatrix( ) glTranslatef( 0.0, 0.0,
-5.0 ) glRotatef( (GLfloat) spin, 1.0, 0.0,
0.0 ) draw_object( )glPopMatrix( )glFlush(
)