Author: Romain Vergne (
website)
Please cite my name and add a link to my web page if you use this course
Image synthesis and OpenGL: lighting
Quick links to:
 The
problem
 Color
 The
rendering equation
 Local
lighting
 Types
of lights
 Types
of reflections
 Computing
lighting on the GPU
 Sources
The problem

The illumination on a given point of the surface depends on:
 primary light sources
 secondary light sources
 all the objects in the scene
 an illuminated object becomes a light source
 indirect lighting
Cornel box (1984)

We will be mainly interested in direct
lighting and local illumination in this course.

The illumination on a given point of the surface depends on:
 The viewpoint
 The surface properties
 reflexion
 absorption
 diffusion
 The light properties
 direction
 wavelenght
 energy
Involve
a lot of dimensions

Color
Physically, visible light is an electromagnetic wave


Physiologically,
our eyes use 3 types of sensors to perceive light colors 
In computer science


Additive models
(lighting)

Soustractive
models
(painting)

 RGB(A) for
Red, Green, Blue (Alpha) is the most well known additive model
 Easy to use in graphics applications
 Difficult to ensure the same color on different screen...
(gamut)
 CIE
1931 XYZ color space
 The tristimulus values can be conceptualized as amounts of
three primary colors in a trichromatic additive color model.
 The CIE (Comission Internationale
de l'éclairage) was the first to mathematically define a
trichromatic system to represent perceived colors.
 It is based on the standard (colorimetric) observer and
thus allows to uniquely represent colors in a 3D space.
Color matching functions: spectral
sensitivity
curves of 3 linear light detectors

If \( I (\lambda) \) is the spectral
distribution of a color, then:
\[
X = \int_{400}^{800} I(\lambda) \bar{x}(\lambda) d \lambda
\]
\[
Y = \int_{400}^{800} I(\lambda) \bar{y}(\lambda) d \lambda
\]
\[
Z = \int_{400}^{800} I(\lambda) \bar{z}(\lambda) d \lambda
\]

 CIE Yxy
color space
 Normalize the XYZ color space and decompose it into Luminance (Y)
and chrominance (xy)
 CIE
Lab color space
 Perceptually uniform: distance between 2 colors = perceived distance
between these colors
 Used in most graphics applications
 L = luminance
 a = chrominance (redgreen)
 b = chrominance (blueyellow)
 HSV (Hue,
Saturation, Value) color space
 In most image processing software: Photoshop, Gimp, etc.
 Intuitive for designers
 CMY(K),
for Cyan, Magenta, Yellow (and Key  Black)
 Subtractive model
 Mainly used for printing
 ETC....: Adobe RGB, sRGB, CIELuv, CIEUvw, YIQ (NTSC), YUV (PAL), HSL,
....

Still, the perception of colors is
not well understood and the perfect color space does not exist!
(example of color contrast)
try this excellent
demo

Coding colors
 Binary representation: 0 or 1
 8 bits: 0 to 255 grey levels (monochromatic)
 24 bits: 8 bits per channel (polychromatic)
 256 values per channel (usually RGB)
 256*256*256 = 16 777 216 colors
 limited: 8 orders of magnitude between the sun and stars
 HDR (High Dynamic Range) images: float or double precision per channel
 24 bits per channel = \( 256^9 \) colors
 Can be created using multiple LDR (Low Dynamic Range) images
 Needs to be tonemapped to be displayed on a screen
The rendering
equation [Kajiya
1986]
\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
L_e(\mathbf{p} \rightarrow \mathbf{e}) +
\int_{\Omega_\mathbf{n}}
\rho(\mathbf{p}, \mathbf{e}, \pmb{\ell})
(\mathbf{n}\cdot\pmb{\ell}) \
L(\mathbf{p} \leftarrow \pmb{\ell}) \
d\pmb{\ell}
\]
 \( \mathbf{p} \) is a point on the surface
 \( \mathbf{e} \) is the view direction
 \( \mathbf{n} \) is the normal of the surface at point \( \mathbf{p}
\)
 \( \pmb{\ell} \) is the direction of a light in the hemisphere \(
\Omega_\mathbf{n} \)
 \( L(\mathbf{p} \rightarrow \mathbf{e}) \):
 outgoing radiance (in \( Wm^{2}sr^{1}) \)
 how much energy is arriving to the eye / camera
 \( L_e(\mathbf{p} \rightarrow \mathbf{e}) \):
 emitted radiance
 usually equal to 0 for object surfaces (they do not create energy)
 \( L(\mathbf{p} \leftarrow \pmb{\ell}) \):
 incoming radiance
 incident illumination leaving the light \( \pmb{\ell} \) and
