1 / 48

Rasterizing Polygons

Rasterizing Polygons. Lecture 29 Wed, Dec 7, 2005. Rasterizing Polygons. Given a the vertices of a polygon, in viewport coordinates, which pixels should be shaded? How do we determine them efficiently?. Rasterizing Polygons. Rasterizing Polygons.

byron
Download Presentation

Rasterizing Polygons

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rasterizing Polygons Lecture 29 Wed, Dec 7, 2005

  2. Rasterizing Polygons • Given a the vertices of a polygon, in viewport coordinates, which pixels should be shaded? • How do we determine them efficiently?

  3. Rasterizing Polygons

  4. Rasterizing Polygons • Obviously, any pixel lying entirely within the polygon should be shaded. • What about the pixels that are partially within the polygon? • Rule: Shade them if their center is within the polygon. • What about the pixels whose center is exactly on the edge?

  5. Edge Pixels

  6. Neighboring Polygons • When two polygons share an edge, which one “owns” the pixels on the edge? • Rule • A polygon owns all pixels whose centers are within its interior. • A polygon owns all pixels whose centers lie on one of its left edges.

  7. Neighboring Polygons • Fill in all pixels whose centers are within the polygon.

  8. Neighboring Polygons • Fill in all pixels whose centers are on a left edge of the polygon.

  9. A Rasterization Algorithm • To rasterize a polygon, first determine its bounding box.

  10. A Rasterization Algorithm • To rasterize a polygon, first determine its bounding rectangle.

  11. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

  12. A Rasterization Algorithm • When an edge is encountered, • If we were on the outside, we move to the inside. • If we were on the inside, we move to the outside. • Thus, we stop or resume shading accordingly.

  13. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 0

  14. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 1

  15. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 2

  16. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 3

  17. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 4

  18. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 5

  19. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 6

  20. A Rasterization Algorithm • Then scan each row of pixels in the bounding rectangle, left to right, bottom to top. row 7

  21. A Rasterization Algorithm • The following algorithm is designed to allow rapid shading of the pixels. • As the vertices are given, create a list of the vertices. (The order matters!) • {(1, 0), (4, 3), (6, 1), (12, 1), (11, 8), (7, 8), (6, 5), (4, 8), (0, 7), (1, 0)}. • From the list of vertices, form an edge table. • {{(1, 0), (4, 3)}, {(4, 3), (6, 1)}, …, {(0, 7), (1, 0)}}.

  22. A Rasterization Algorithm • Organization of the edge table. • Eliminate any horizontal edges. • Sort the edges in the edge table by the y-coordinate of the lower endpoint. • Begin scanning with the bottom scan line.

  23. The Active Edge Table • Create the active edge table (AET). • For each edge in the edge table whose lower endpoint is on the scan line, • Create an active-edge-table entry. • Add it to the active edge table. • Delete the edge from the edge table.

  24. The Active Edge Table • Organization of an active-edge-table entry: • y-coordinate of upper endpoint. • Reciprocal of the slope. • x-intercept with the horizontal line ½ unit above the current scan line.

  25. The Active Edge Table Active edges Scan line

  26. The Active Edge Table (7, -1/7, 13/14) Scan line (3, 1, 1-1/2)

  27. The Active Edge Table • Sort the AET entries by their x-intercepts. • The AET must contain an even number of entries. • Why? • Shade pixels from the 1st to the 2ndx-intercepts, 3rd to 4thx-intercepts, etc., in the AET.

  28. The Active Edge Table (7, -1/7, 13/14) (no shading on this scan line) Scan line (3, 1, 1-1/2)

  29. The Active Edge Table • Update the AET. • Increment the scan line number. • Delete from the AET any entries for which the upper endpoint is on the scan line. • Update the x-intercepts of all AET entries. • Add the reciprocal slope to the x-intercept. • Create and add entries from the edge table for edges whose lower endpoint is on the scan line.

  30. A Rasterization Algorithm (7, -1/7, 13/14) Scan line (3, 1, 1-1/2)

  31. A Rasterization Algorithm (7, -1/7, 11/14) Scan line (8, -1/7, 11-13/14) (3, -1, 5-1/2) (3, 1, 2-1/2)

  32. A Rasterization Algorithm (7, -1/7, 11/14) Scan line (8, -1/7, 11-13/14) (3, -1, 5-1/2) (3, 1, 2-1/2)

  33. A Rasterization Algorithm (7, -1/7, 9/14) Scan line (8, -1/7, 11-11/14) (3, -1, 4-1/2) (3, 1, 3-1/2)

  34. A Rasterization Algorithm (7, -1/7, 9/14) Scan line (8, -1/7, 11-11/14) (3, -1, 4-1/2) (3, 1, 3-1/2)

  35. A Rasterization Algorithm (7, -1/7, 1/2) Scan line (8, -1/7, 11-9/14)

  36. A Rasterization Algorithm (7, -1/7, 1/2) Scan line (8, -1/7, 11-9/14)

  37. A Rasterization Algorithm (7, -1/7, 5/14) Scan line (8, -1/7, 11-1/2)

  38. A Rasterization Algorithm (7, -1/7, 5/14) Scan line (8, -1/7, 11-1/2)

  39. A Rasterization Algorithm (8, -2/3, 5-5/6) (8, 1/3, 6-1/6) (7, -1/7, 3/14) Scan line (8, -1/7, 11-5/14)

  40. A Rasterization Algorithm (8, -2/3, 5-2/3) (8, 1/3, 6-1/6) (7, -1/7, 3/14) Scan line (8, -1/7, 11-5/14)

  41. A Rasterization Algorithm (8, -2/3, 5) (8, 1/3, 6-1/2) (7, -1/7, 1/14) Scan line (8, -1/7, 11-3/14)

  42. A Rasterization Algorithm (8, -2/3, 5) (8, 1/3, 6-1/2) (7, -1/7, 1/14) Scan line (8, -1/7, 11-3/14)

  43. A Rasterization Algorithm (8, -2/3, 5) (8, 1/3, 6-1/2) (8, 4, 2) Scan line (8, -1/7, 11-3/14)

  44. A Rasterization Algorithm (8, -2/3, 5) (8, 1/3, 6-1/2) (8, 4, 2) Scan line (8, -1/7, 11-3/14)

  45. A Rasterization Algorithm

  46. Rasterizing Polygons Read Run

  47. Rasterizing Polygons in OpenGL Read Run

  48. Freehand Polygons Read Run

More Related