Angel CG23

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 21

Implementation III

Ed Angel
Professor of Computer Science,
Electrical and Computer
Engineering, and Media Arts
University of New Mexico
2
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Objectives
Survey Line Drawing Algorithms
- DDA
- Bresenham
3
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
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
4
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
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
x
y
m

5
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
dy/dx = m = y/x = y
2
-y
1
/x
2
-x
1
Along scan line x = 1
For(x=x1; x<=x2,ix++) {
y+=m;
write_pixel(x, round(y), line_color)
}
6
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Problem
DDA = for each x plot pixel at closest y
- Problems for steep lines
7
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
8
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Bresenhams Algorithm
DDA requires one floating point addition per step
We can eliminate all fp through Bresenhams
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
9
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Candidate Pixels
1 m 0
last pixel
candidates
Note that line could have
passed through any
part of this pixel
10
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Decision Variable
-
d = x(b-a)
d is an integer
d > 0 use upper pixel
d < 0 use lower pixel
11
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Incremental Form
More efficient if we look at d
k
, the value of
the decision variable at x = k
d
k+1
= d
k
2y, if d
k
<0
d
k+1
= d
k
2(y- x), otherwise
For each x, we need do only an integer
addition and a test
Single instruction on graphics chips
12
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Polygon Scan Conversion
Scan Conversion = Fill
How to tell inside from outside
- Convex easy
- Nonsimple difficult
- Odd even test
Count edge crossings

- Winding number
odd-even fill
13
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Winding Number
Count clockwise encirclements of point





Alternate definition of inside: inside if
winding number 0
winding number = 2
winding number = 1
14
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Filling in the Frame Buffer
Fill at end of pipeline
- Convex Polygons only
- Nonconvex polygons assumed to have been
tessellated
- Shades (colors) have been computed for
vertices (Gouraud shading)
- Combine with z-buffer algorithm
March across scan lines interpolating shades
Incremental work small
15
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Using Interpolation
span
C
1
C
3
C
2
C
5
C
4
scan line
C
1
C
2
C
3
specified by glColor or by vertex shading
C
4
determined by interpolating between C
1
and C
2
C
5
determined by interpolating between C
2
and C
3
interpolate between C
4
and C
5
along span


16
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Flood Fill
Fill can be done recursively if we know a seed
point located inside (WHITE)
Scan convert edges into buffer in edge/inside
color (BLACK)
flood_fill(int x, int y) {
if(read_pixel(x,y)= = WHITE) {
write_pixel(x,y,BLACK);
flood_fill(x-1, y);
flood_fill(x+1, y);
flood_fill(x, y+1);
flood_fill(x, y-1);
} }
17
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Scan Line Fill
Can also fill by maintaining a data structure of all
intersections of polygons with scan lines
- Sort by scan line
- Fill each span
vertex order generated
by vertex list
desired order
18
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Data Structure
19
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Aliasing
Ideal rasterized line should be 1 pixel wide





Choosing best y for each x (or visa versa)
produces aliased raster lines
20
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Antialiasing by Area
Averaging
Color multiple pixels for each x depending on
coverage by ideal line
original
antialiased
magnified
21
Angel: Interactive Computer Graphics 5E Addison-Wesley 2009
Polygon Aliasing
Aliasing problems can be serious for
polygons
- Jaggedness of edges
- Small polygons neglected
- Need compositing so color
of one polygon does not
totally determine color of
pixel

All three polygons should contribute to color

You might also like