Real-Time Rendering

advertisement
Real-Time Rendering
SPEEDING UP RENDERING
Lecture 04
Marina Gavrilova
Brief Outline







Culling
Hierarchical z-buffering
Hierarchical Occlusion Map (HOM)
Impostors and Nailboards
Hierarchical image caching
Level of Detail (LOD)
Triangle Stripping
Culling


To cut-off non-visible objects at an early stage of the
rendering pipeline
Backface culling: Most frequently used culling


Dot product of surface normal and view vector
Clustered Culling: Determine using 1 test whether a group
of polygon is visible or not
Hierarchical View Frustum
Culling




Bounding Volume (BV): Volume that encloses a group of objects
Compute BV Hierarchy and store as Directed Acyclic Graph (DAG)
or tree
Leaf holds actual geometry, parent BV contains several child BV
Most common BV: Sphere, Axis Aligned Bounding Box (AABB),
Oriented Bounding Box (OBB)
Hierarchy of BV is
often called a Scene
Graph
Rendering Scene with
Hierarchical BV

Child is explored for visibility only if parent
is completely or partially visible
BSP trees for static scene




Excellent for static scene
Takes a long time to compute
Efficient culling test
AABB based BSP:




Take one plane of the box
Divide objects into two sets
Subsequent division
Polygon Aligned BSP:



Choose one polygon as divider
Use the chosen polygons plane
to divide into two partition
Recursively divide the rest
Rendering scene using BSP



Polygon aligned BSP trees can be traversed to
find back to front order of objects
Render back to front: no z-buffer needed
Render front to back: no need to redraw
pixels



Pixel span: span of pixels in a row.
No need to draw pixel spans
BSP is also known as k-d trees in
computational geometry
Portal culling









Used in architectural design
Used in Computer games inside buildings with doors
Occluders are large walls
Compute Potentially visible set (PVS) from one point of view
Divide the entire scene into cells (i.e. room)
Doors and windows are called portals
Method 1: impose a BSP on cells (align the partitioning planes with
the walls)
Method 2: Subdivide cells and identify portals and construct a cell-tocell visibility data structure
Dramatic Speedup (up to 100 times) when scene is very complex with
many walls
Portal Culling (cont’d)



It is a refinement process (diminishing view frustum)
Reflection can be seen as another portal (with associated
PVS)
Used in Nintendo 64
Detail Culling



Object to Screen Pixel Ratio:
The area of the projected BV
of an object (in number of
pixels)
Omit objects who’s Screen
pixel ratio is too small
Replace object with simpler
model when screen pixel
ratio is low
Occlusion Culling



Z-buffer is not sufficient for densely packed objects (i.e. a
forest)
Occlusion culling saves rendering time by preventing
occluded objects from being rendered
General algorithm:
Hierarchical Z-buffering






Hierarchical Visibility Algorithm (HV)
Maintain scene model in an Octree
Maintain a z-pyramid for occlusion test
Recursively subdivide scene into octree boxes
(until each leaf contains<k primitives)
In 2D  Quadtree representation
Takes too much time to be generated in
runtime (only suitable for static scene)
HV algorithm


To maintain z-pyramid
recurse the furthest value
Upto 100 times less depth
test than standard z-buffer
Other HV based techniques





Hierarchical polygon tiling  Very Efficient
Without hardware implementation HV is too
slow for real-time graphics
Take advantage of frame-to-frame coherence
Rendering antialiased scenes hierarchically
without error bounds (Greene and Kass)
Visibility skeleton method (Durand)
The Hierarchical Occlusion
Map (HOM) algorithm


Another efficient algorithm
Occlusion is tested using two
mechanism:



Depth Test
Overlap Test
Identify potentially good
occluders (preprocessing)
The HOM Algorithm

Occlusion map
64 x 64
32 x 32
16 x 16
The HOM algorithm


Hierarchy can be
generated by
hardware texture
MIP maps
Test of occlusion
is based on a
threshold opacity
Shadow Culling


Find small number of large occluders
Make use of separating planes and
supporting planes
Impostors







Impostor: image of a complex
object that is texture mapped
onto a rectangle
Renders faster than the object
Exploits frame-to-frame
coherence
Objects rendered to a texture
from a particular viewpoint
Rendered object is reused until
the view point changes
significantly
Great for particle systems and
complex objects
Similar to billboards
(dynamic/adaptive billboard)
Nailboards


Nailboard: an Imposter frame with an attached z-buffer
(RGB, =z WRT impostor quad)
Avoids visibility problems of impostors
Real Object
Impostors
(without )
Nailboard
Nailboard
(2 bit )
(8 bit )
Level Of Detail (LOD)




Simpler objects as the object
moves further away from the
camera
LOD is often equals to # of
triangles
A more general measure for
error metric is screen pixel
ratio
Problem: When LOD changes
popping effects occur
Correcting LOD popping effect

Alpha LOD: increase transparency of object
as distance increases




Object fades away
More continuous
Object becomes invisible
Geomorph LOD



Use different geometry and perform smooth
geometric interpolation between LOD
Smooth continuous transition of LOD
Hard to implement
LOD management



Define an error metric for the object LOD
Optimally refine object to improve accuracy
Restrict refinement operations to a constant
amount per frame
Triangle Stripping




Define triangles of an
objects as continuous
strip
Improves rendering
performance
SGI algorithm (greedy)
Stripe algorithm
End of Lecture 04
Questions?
Download