Transcript Real-Time Rendering
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-to cell 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 To maintain z-pyramid recurse the furthest value Upto 100 times less depth test than standard z-buffer 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) Another efficient algorithm Occlusion is tested using two mechanism: Depth Test Overlap Test Identify potentially good occluders (preprocessing) Occlusion map 64 x 64 32 x 32 16 x 16 Hierarchy can be generated by hardware texture MIP maps Test of occlusion is based on a threshold opacity Find small number of large occluders Make use of separating planes and supporting planes 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) Nailboard: an Imposter frame with an attached z-buffer (RGB , =z WRT impostor quad) Avoids visibility problems of impostors Real Object Impostors (without ) Nailboard (2 bit ) Nailboard (8 bit ) 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 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 Define an error metric for the object LOD Optimally refine object to improve accuracy Restrict refinement operations to a constant amount per frame Define triangles of an objects as continuous strip Improves rendering performance SGI algorithm (greedy) Stripe algorithm Questions?HV algorithm
Other HV based techniques
The Hierarchical Occlusion Map (HOM) algorithm
The HOM Algorithm
The HOM algorithm
Shadow Culling
Impostors
Nailboards
Level Of Detail (LOD)
Correcting LOD popping effect
LOD management
Triangle Stripping
End of Lecture 04