DOC PREVIEW
UVA CS 445 - Polygon Rasterization and Clipping

This preview shows page 1-2-15-16-17-32-33 out of 33 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 33 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS 445 645 Introductory Computer Graphics Polygon Rasterization and Clipping Assignment 1 Grader has released a version of the code that you can review Go to class web page Click on Assignment 1 Find link to sample code Triangle Rasterization Issues Exactly which pixels should be lit A Those pixels inside the triangle edges What about pixels exactly on the edge Draw them order of triangles matters it shouldn t Don t draw them gaps possible between triangles We need a consistent if arbitrary rule Example draw pixels on left or top edge but not on right or bottom edge Triangle Rasterization Issues Sliver Triangle Rasterization Issues Moving Slivers Triangle Rasterization Issues Shared Edge Ordering General Polygon Rasterization Now that we can rasterize triangles what about general polygons We ll take an edge walking approach General Polygon Rasterization Consider the following polygon D B C A E F How do we know whether a given pixel on the scanline is inside or outside the polygon Polygon Rasterization Inside Outside Points Polygon Rasterization Inside Outside Points General Polygon Rasterization Basic idea use a parity test for each scanline edgeCnt 0 for each pixel on scanline l to r if oldpixel newpixel crosses edge edgeCnt draw the pixel if edgeCnt odd if edgeCnt 2 setPixel pixel General Polygon Rasterization Count your vertices carefully Details G I F H E C J A D B Faster Polygon Rasterization How can we optimize the code for each scanline edgeCnt 0 for each pixel on scanline l to r if oldpixel newpixel crosses edge edgeCnt draw the pixel if edgeCnt odd if edgeCnt 2 setPixel pixel Big cost testing pixels against each edge Solution active edge table AET Active Edge Table Idea Edges intersecting a given scanline are likely to intersect the next scanline The order of edge intersections doesn t change much from scanline to scanline Active Edge Table Algorithm scanline from bottom to top Go over example Sort all edges by their minimum y coord Starting at bottom add edges with Y min 0 to AET For each scanline Sort edges in AET by x intersection Walk from left to right setting pixels by parity rule Increment scanline Retire edges with Ymax Y Add edges with Ymin Y Recalculate edge intersections how Stop when Y Ymax for last edges Next Topic Clipping We ve been assuming that all primitives lines triangles polygons lie entirely within the viewport In general this assumption will not hold Clipping Analytically calculating the portions of primitives within the viewport Why Clip Bad idea to rasterize outside of framebuffer bounds Also don t waste time scan converting pixels outside window Clipping The na ve approach to clipping lines for each line segment for each edge of viewport find intersection points pick nearest point if anything is left draw it What do we mean by nearest How can we optimize this A B D C Trivial Accepts Big optimization trivial accept rejects How can we quickly determine whether a line segment is entirely inside the viewport A test both endpoints Trivial Rejects How can we know a line is outside viewport A if both endpoints on wrong side of same edge can trivially reject line Clipping Lines To Viewport Discard segments of lines outside viewport Trivially accept lines with both endpoints inside all edges of the viewport Trivially reject lines with both endpoints outside the same edge of the viewport Otherwise reduce to trivial cases by splitting into two segments Cohen Sutherland Line Clipping Divide viewplane into regions defined by viewport edges Assign each region a 4 bit outcode 1001 1000 1010 0001 0000 0010 0101 0100 0110 Cohen Sutherland Line Clipping Assign an outcode to each vertex of line If both outcodes 0 trivial accept bitwise AND vertex outcodes together If result 0 trivial reject Cohen Sutherland Line Clipping If line cannot be trivially accepted or rejected subdivide so that one or both segments can be discarded Pick an edge that the line crosses how Intersect line with edge how Discard portion on wrong side of edge and assign outcode to new vertex Apply trivial accept reject tests repeat if necessary Cohen Sutherland Line Clipping If line cannot be trivially accepted or rejected subdivide so that one or both segments can be discarded Pick an edge that the line crosses Check against edges in same order each time For example top bottom right left C B A D E Cohen Sutherland Line Clipping Intersect line with edge how C B A D E Cohen Sutherland Line Clipping Discard portion on wrong side of edge and assign outcode to new vertex C D B A Apply trivial accept reject tests and repeat if necessary Solving Simultaneous Equations Equation of a line Slope intercept explicit equation y mx b Implicit Equation Ax By C 0 Parametric Equation Line defined by two points P0 and P1 P t P0 P1 P0 t where P is a vector x y T x t x0 x1 x0 t y t x0 y1 y0 t Parametric Line Equation Describes a finite line Works with vertical lines like the viewport 0 t 1 Defines line between P0 and P1 t 0 Defines line before P0 t 1 Defines line after P1 Parametric Lines and Clipping Define each line in parametric form P0 t Pn 1 t Define each edge of viewport in parametric form PL t PR t PT t PB t When using Cohen Sutherland perform intersection calculation for appropriate viewport edge and line Computing Intersections Line 0 x0 x00 x01 x00 t0 y0 y00 y01 y00 t0 Viewport Edge L xL xL0 xL1 xL0 tL yL yL0 yL1 yL0 tL x00 x01 x00 t0 xL0 xL1 xL0 tL y00 y01 y00 t0 yL0 yL1 yL0 tL Solve for t0 and tL Truth in advertising Cohen Sutherland doesn t exactly do it this way You don t need to solve for t 0 and tL Cohen Sutherland Line Clipping Outcode tests and line edge intersects are quite fast But some lines require multiple iterations Fundamentally more efficient algorithms Cyrus Beck uses parametric lines to clip against arbitrary polygons not just rectangles Liang Barsky optimizes this for upright volumes


View Full Document

UVA CS 445 - Polygon Rasterization and Clipping

Documents in this Course
Lighting

Lighting

49 pages

Color

Color

20 pages

Clipping

Clipping

10 pages

Shadows

Shadows

95 pages

Color

Color

37 pages

Radiosity

Radiosity

49 pages

Clipping

Clipping

59 pages

Assign 3

Assign 3

28 pages

Splines

Splines

17 pages

Color

Color

17 pages

Load more
Download Polygon Rasterization and Clipping
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Polygon Rasterization and Clipping and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Polygon Rasterization and Clipping 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?