arriving at the point \( \mathbf{p} \) of the surface
 \( (\mathbf{n}\cdot\pmb{\ell}) \):
 the orientation of the surface
 dot product between \( \mathbf{n} \) and \( \pmb{\ell} \)
 \( \rho(\mathbf{p}, \mathbf{e}, \pmb{\ell}) \):
 material properties / BRDF (Bidirectional Reflectance Distribution
Function)
 how much energy the surface reflects in the viewing direction \(
\mathbf{e} \) given the incident light \( \pmb{\ell} \)
Local lighting
General equation
Empirical model for
computing the outgoing radiance
\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\rho_a L_a +
\sum_{k}
\rho(\mathbf{p}, \mathbf{e}, \pmb{\ell}_k) \
(\mathbf{n}\cdot\pmb{\ell}_k) \
L(\mathbf{p} \leftarrow \pmb{\ell}_k)
\]
 \( L(\mathbf{p} \rightarrow \mathbf{e}) \): outgoing radiance / light
energy / color
 \( \rho_a L_a \): ambient lighting (approximate indirect lighting)
 \( \sum_{k} \cdots \): contribution of each light \( \pmb{\ell}_k \)
 \(
\rho(\mathbf{p}, \mathbf{e}, \pmb{\ell}_k) \): BRDF  how the light
\( \pmb{\ell}_k \) is reflected on top of the surface
 \( (\mathbf{n}\cdot\pmb{\ell}_k) \): surface orientation (according to
light \( \pmb{\ell}_k \) )
 \( L(\mathbf{p} \leftarrow \pmb{\ell}_k) \): incoming radiance for
light \( \pmb{\ell}_k \)
The simplest model: assign a color at each point of the surface (albedo)
\[
L(\mathbf{p} \rightarrow \mathbf{e}) = color
\]
 Reflecting power of the surface
 Independent of the view direction
 Independent of the light direction
 Too simple:
 adapted for static scenes (photos) but not for dynamic ones (image
synthesis)
 dynamic viewpoint?
 dynamic lighting variations?
The second simplest model: consider a single dynamic light
\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\rho(\mathbf{p}, \mathbf{e}, \pmb{\ell}) \
(\mathbf{n}\cdot\pmb{\ell}) \
L(\mathbf{p} \leftarrow \pmb{\ell})
\]
 Which types of lights?
 Which types of surface reflections?
Types of lights
Infinitesimal
lights



Directionnal light
 Distant sources (sun)
 Environment maps (videogames)
\[
L(\mathbf{p} \leftarrow \pmb{\ell}) = L
\]

Point light
 position in space \( \mathbf{p}_{\pmb{\ell}} \)
 near, small sources
\[
L(\mathbf{p} \leftarrow \pmb{\ell}) = L/r^2
\]
with \( r =  \mathbf{p} 
\mathbf{p}_{\pmb{\ell}}  \) and \( \pmb{\ell} = \frac{\mathbf{p}
 \mathbf{p}_{\pmb{\ell}} }{r} \)

Spot light
 position in space
 near, small sources
 defined in a cone
 direction \( \mathbf{s}_{\pmb{\ell}} \)
 exponent \( e \)
 a cutoff \( c \)
\[
L(\mathbf{p} \leftarrow \pmb{\ell}) =
\frac{(\mathbf{s}_{\pmb{\ell}} \cdot \pmb{\ell})^e L}{r^2}
\]
if \( (\mathbf{s}_{\pmb{\ell}}
\cdot \pmb{\ell})<c \) and 0 otherwise

Area
lights


 Defined on volumes / surfaces
 Soft shadows
 Expensive!

Types of reflections
Lets consider a (white) directional light ( \( L=cst=(1,1,1) \) ). The model
is equal to:
\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\rho(\mathbf{p}, \mathbf{e}, \pmb{\ell}) \
(\mathbf{n}\cdot\pmb{\ell})
\]
The lambertian model


Lambertian
surface

\[ \rho(\mathbf{p}, \mathbf{e},
\pmb{\ell}) = cst \]
 Light is diffused in every direction
 Independant on the point of view

\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\rho_d \
(\mathbf{n}\cdot\pmb{\ell}) L_d
\]

\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\sum_k \rho_{kd} \
(\mathbf{n}\cdot\pmb{\ell}) L_{kd}
\] 
One light:
 \( \rho_d = \) constant diffuse material color
 \( L_d = \) constant diffuse light color

Multiple light
 sum of contribution of each light
 may have different color coeficients

The mirror and transparent models


Mirror surface

