Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a...
Transcript of Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a...
![Page 1: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/1.jpg)
Chap 4, Renderer (Graphics-U) 1 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Chap 4 Implementation of a Renderer
Chap 8 of Angel’s book (2nd ed.) Four major tasks Line-segment clipping 3D clipping Scan conversion Scan conversion of polygons Polygon clipping Clipping of other primitives Hidden surface removal
![Page 2: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/2.jpg)
Chap 4, Renderer (Graphics-U) 2 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Four major tasks of a renderer
Modeling Geometric processing
Viewing pipeline Clipping
Line segment Polygon
Hidden surface removal Rasterization (scan conversion) Shading and Display
![Page 3: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/3.jpg)
Chap 4, Renderer (Graphics-U) 3 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Line-segment clipping Line-rectangle clipping
Brute-force approach (Find the line-edge intersection and clip)
Requires floating-point multiplication and division. Cohen-Sutherland clipping
Requires only floating-point subtractions and bit operations.
![Page 4: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/4.jpg)
Chap 4, Renderer (Graphics-U) 4 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -1
Extend the window’s sides to infinity and break up space into 9 regions.
Each region is assigned a 4-bit binary outcode, b0b1b2b3, as follows.
otherwise0
if1
otherwise0
if1
otherwise0
if1
otherwise0
if1
min3
max2
min1
max0
xxb
xxb
yyb
yyb
![Page 5: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/5.jpg)
Chap 4, Renderer (Graphics-U) 5 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -2
Test for trivially accepted (two endpoints are inside the rectangle)
Test for trivially rejected (two endpoints are in the same half-space of a clipping edge)
If the line segment can be neither trivially accepted or rejected, it is subdivided into two segments at a clip edge so that one segment can be trivially rejected.
![Page 6: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/6.jpg)
Chap 4, Renderer (Graphics-U) 6 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -3
For a line segment with outcodes o1 and o2 (require 8 subtractions per line segment)
o1=o2=0 Entire line segment is inside the window. Ex.
AB o1<>0, o2=0 or o1=0, o2<>0
One is inside and one is outside Subdivide the line segment by edge or edges
indicated by the nonzero outcode. Ex. CD
![Page 7: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/7.jpg)
Chap 4, Renderer (Graphics-U) 7 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -4
o1 & o2 <> 0 Both are outside of the same outside side
of the window, so discarded. Ex. EF o1 & o2 = 0
Both are outside, but of different edges of the window. We can not determine if the segment is outside, so require subdivision by computing line-edge intersections and do the clipping recursively. Ex. GH, IJ
![Page 8: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/8.jpg)
Chap 4, Renderer (Graphics-U) 8 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -5
Subdividing the line segment Subdivide the segment by a crossing
edge. Which edge? Find an endpoint that lies outside Test the outcode to find the edge that is
crossed based on the order: top to bottom and then right to left, which can be found from the leftmost 1-bit in the outcode.
![Page 9: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/9.jpg)
Chap 4, Renderer (Graphics-U) 9 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -6
Example
![Page 10: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/10.jpg)
Chap 4, Renderer (Graphics-U) 10 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -7
![Page 11: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/11.jpg)
Chap 4, Renderer (Graphics-U) 11 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Cohen-Sutherland clipping -8
The Cohen-Sutherland clipping works best when there are many line segments, but few are actually displayed (less subdivisions).
Can be easily extended to 3D clipping. Floating-point arithmetic required
Requires only floating-point subtractions and Boolean operations for decision test.
A single division is required for intersection computation.
![Page 12: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/12.jpg)
Chap 4, Renderer (Graphics-U) 12 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -1
For general convex polygons or polyhedra. More efficient than Cohen-Sutherland clipping
since repetitive loops are avoided. Avoid floating-point divisions for decision test. Steps
Compute intersections of the line segment with all clipping edges.
Determine the clipped segment based on a series of simple comparisons (use parameter values)
![Page 13: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/13.jpg)
Chap 4, Renderer (Graphics-U) 13 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -2
![Page 14: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/14.jpg)
Chap 4, Renderer (Graphics-U) 14 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -3
![Page 15: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/15.jpg)
Chap 4, Renderer (Graphics-U) 15 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -4
![Page 16: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/16.jpg)
Chap 4, Renderer (Graphics-U) 16 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -5
![Page 17: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/17.jpg)
Chap 4, Renderer (Graphics-U) 17 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Parametric line clippingCyrus-Beck clipping -6
![Page 18: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/18.jpg)
Chap 4, Renderer (Graphics-U) 18 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
![Page 19: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/19.jpg)
Chap 4, Renderer (Graphics-U) 19 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Liang-Barsky clipping Similar to Cyrus-Beck clipping, but
especially fast for upright 2D and 3D clip regions.
Offers additional trivial rejection testing that can avoid calculation of all 4 parameter values for lines that do not intersect the clip rectangle. Avoid computing intersections until they are
needed. Based on the order of edges intersecting the
line, many lines can be rejected before all four intersections are known.
![Page 20: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/20.jpg)
Chap 4, Renderer (Graphics-U) 20 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon clipping -1
Usefulness for clip polygons against other polygons Clip polygon against windows for display Shadow generation and HSR require
clipping of polygons against other polygons. Anti-aliasing and compositing methods
Shadow generation by clipping
![Page 21: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/21.jpg)
Chap 4, Renderer (Graphics-U) 21 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon clipping -2 Brute-force approach: based on line
clipping Difficulties for clipping concave polygons
Polygon clipping may generate more than one polygons, which leads difficulties in implementation.
API might either forbid the use of cancave polygons or divide a polygon into a set of convex polygons.
![Page 22: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/22.jpg)
Chap 4, Renderer (Graphics-U) 22 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Sutherland-Hodgeman clipping -1
Clips a general polygon against any convex polygon.
A divide-and-conquer strategy, which decompose the problem into a series of simple and identical problems, that, when combined solve the overall problem. The simple problem is to clip a polygon against
a single edge-line. Pipelines the clippers
Decomposes into a pipeline, each of which deals with clipping the polygon against an edge-line.
![Page 23: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/23.jpg)
Chap 4, Renderer (Graphics-U) 23 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Sutherland-Hodgeman clipping -2
Clipping a line segment against top-edge line Consider this operation as a black box
whose input and output are pairs of vertices, with ymax as a parameter known to the clipper.
If there is an intersection, say (x3,y3), then it is returned.
![Page 24: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/24.jpg)
Chap 4, Renderer (Graphics-U) 24 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Sutherland-Hodgeman clipping -3
We clip against the top,bottom, right, and leftlines independently, andArrange in the pipeline.
![Page 25: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/25.jpg)
Chap 4, Renderer (Graphics-U) 25 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Sutherland-Hodgeman clipping -4
Example:
![Page 26: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/26.jpg)
Chap 4, Renderer (Graphics-U) 26 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Clipping in three dimensions -
1
Clip a line against a right parallelepiped volume.
The clipping algorithms we have introduced can be extended to such a 3D clipping.
For Cohen-Sutherland algorithm, space is subdivided into 27 regions and a 6-bit code is assigned to each region.
![Page 27: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/27.jpg)
Chap 4, Renderer (Graphics-U) 27 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Clipping in three dimensions -2 Cohen-Sutherland’s extension
![Page 28: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/28.jpg)
Chap 4, Renderer (Graphics-U) 28 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan conversionRasterization of primitives
Frame buffer of n x m pixels with (0,0) corresponding to the lower-left corner.
Scan conversion of line segments Pixels are squares, while vertices are real
numbers in screen coordinates. Scan conversion algorithms for line
segments DDA Bresenham’s algorithm Midpoint algorithm
![Page 29: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/29.jpg)
Chap 4, Renderer (Graphics-U) 29 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
DDA algorithm -1
Given a line segment (x1,y1) and (x2,y2) with slope m=(y2-y1)/(x2-x1).
Assume 0 <= m <= 1 for(x=x1, x <= x2, x++)
{ y+=m; write(x, round(y), line_color); }
For m > 1, x and y are swapped using symmetry.
![Page 30: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/30.jpg)
Chap 4, Renderer (Graphics-U) 30 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
DDA algorithm -2
High- and low-slope lines Using symmetry
![Page 31: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/31.jpg)
Chap 4, Renderer (Graphics-U) 31 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Bresenham’s algorithm -1
DDA requires floating-point addition and rounding for each pixel.
Bresnham’s algorithm: Avoids all floating-point calculation Is now the standard algorithm in hardware
and software rasterizer. (Need antialiasing) Given a line segment (x1,y1) and (x2,y2)
with slope m=(y2-y1)/(x2-x1). Line: y=mx+h
Assume 0 <= m <= 1
![Page 32: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/32.jpg)
Chap 4, Renderer (Graphics-U) 32 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Bresenham’s algorithm -2
Suppose a pixel is placed at (i,j), what is the next? Based on the slope, it is
NE=(i+1,j+1) or E=(i+1,j) ? Determine by a decision variable di = a-
b di > 0, we choose E di < 0, we choose NE di = 0, don’t care
i+1i
j+1
j
j-1
NE
E
![Page 33: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/33.jpg)
Chap 4, Renderer (Graphics-U) 33 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Bresenham’s algorithm -3
How do we compute d? Need floating-point number if y=mx+h is
used. Use fixed-point operation instead of floating-
point. Replace floating-point operation with fixed-point
op. Apply incremental computation
di is an integer, which requires a fair amount of fixed-point arithmetic. Consider
cxyyxhxyxyyx
hyxmx
yhxmhxmyxbaxd
xxxyhxmbhxmya
iiii
ii
iiiii
iiii
22)]12(2[22
122)1(2
)1(])1([)1()(
0 ,)1( ,])1([)1( 12
![Page 34: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/34.jpg)
Chap 4, Renderer (Graphics-U) 34 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Bresenham’s algorithm -4
0 when 1 and 0 when Since
otherwise )2(-
0 if 2-)(2)(2
22
22
11
111
111
iiiiii
iiiiiii
iii
iii
dyydyy
xy
dyyyxxxydd
cxyyxd
cxyyxd
and select so ,0 1 iik yyEd
i+1 i+1 i+2 i
i+2 i
j
j+1
j+2
j
j+1
1 and select so ,0 1 iik yyNEd
![Page 35: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/35.jpg)
Chap 4, Renderer (Graphics-U) 35 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Bresenham’s algorithm -5
Incremental calculation, which requires only an addition and a sign test.
otherwisexy
dydd iii )(2
021
0id 0id
i+1 i+1 i+2i i+2 i
j
j+1
j+2
j
j+1
![Page 36: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/36.jpg)
Chap 4, Renderer (Graphics-U) 36 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan conversion of polygonsPolygon fill
Useful for filling a polygon. Many viable methods available, but
method is expected to fit with the pipeline and can support shading.
Simple polygons Convex: ok by OpenGL and others Concave: need to determine inside/outside
point. Nonflat: work with its projection
Non-simple polygons (self-intersecting) Need to determine if a given point is inside or
outside the polygon.
![Page 37: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/37.jpg)
Chap 4, Renderer (Graphics-U) 37 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill
Polygon rasterizer: Input: polygon Output: Frame buffer with the correct pixel
set. Polygon filling
Flood fill Scan-line fill Odd-even fill
![Page 38: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/38.jpg)
Chap 4, Renderer (Graphics-U) 38 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Flood fill
Steps Rasterize edges into frame buffer using
Bresenham’s algorithm. Find a seed pixel inside the polygon. Visit neighbors recursively and color if it is
not edge pixels.
![Page 39: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/39.jpg)
Chap 4, Renderer (Graphics-U) 39 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Scan-line fill
Generate pixels as they are displayed. On each scan-line
Do odd-even test to determine inside spans. For each pixel, do HSR and shading.
Need data structures to avoid general search
![Page 40: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/40.jpg)
Chap 4, Renderer (Graphics-U) 40 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Scan-line fill : OpenGL case
OpenGL guarantees correct rendering only for convex polygons.
Application API needs to ensure all polygons are convex or provide tessellation software.
A good tessellation should Output triangles of good aspect ratio. Produce in triangle strip and fans form. A tessellator available in GLU library.
![Page 41: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/41.jpg)
Chap 4, Renderer (Graphics-U) 41 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Scan-line fill : Scan conversion with Z-
buffer -1
Z-buffer can integrates line scan-conversion, HSR, and shading.
Dual representation of a polygon (after projection and perspective division)
Normalized device coordinates (3D) Screen coordinates (2D) (the result of orthogonal
projection) Z-buffer uses scan-line approach
For a scan line on screen coordinates Move along scan line a pixel at a time For the pixel, do Z-buffer test using normalized device
coordinates
![Page 42: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/42.jpg)
Chap 4, Renderer (Graphics-U) 42 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Scan-line fill : Scan conversion with Z-
buffer -2
Dual representations Scan line
![Page 43: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/43.jpg)
Chap 4, Renderer (Graphics-U) 43 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Odd-even fill
When vertices lie on the scan-lines, Case (a) and (b) must be
treated differently when using odd-even fill definition
Case (a): zero or two crossings Case (b): one edge crossing
![Page 44: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/44.jpg)
Chap 4, Renderer (Graphics-U) 44 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Polygon fill Odd-even fill
Check which one, and (a) Count the line-edge
intersection as 0 or 2 edge crossings for case c(a).
(b) Count 1 edge crossing for (b).
Another approach: Virtual frame buffer A frame buffer of twice
resolution of the real one. Pixels are located at only even
values of y, and vertices are at odd values of y.
![Page 45: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/45.jpg)
Chap 4, Renderer (Graphics-U) 45 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Inside-outside testing –1Odd-even test
Concept Any ray emanating from an inside point and
going off to infinity must cross an odd number of edges.
Any ray emanating from an outside point and entering the polygon crosses an even number of edges before reaching infinity.
Odd-even test A point is inside if we draw a line through it
(passes through no polygon vertices) and, starting on the outside, we cross an odd number of edges before reaching it.
![Page 46: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/46.jpg)
Chap 4, Renderer (Graphics-U) 46 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Inside-outside testing –2Winding number test
Filling with odd-even test Filling with winding test
![Page 47: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/47.jpg)
Chap 4, Renderer (Graphics-U) 47 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Inside-outside testing –3 Winding number testing
Odd-even test Easy to implement and integrates well with pipeline
algorithm, but has a checkerboard appearance. Winding number test for a point P
Traverse Q along the edges in a particular direction. Consider the encirclement of the rubber band from
P to Q. Winding number for a point:
Number of times it is encircled by the polygon edges. We count one direction as positive and another as
negative. Inside: nonzero winding number, Outside: 0 winding number
![Page 48: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/48.jpg)
Chap 4, Renderer (Graphics-U) 48 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Hidden surface removal Review on HSR Approaches
Object-space or image-space Back-face removal
Done before HSR. Applied after transformation to normalized
device coordinate. glCullFace() in OpenGL turns on back-face
culling. Z-buffer Depth sort Scan line
![Page 49: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/49.jpg)
Chap 4, Renderer (Graphics-U) 49 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Review on HSR -1
By polygon vs. by scan line By polygon: Z-buffer By scan line: scan line Z-buffer, scan-line
algorithm Issues of by-polygon rendering:
Simple to implement, requires little data structure active at any one time, places no limit on scene complexity, hardware support.
It does not make use of possible efficiency measure such as sharing information between polygons, and is rather expensive in memory usage.
![Page 50: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/50.jpg)
Chap 4, Renderer (Graphics-U) 50 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Review on HSR -2
Issues of by-scan-line rendering: Much more complex to implement, requires
more complicated data structure active at any one time.
It is generally claimed that the scan algorithms are more efficient than Z-buffer algorithm, except for very complex scenes. It places a limit on scene complexity.
It makes use of possible efficiency measure such as sharing information between polygons, and shading calculations are performed only once per pixel.
No hardware support.
![Page 51: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/51.jpg)
Chap 4, Renderer (Graphics-U) 51 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Review on HSR -3
Image-space vs. object space approach Image-space: Ray tracing, Z-buffer, scan-line Object-space: painter’s depth sorting, BSP
![Page 52: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/52.jpg)
Chap 4, Renderer (Graphics-U) 52 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Problems on Z-buffer All hidden polygons are rendered
All front facing, but unseen, polygons still need to be rendered, which is a major cost factor we must avoid for complex scenes.
Shading cost vs. polygon size Although the cost of rendering polygons is
low because of incremental shading, this main advantage rapidly diminishes as the scene becomes complex and polygons smaller, since the set-up cost at polygon vertices predominate over pixel-by-pixel calculation.
![Page 53: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/53.jpg)
Chap 4, Renderer (Graphics-U) 53 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan Line HSR
Z-buffer Polygon by polygon. Pixel-by-pixel for Z-comparison. Shading is done many times for each pixel.
Scan-line All polygons should be in memory. Z-comparison for each span over which
there is no depth conflict. Shading is span-based and done once for
each pixel.
![Page 54: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/54.jpg)
Chap 4, Renderer (Graphics-U) 54 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSRSteps
Perform in 3D screen space Move a scan-line plane done the Ys
axis. Intersecting the plane with polygons,
resulting in a set of segments. Sorting vertices of segments produces
spans, a coherent unit in which there is no depth conflict.
Z-comparison and shading is done for each span.
![Page 55: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/55.jpg)
Chap 4, Renderer (Graphics-U) 55 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Conceptual Idea -1
![Page 56: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/56.jpg)
Chap 4, Renderer (Graphics-U) 56 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Conceptual Idea -2
![Page 57: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/57.jpg)
Chap 4, Renderer (Graphics-U) 57 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Penetrating polygons
Penetrating polygons are generally split to ensure the simple depth order within a span.
Polygon KLM pierces polygon RST at line L’M’.KLM is broken up into KLL’M” and L’MM’, introducingfalse edge M’L’.
![Page 58: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/58.jpg)
Chap 4, Renderer (Graphics-U) 58 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Data Structure -1
Needs the following data structure Edge table (ET)
Entries in ET are sorted in buckets based on each edge’s smaller y coord., and within buckets are ordered by increasing x coord. of their lower endpoint.
Polygon table (PT) Contains all polygons and their information.
![Page 59: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/59.jpg)
Chap 4, Renderer (Graphics-U) 59 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Data Structure -2
Active-edge list (AEL) Keep edges processed by current scan line. Edges are kept in order of increasing x coord.
Of scan-line/edge intersection (can be obtained by the previous x-intersection and ).x
![Page 60: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/60.jpg)
Chap 4, Renderer (Graphics-U) 60 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Polygon vs. edges
Intersecting scan-line plane and polygons results in line segments Sorted projection of the end points forms
spans A span’s endpoints may come from two
different polygons Intersecting scan-line plane and edges
results in points Sorted projection of the points forms spans Need a scheme to find which polygon a span
comes from
![Page 61: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/61.jpg)
Chap 4, Renderer (Graphics-U) 61 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Update of AEL
When we move the scan line yscan from y to y+1, the AEL is updated:
Edges currently in AEL but not intersected by new scan line (those ymax=y) are deleted.
New x intersections are calculated incrementally for edges that were in AEL but are not yet completed.
Any new edges intersected by new scan line (those ymin=y+1) are added to AEL.
![Page 62: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/62.jpg)
Chap 4, Renderer (Graphics-U) 62 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Pseudo Code
1. Construct ET and PT2. yscan = bottom to top {
a. Move from ET bucket yscan to AEL, then sort AEL on x.
b. For each span, determine the depth order and do the shading (use in-out bit and depths on span boundaries)
c. Remove from AEL those edges with yscan = ymax
d. Increment yscan by 1e. For each nonvertical edge remaining in
AEL, update x for the new yscan.}
![Page 63: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/63.jpg)
Chap 4, Renderer (Graphics-U) 63 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Example -1
![Page 64: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/64.jpg)
Chap 4, Renderer (Graphics-U) 64 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Example -2
For scan line yscan=
AEL contains AB and AC which are processed from left to right. To process AB we first invert in-out bit of polygon ABC to true, thus the scan is in ABC. Since only ABC has in-out bit true, it must be visible, so shade the span using ABC (from AB to the next edge AC in AEL). At AC the in-out bit becomes false. Since AC is the last edge in AEL, the scan line process is completed.
![Page 65: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/65.jpg)
Chap 4, Renderer (Graphics-U) 65 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Example -3
For scan line yscan= AEL is updated to have AB, AC, FD, and FE.
The scan is in only one polygon at a time. For scan line yscan= Entering ABC causes its flag to become true. ABC’s shade is applied for the span up to the next edge DE. At this point, the flag for DEF also becomes true, so the scan is in two polygons. We determine the visibility by
![Page 66: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/66.jpg)
Chap 4, Renderer (Graphics-U) 66 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Scan-Line HSR Example -4
(Continue) For scan line yscan=
evaluating z values at intersection of y= and edge DE (using y= and x from DE
in AEL). Suppose DEF is visible, the shade of DEF is used for span to edge CB, at which point ABC’s flag becomes false and the scan is again in only one polygon DEF whose shade continues to be used up to edge FE.
![Page 67: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/67.jpg)
Chap 4, Renderer (Graphics-U) 67 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Depth sortPainter’s algorithm
Polygons are rendered completely in a back-to-front order (done in the object space).
Painter’s depth sort Sort the z-extents of polygons with farthest z No overlapping on z-extents, render the
polygons back to front. Otherwise, do further five tests
No overlapping on x-extent or y-extent Overlap on x-extent and y-extent
One lies in a half-space of another polygon’s plane Others: Overlapping cyclically or polygon
penetrating – requires subdivision
![Page 68: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/68.jpg)
Chap 4, Renderer (Graphics-U) 68 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Painter’s algorithm -1
Non-overlapping on x- or y-extent
Overlapping on x- and y-extentRequire further tests
Z-extents of sorted polygonsRendered from back to front
![Page 69: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/69.jpg)
Chap 4, Renderer (Graphics-U) 69 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Painter’s algorithm -2
Cyclic overlap Piercing polygons
![Page 70: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/70.jpg)
Chap 4, Renderer (Graphics-U) 70 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Painter’s algorithm -3
Sort the z-extents of polygons with farthest z No overlapping on z-extents, render the polygons
back to front. For a polygon P whose z-extent overlap others
It must be tested against each polygon Q whose z-extent overlaps P’s z-extent to see whether we can determine definitely that P does not obscure any part of Q.
For each Q, up to 5 tests are performed. Five test in increasing difficulty As soon as one succeeds, P is proven not to obscure any
part of Q. Once fail for a test, P might obscure Q, and need more work.
If all such polygons pass the test, then P is removed and rendered, and the next polygon on the list becomes P.
![Page 71: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/71.jpg)
Chap 4, Renderer (Graphics-U) 71 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Painter’s algorithm -4
5 tests for polygon P against Q: No overlapping x-extent or y-extent ?
Do the polygons’ x-extents not overlap? (fast) Do the polygons’ y-extents not overlap? (fast)
Overlap on x-extent and y-extent Is P entirely on the opposite side of Q’s plane
from the viewpoint? (pretty fast) Is Q entirely on the same side of P’s plane as
the viewpoint? (pretty fast) Do the projections of P and Q on the
screen not overlap? (expensive)
![Page 72: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/72.jpg)
Chap 4, Renderer (Graphics-U) 72 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
X
Y
(1)
Y
(2)
X
(3)
QP
View point
(4) (5)
Screen
Q
P
View point
Painter’s algorithm -5
![Page 73: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/73.jpg)
Chap 4, Renderer (Graphics-U) 73 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Painter’s algorithm -6
If all 5 tests fail, we assume for the moment that P actually obscures Q, and test whether Q can or cannot obscure P.
Tests 1, 2, and 5 do not need to be repeated. New versions of tests 3 and 4
Is Q entirely on the opposite side of P’s plane from the viewpoint?
Is P entirely on the same side of Q’s plane as the viewpoint?
If new version of test 3 or 4 succeeds, Q is put at the end of list and becomes the new P.
If fail, Q may obscure P, split Q by plane of P and insert pieces of Q into the list.
![Page 74: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/74.jpg)
Chap 4, Renderer (Graphics-U) 74 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR
Z-buffer vs. BSP One pass vs. two passes Pixel-depth testing vs. polygon-depth test Dynamic scene and static scene Both: all hidden polygons are rendered
Concept A polygon will be scan-converted correctly if
all polygons on the other side of it from the viewer are scan-converted first, followed by it, and then all polygons on the same side of it as the viewer.
![Page 75: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/75.jpg)
Chap 4, Renderer (Graphics-U) 75 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSRTwo Passes
Preprocess: BSP construction (once only) A view-independent step Build a binary tree of polygons Much visibility processing takes place in this
pass. Run-time: Determine depth order
A view-dependent step Traverses the BSP tree in a modified in-order
traversal to produce a correct depth-ordered polygon list.
![Page 76: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/76.jpg)
Chap 4, Renderer (Graphics-U) 76 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR BSP Tree Construction
The root polygon is selected and used to partition the scene into two half-spaces (front and back, relative to its surface outward normal) and each polygon is assign to a proper half-space.
Any polygon intersecting the partition plane is split to two, each belongs to a half-space.
The process continues recursively until each node contains only a single polygon.
![Page 77: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/77.jpg)
Chap 4, Renderer (Graphics-U) 77 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Determining Depth Order
If the viewer is in the root polygon’s front half-space, then all polygons in the other side (back half-space) are displayed first, then the root, and finally all polygons in front side. Polygons in either half-spaces are displayed
in a recursive manner. If the polygon is seen only on edge, either
display order suffices. Such a traversal recursively proceeds
until a leaf is reached.
![Page 78: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/78.jpg)
Chap 4, Renderer (Graphics-U) 78 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Determining Depth Order
}
e)_back_spacP_child_in BSP(eye,
required if Poutput facing,-back is P
ce)_front_spaP_child_in BSP(eye, {
else
}
ce)_front_spaP_child_in BSP(eye,
POutput
e)_back_spacP_child_in BSP(eye, {
P) of space-subfront in (eye if
P) node BSP(eye,
![Page 79: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/79.jpg)
Chap 4, Renderer (Graphics-U) 79 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Example -1
![Page 80: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/80.jpg)
Chap 4, Renderer (Graphics-U) 80 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Example -2
![Page 81: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/81.jpg)
Chap 4, Renderer (Graphics-U) 81 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Back-face, view-volume culling
Back-face culling can be done at no cost during the tree traversal When the viewer is in the back half-space of
the polygon to be rendered, that polygon can be culled.
View-volume culling If all of the view volume’s 8 vertices lie
completely on one side of a polygon’s plane, the entire subtree on the opposite side can be eliminated from further traversal
![Page 82: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/82.jpg)
Chap 4, Renderer (Graphics-U) 82 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
BSP for HSR Considerations
Partition plane selection Causes the fewest splits among all its
descendents. Even partition
Compare to depth-sort algorithm All depth-sorting is done in object space. Painter’s algorithm performs in run-time. BSP performs polygon splits in preprocessing.
More efficient than Z-buffer algorithmically for static scenes, but has no hardware support.
![Page 83: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/83.jpg)
Chap 4, Renderer (Graphics-U) 83 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Antialiasing
Rasterized line segment looked jagged. Why?
The number of pixel is fixed. Pixel locations are fixed. Pixels have a fixed size and shape.
Antialiasing Ideal line: one-pixel-wide line By area averaging: Shade each box by the
percentage of the ideal line that crosses it.
![Page 84: Chap 4, Renderer (Graphics-U)1CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang Chap 4 Implementation of a Renderer Chap 8 of Angel ’ s book (2nd ed.) Four major.](https://reader036.fdocuments.us/reader036/viewer/2022062421/56649cea5503460f949b4d64/html5/thumbnails/84.jpg)
Chap 4, Renderer (Graphics-U) 84 CGGM Lab.,CSIE Dept.,NCTU Jung Hong Chuang
Antialiasing
Alised line segment Antialised line segment
Ideal raster line
Magnified alised line segment
Magnified antialised line segment