COMP136: Introduction to Computer Graphics

advertisement
Triangle Scan Conversion
Rasterization
• Rasterization (scan conversion)
– Determine which pixels that are inside
primitive specified by a set of vertices
– Produces a set of fragments
– Fragments have a location (pixel location) and
other attributes such color and texture
coordinates that are determined by interpolating
values at vertices
• Pixel colors determined later using color,
texture, and other vertex properties
2
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Triangle Area Filling Algorithms
• Why do we care about triangles?
• Edge Equations
• Edge Walking
Do something easier!
• Instead of polygons, let’s do something
easy!
• TRIANGLES! Why?
1) All polygons can
be broken into
triangles
2) Easy to specify
3) Always convex
4) Going to 3D is
MUCH easier
Polygons can be broken down
Triangulate - Dividing a
polygon into triangles.
Is it always possible? Why?
Any object can be broken down
into polygons
Specifying a model
• For polygons, we had to worry about
connectivity AND vertices.
• How would you specify a triangle? (What is
the minimum you need to draw one?)
– Only vertices
(x1,y1) (x2,y2) (x3,y3)
– No ambiguity
– Line equations
A1x1+B1y1+C1=0
A2x2+B2y2+C2=0
A3x3+B3y3+C3=0
Triangles are always convex
• What is a convex shape?
An object is convex if and only if any line segment connecting two
points on its boundary is contained entirely within the object or one
of its boundaries. Think about scan lines again!
Scan Converting a Triangle
• Recap what we
are trying to do
• Two main ways
to rasterize a
triangle
– Edge Equations
• A1x1+B1y1+C1=0
• A2x2+B2y2+C2=0
• A3x3+B3y3+C3=0
– Edge Walking
Types of Triangles
What determines the spans? Can you think of an easy way
to compute spans?
What is the special vertex here?
Edge Walking
• 1. Sort vertices in
y and then x
• 2. Determine the
middle vertex
• 3. Walk down
edges from P0
• 4. Compute
spans
P0
P1
P2
Edge Walking Pros and Cons
Pros
• Fast
• Easy to implement in
hardware
Cons
• Special Cases
• Interpolation can be
tricky
Color Interpolating
P0
(?, ?, ?)
P1
P2
(?, ?, ?)
Edge Equations
P0
• A1x1+B1y1+C1=0
• A2x2+B2y2+C2=0
• A3x3+B3y3+C3=0
• How do you go from:
x1, y1 - x2, y2 to
A1x1+B1y1+C1?
P2
P1
Given 2 points, compute A,B,C
Ax0  By 0  C  0
Ax1  By1  C  0
 x0
x
 1
 x0
x
 1
 x0
x
 1
y0   A
1
 C  



y1   B 
1
 y1  y0 
x  x 
 1 0
y0   A C  0
   



y1   B  C  0
 A
C
 B  x y  x y
 
0 1
1 0
y0   A
C 
  



y1   B 
C 
C = x 0y 1 – x 1y 0
A = y0 – y1
B = x1 – x0
Edge Equations
P0
• What does the edge
equation mean?
• A1x1+B1y1+C1=0
• Pt1[2,1], Pt2[6,11]
• A=-10, B=4, C=16
• What is the value of the
equation for the:
– gray part
– yellow part
– the boundary line
• What happens when we
reverse P0 and P1?
P1
Combining all edge equations
P0
1) Determine edge equations
for all three edges
2) Find out if we should
reverse the edges
3) Create a bounding box
4) Test all pixels in the
bounding box whether they too
reside on the same side
P1
P2
Edge Equations:
Interpolating Color
• Given redness at the 3 vertices, set up the
linear system of equations:
• The solution works out to:
Edge Equations:
Interpolating Color
• Notice that the columns in the matrix are
exactly the coefficients of the edge equations!
• So the setup cost per parameter is basically a
matrix multiply
• Per-pixel cost (the inner loop) cost equates to
tracking another edge equation value (which
is?)
– A: 1 add
Pros and Cons of Edge Equations
• Pros
• If you have the right
hardware
(PixelPlanes) then it is
very fast
• Fast tests
• Easy to interpolate
colors
• Cons
• Can be expensive if
you don’t have
hardware
• 50% efficient
Recap
P0
P0
P1
P1
P2
P2
Scan Conversion of Line
Segments
• Start with line segment in window
coordinates with integer values for
endpoints
• Assume implementation has a
write_pixel function
y = mx + h
23
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
DDA Algorithm
• Digital Differential Analyzer
– DDA was a mechanical device for numerical
solution of differential equations
– Line y=mx+ h satisfies differential equation
where m = Dy/Dx = y2-y1/x2-x1
• Along scan line Dx = 1 at each iteration of the loop
For(x=x1; x<=x2,ix++) {
y+=m;
write_pixel(x, round(y), line_color)
}
24
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Problem
• DDA = for each x plot pixel at closest y
– Problems for steep lines
25
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Using Symmetry
• Use for 1  m  0
• For m > 1, swap role of x and y
– For each y, plot closest x
26
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Bresenham’s Algorithm
• DDA requires one floating point addition per step
• We can eliminate all fp through Bresenham’s
algorithm
• Consider only 1  m  0
– Other cases by symmetry
• Assume pixel centers are at half integers
• If we start at a pixel that has been written, there are
only two candidates for the next pixel to be written
into the frame buffer
27
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Candidate Pixels
1m0
candidates
last pixel
28
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Decision Variable
d = Dx(b-a)
d is an integer
d > 0 use upper pixel
d < 0 use lower pixel
29
-
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Incremental Form
• More efficient if we look at dk, the value of
the decision variable at x = k
dk+1= dk –2Dy, if dk <0
dk+1= dk –2(Dy- Dx), otherwise
•For each x, we need do only an integer
addition and a test
•Single instruction on graphics chips
30
Angel: Interactive Computer
Graphics 5E © Addison-Wesley 2009
Download