\[ \rho(\mathbf{p}, \mathbf{e},
\pmb{\ell}) = cst\ if\ (\mathbf{r}\cdot\mathbf{e}=1),\ 0\ otherwise
\]
 Reflected light vector \( \mathbf{r}=2 \mathbf{n}
(\mathbf{n}\cdot \pmb{\ell})\pmb{\ell} \)
 Dependant on the point of view
 Usefull for environment maps
 compute the reflected view vector
 \( \mathbf{r}=2 \mathbf{n} (\mathbf{n}\cdot
\mathbf{e})\mathbf{e} \)
 use it to fetch a color in the map



Transparent
surface

\[ \rho(\mathbf{p}, \mathbf{e},
\pmb{\ell}) = cst\ if\ (\mathbf{r}\cdot\mathbf{e}=1),\ 0\
otherwise \]
 Refracted
light vector \( \mathbf{r}=e \pmb{\ell}  (e (\mathbf{n}\cdot
\pmb{\ell}) + \sqrt{1e^2 (1(\mathbf{n}\cdot \pmb{\ell})^2)})
\mathbf{n} \)
 Dependant on the point of view
 Same principle for environment maps

\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\rho_s(\mathbf{p}, \mathbf{e}, \pmb{\ell}) \
(\mathbf{n}\cdot\pmb{\ell}) L_s
\]

\[
L(\mathbf{p} \rightarrow \mathbf{e}) =
\sum_k \rho_{ks} (\mathbf{p}, \mathbf{e}, \pmb{\ell})\
(\mathbf{n}\cdot\pmb{\ell}) L_{ks}
\] 
One light:
 \( \rho_s = \) constant specular material color
 \( L_s = \) constant specular light color

Multiple light
 sum of contribution of each light
 may have different color coeficients

Glossy models


Glossy surface 
\[ \rho(\mathbf{p}, \mathbf{e},
\pmb{\ell}) = \rho_d(\mathbf{p}, \mathbf{e}, \pmb{\ell}) +
\rho_s(\mathbf{p}, \mathbf{e}, \pmb{\ell}) \]
 Usually expressed as a sum of diffuse and specular terms
 \( \rho_d = cst \) (as before)
 \( \rho_s = (\mathbf{r}\cdot\mathbf{e})^e\) (for instance)

The Phong model
\( \rho_s =
(\mathbf{r}\cdot\mathbf{e})^e\)
The general formulation of the Phong model is given by a weighted sum of an
ambient, diffuse and specular term:
\[
L(\mathbf{p} \rightarrow \mathbf{e}) = \rho_a L_a + \sum_k
\rho_{kd} L_{kd} (\mathbf{n}\cdot\pmb{\ell}) + \rho_{ks} L_{ks}
(\mathbf{r}\cdot\mathbf{e})^e
\]
where
 \( \rho_a \), \( \rho_{kd} \) and \( \rho_{ks} \) are the
material colors for the ambient, diffuse and specular term,
respectively.
 \( L_a \), \( L_{kd} \) and \( L_{ks} \) are the light colors for the
ambient, diffuse and specular term, respectively.
The BlinnPhong Model
Specular term replaced by \(
\rho_s = (\mathbf{h}\cdot\mathbf{n})^e \) , with \(
\mathbf{h}=\frac{\pmb{\ell}+\mathbf{e}}{ \pmb{\ell}+\mathbf{e}} \)
Anisotropy effect
Specular term replaced by \( \rho_s =
(\mathbf{h}\cdot\mathbf{n})^{n_u cos^2\phi + n_v sin^2 \phi} \)
Fresnel effect
Obtained using Schlick approximation:
\( F = R_s + (1R_s)(1\mathbf{e}\cdot\mathbf{h})^5 \)
Other effects?



Diffraction

Nonrealistic
effects

Varying material
properties

 Plenty of BRDFs (they are specialized for certain kinds of materials)
 Lambertian
 Phong
 BlinnPhong
 TorranceSparrow
 CookTerrance
 Ward
 OrenNayar
 AshikhminShirley
 Lafortune
 etc...
 And also SVBRDF (for spatially varying BRDF)
 material parameters change over the surface (usually using textures
 And also BSSRDF (for Bidirectionnal Subsurface Scatering Distribution
Function)
 specific for translucent materials
 More generally: BXDF for Bidirectionnal X Distribution Function
How to compute
lighting on the GPU?
Flat shading

Compute lighting per face
 In the vertex shader
 Normals are constant for the vertices of each triangle
 Produce shading discontinuities

Gouraud Shading

Compute lighting per vertex
 In the vertex shader
 Normals are different for each vertex
 Color is computed and interpolated during rasterization
 Quality / result depends on tesselation

Question: what is the color at point
M?

Phong Shading (different from the Phong
model)

Compute lighting per fragment
 Normals are interpolated during rasterization (vertex to
fragment)
 Normals are renormalized
 Color is computed


Sources