Title: CAP4730: Computational Structures in Computer Graphics
1CAP4730 Computational Structures in Computer
Graphics
Visible Surface Determination
2Outline
- The goal of visible surface determination
- Normals
- Backface Culling
- Depth Buffer
- BSP Trees
- Determining if something isnt in the view
frustum (research topics)
3Goal of Visible Surface Determination
To draw only the surfaces (triangles) that are
visible, given a view point and a view direction
4Three reasons to not draw something
- 1. It isnt in the view frustum
- 2. It is back facing
- 3. Something is in front of it (occlusion)
- We need to do this computation quickly. How
quickly?
5Surface Normal
- Surface Normal - vector perpendicular to the
surface - Three non-collinear points (that make up a
triangle), also describes a plane. The normal is
the vector perpendicular to this plane.
6Normals
7How do we compute a normal?
- Q Given a Triangle, how do we compute a normal?
A Normal V0V1 X V0V2 But. we know V0V1 X V0V2
! V0V2 X V0V1
8Vertex Order
- Vertex order matters. We usually agree that
counterclockwise determines which side or a
triangle is labelled the front. Think Right
handed coordinate system.
9What do the normals tell us?
Q How can we use normals to tell us which face
of a triangle we see?
10Examine the angle between the normal and the view
direction
V
N
Front if V . N lt0
11Viewing Coordinates
If we are in viewing coordinates, how can we
simplify our comparison? Think about the
different components of the normals you want and
dont want.
12Backface Culling
- Before scan converting a triangle, determine if
it is facing you - Compute the dot product between the view vector
(V) and triangle normal (N) - Simplify this to examining only the z component
of the normal - If Nzlt0 then it is a front facing triangle, and
you should scan convert it - What surface visibility problems does this solve?
Not solve? - Review OpenGL code
13Multiple Objects
We can sort in z. What are the advantages?
Disadvantages? Called Painters Algorithm or
splatting.
14Painters Algorithm Subtleties
- What do we mean sort in z? That is for a
triangle, what is its representative z value? - Minimum z
- Maximum z
- Polygons centroid
- Work cost sort draw
- We still use Painters Algorithms for blended
objects (discussed in the Blending Lesson) - An object space visibility algorithm
15Side View
16Side View - What is a solution?
17Even Worse Why?
18Painters Algorithm
- Pros
- No extra memory
- Relatively fast
- Easy to understand and implement
- Cons
- Precision issues (and additional work to handle
them) - Sort stage
- Intersecting objects
19Depth Buffers
Goal We want to only draw something if it
appears in front of what is already drawn. What
does this require? Can we do this on a per
object basis?
20Depth Buffers
We cant do it object based, it must be image
based. What do we know about the x,y,z points
where the objects overlap? Remember our eye or
camera is at the origin of our view
coordinates. What does that mean need to store?
21Side View
22Algorithm
- We need to have an additional value for each
pixel that stores the depth value. - What is the data type for the depth value?
- How much memory does this require?
- Playstation 1 had 2 MB.
- The first 512 x 512 framebuffer cost 50,000
- Called Depth Buffering or Z buffering
23Depth Buffer Algorithm
- Begin frame
- Clear color
- Clear depth to z zmax
- Draw Triangles
- When scan converting znew pixel lt zvalue at the
pixel, set color and zvalue at the pixel znew
pixel - What does it mean if znew pixel gt zvalue at the
pixel? - Why do we clear the depth buffer?
- Now we see why it is sometimes called the z buffer
24Computing the znew pixel
- Q We can compute the znsc at the vertices, but
what is the znsc as we scan convert? - A We interpolate znsc while we scan convert too!
25Metrics for Visibility Algorithms
- Running Time - 1 extra compare
- Storage Overhead - 1 extra field per pixel
- Overdraw - we have to scan convert all triangles
- Memory Bandwidth - how much we have to retrieve
from memory. Increased - Precision - Lets examine the possible values of
z and what that means
26Z Buffer Precision
- What does the of bits for a depth buffer
element mean? - The z from eye space to normalized screen space
is not linear. That is we do not have the same
precision across z. (we divided by z). - In fact, half of our precision is in z0 and
z0.5. What does this mean? What happens if we
do NOT have enough precision?
27Z Fighting
- If we do not have enough precision in the depth
buffer, we can not determine which fragment
should be in front. - What does this mean for the near and far plane?
We want them to as closely approximate our
volume
28Z Fighting Zoomed In
Run Demo
29Dont forget
- Even in 1994, memory wasnt cheap. If we wanted
1024x768x16bit 1.6 MB additional memory. - Depth Buffers werent common till recently
because of this. - Since we have to draw every triangle -gt fill rate
goes UP. Currently graphics cards approach the
many billions of pixels per second. - An image space algorithm
- Lets review OpenGL code
30Depth Buffer Algorithm
- Pros
- Easy to understand and implement
- per pixel correct answer
- no preprocess
- draw objects in any order
- no need to redivide objects
- Cons
- Z precision
- additional memory
- Z fighting
31BSP Trees (Fuchs, et. al 1980)
- Binary Space Partitioning
- Doom and most games before depthbuffers (circa
1994-95) - Given a world, we want to build a data structure
that given any point, it can return a sorted list
of objects - What assumptions are we making?
- Note, what happens in those old games like Doom?
32BSP Trees
- Two stages
- preprocess - we do this at the offline
- runtime - what we do per frame
- Draw parallels to Doom
- Since this is easier in 2D, note all old FPS
are really 3D.
33BSP Algorithm
- For a viewpoint, determine where it sits on the
tree. - Now draw objects on the other half of the tree
- farside.draw(viewpoint)
- nearside.draw(viewpoint)
- Intuition - we draw things farther away first
- Is this an image space or object space algorithm?
34(No Transcript)
35(No Transcript)
36BSP Trees
- Pros
- Preprocess step means fast determination of what
we can see and cant - Works in 3D -gt Quake1
- Painters algorithm Pros
- Cons
- Still has intersecting object problems
- Static scene
37Determining if something is viewable
- Viewfrustum Culling (football example)
- Cells and Portals
- definitions
- cell
- portal
- preprocess step
- runtime computation
- where do we see it?
- Quake3
38(No Transcript)
39(No Transcript)
40(No Transcript)