marvenmorrebasinang
5 views
27 slides
Oct 10, 2024
Slide 1 of 27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
About This Presentation
lesson 2.pptlesson 2.pptlesson 2.ppt
Size: 2.66 MB
Language: en
Added: Oct 10, 2024
Slides: 27 pages
Slide Content
LIGHTING AND
SHADING
•Exploration of advanced lighting
and shading techniques
SHADOWING
TECHNIQUES
Exploration of different shadowing techniques
Video not available in on-line slides
Applying shadows to a rendered scene increases realism and provides an
important visual cue for object depth and position.
The two most common shadowing approaches within real-time game engines
are:
•Shadow maps
•Shadow volumes
Shadow volumes are pixel-accurate and don’t
suffer from any aliasing problems. However, the
computational cost is geometry dependent and
the approach is fill-rate intensive (shadow maps
are often faster).
This is a geometry based approach, extruding geometry in the
forward direction of the light to generate a closed ‘shadow’ volume.
By testing against the shadow volume the shadowed portions of the
scene can be determined (the stencil buffer can be used to record
the lit area).
View the DirectX SDK Shadow Volume
sample
A shadow map is a rendering from the light’s perspective where the
depths to ‘lit’ fragments are stored.
The shadow map texture is used, when rendering the scene from the
camera’s perspective, to compare the distance from the pixel to be
lit with the depth value encoded in the shadow map.
If the depth is larger than the value stored in the shadow map then
the pixel is in shadow.
The quality of the shadow
map is dependent upon
the size of the generated
shadow map.
•Render the scene from the light's point of view (point light - suitable perspective
projection, directional - orthographic projection). The depth map is typically
stored as a texture.
•As only the depth information is needed, all unnecessary lighting, texturing, etc.
can be excluded from the shadow map render. Not all objects need be drawn
to the shadow map, with only important ‘shadow casting’ objects selected.
•If the light does not move and the shadow casting geometry does not
move, then the shadow map need not be recalculated and can be
cached/reused. Multiple lights require multiple depth maps.
•A depth offset shifting the objects away from the light is typically
applied to remove stitching problems (where the depth map value is
very close to the depth of the surface being drawn).
When drawing the scene from the normal camera viewpoint the
shadow map is used to:
•Find the position of the pixel as seen from the light
•Compares the position-to-light distance to the stored depth map
value
•Draw the pixel as in shadow or in light, as needed
View the DirectX SDK Shadow Mapping example
The principle behind shadow mapping is
straightforward. The implementation can be
problematic as:
•It can be difficult to select an appropriate
bias value
•It can be hard to remove artefacts at shadow
edges or handle small viewing angles.
Screen Space Blurred Shadow Mapping
Shadows are rendered to a texture (in screen space) and the texture then blurred
and later applied to the screen. Very easy to implement, but can suffer from shadow
bleeding and the cost of the extra passes.
Percentage Closer Filtering
The result of the depth comparison are filtered, e.g. when comparing depths,
some depths around the target position are also compared, with the result
averaged.
View the DirectX SDK Cascaded Shadow
Maps and Variance Shadows examples
AMBIENT
OCCLUSION
Exploration of in-game ambient occlusion
Ambient occlusion adds realism by taking into account attenuation of light due to occlusion. It
attempts to approximate the way light radiates in real life (including off what are normally considered
non-reflective surfaces).
Ambient occlusion is a global method (unlike Phong shading which is a local method), meaning the
illumination at each point is a function of other geometry in the scene.
As a result, points surrounded by
a large amount of geometry are
rendered dark, whereas points
with little geometry on the visible
hemisphere appear well lit.
Ambient occlusion is most often calculated by casting rays in every direction from the
surface. Rays which reach the background or “sky” increase the brightness of the
surface, whereas a ray which hits any other object contributes no illumination.
Video not available in on-line slides
It works by comparing the current fragment depth with a selection of random sample
depths around it to see if the current depth is occluded or not. The current fragment is
occluded if the sample is closer to the eye than the surrounding fragments.
Whilst the approach is very simple, it is also highly effective.
SSAO is a recent technique (introduced
within the game Crysis) which is
capable of creating an approximation
of ambient occlusion by using the depth
of the rendered scene.
•For every pixel, a shader samples the surrounding depth values to measure occlusion from each of the sampled
points.
•Sampling is performed using a randomly-rotated kernel (repeated every N screen pixels), ensuring that only high-
frequency noise is introduced in the final output.
•The noise can be mostly removed using a NxN post-process blurring step taking into account depth discontinuities.
•The approach permits the number of depth samples to be reduced to about 16 per pixel (enabling real-time
application) whilst providing a high quality result.
DIRECTED READING
Directed reading concerning lighting and shadowing
Directed
reading
Direct
ed
readi
ng
•Read Projective Texture Mapping – for information on projective
texturing (underpinning shadow mapping)
•Read DevMaster - Shadow Mapping and Shadow Volumes – for an
excellent introduction to shadowing
•Read GDC - Shadow Mapping GPU-based Tips and Techniques –
exploring different approaches to shadow mapping
Direc
ted
readi
ng
•Read GPU Gems - Efficient Shadow Volume Rendering – for information on how to render
shadow volumes
•Read GDC - Advanced Soft Shadow Mapping Techniques – exploring shadow map
softening techniques
•Read High-Quality Adaptive Soft Shadow Mapping – for an example of ongoing research
•Read GPU Gems - Shadow Map Antialiasing – for information on efficient dithering
Direc
ted
readi
ng
•Read GPU Gems – Ambient Occlusion – providing a good overview of AO
•Read GPU Gems 2 – Ambient Occlusion and Indirect Lighting – exploring forms
of indirect lighting
•Read Hardware Accelerated Ambient Occlusion Techniques on GPUs –
provided an excellent account of GPU screen-space AO
•More generally explore gamerendering.com on other aspects of lighting:
To do:
Read the directed
reading
Think if you would like to
explore lighting /
shading for your project
Today we
explored:
Different types
of shadow
techniques
Ambient
occulusion