Computer Graphics. - Rasterization - Philipp Slusallek

Similar documents
Rasterization, or What is glbegin(gl_lines) really doing?

From Ver(ces to Fragments: Rasteriza(on

From Vertices to Fragments: Rasterization. Reading Assignment: Chapter 7. Special memory where pixel colors are stored.

Announcements. Midterms graded back at the end of class Help session on Assignment 3 for last ~20 minutes of class. Computer Graphics

The Traditional Graphics Pipeline

Rendering. A simple X program to illustrate rendering

Rasterization: Geometric Primitives

Line Drawing. Foundations of Computer Graphics Torsten Möller

FROM VERTICES TO FRAGMENTS. Lecture 5 Comp3080 Computer Graphics HKBU

The Traditional Graphics Pipeline

Einführung in Visual Computing

The Traditional Graphics Pipeline

OpenGL Graphics System. 2D Graphics Primitives. Drawing 2D Graphics Primitives. 2D Graphics Primitives. Mathematical 2D Primitives.

COMP371 COMPUTER GRAPHICS

Line Drawing. Introduction to Computer Graphics Torsten Möller / Mike Phillips. Machiraju/Zhang/Möller

CS 4731: Computer Graphics Lecture 21: Raster Graphics: Drawing Lines. Emmanuel Agu

Chapter - 2: Geometry and Line Generations

Fall CSCI 420: Computer Graphics. 7.1 Rasterization. Hao Li.

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Computer Graphics (CS 543) Lecture 10: Rasterization and Antialiasing

Scan Conversion. Drawing Lines Drawing Circles

CSCI 420 Computer Graphics Lecture 14. Rasterization. Scan Conversion Antialiasing [Angel Ch. 6] Jernej Barbic University of Southern California

Chapter 8: Implementation- Clipping and Rasterization

Rasterization. Rasterization (scan conversion) Digital Differential Analyzer (DDA) Rasterizing a line. Digital Differential Analyzer (DDA)

Rendering. A simple X program to illustrate rendering

Graphics (Output) Primitives. Chapters 3 & 4

Clipping and Scan Conversion

CS 543: Computer Graphics. Rasterization

Renderer Implementation: Basics and Clipping. Overview. Preliminaries. David Carr Virtual Environments, Fundamentals Spring 2005

Realtime 3D Computer Graphics Virtual Reality

Tópicos de Computação Gráfica Topics in Computer Graphics 10509: Doutoramento em Engenharia Informática. Chap. 2 Rasterization.

COMP30019 Graphics and Interaction Scan Converting Polygons and Lines

CPSC / Scan Conversion

CS 4300 Computer Graphics. Prof. Harriet Fell Fall 2012 Lecture 5 September 13, 2012

Topic #1: Rasterization (Scan Conversion)

1 Introduction to Graphics

Rasteriza2on and Clipping

Scan Converting Lines

CS452/552; EE465/505. Clipping & Scan Conversion

Pipeline and Rasterization. COMP770 Fall 2011

Rasterization. CS4620 Lecture 13

The graphics pipeline. Pipeline and Rasterization. Primitives. Pipeline

Rasterization. CS 4620 Lecture Kavita Bala w/ prior instructor Steve Marschner. Cornell CS4620 Fall 2015 Lecture 16

Surface shading: lights and rasterization. Computer Graphics CSE 167 Lecture 6

CS488 2D Graphics. Luc RENAMBOT

Department of Computer Sciences Graphics Fall 2003 (Lecture 2) Pixels

CS 130. Scan Conversion. Raster Graphics

EF432. Introduction to spagetti and meatballs

Painter s HSR Algorithm

Unit 2 Output Primitives and their Attributes

Scan Conversion. Lines and Circles

Polygon Filling. Can write frame buffer one word at time rather than one bit. 2/3/2000 CS 4/57101 Lecture 6 1

R asterisation. Part I: Simple Lines. Affine transformation. Transform Render. Rasterisation Line Rasterisation 2/16

Scanline Rendering 2 1/42

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

CSCI 4620/8626. Coordinate Reference Frames

Computer Graphics. Chapter 4 Attributes of Graphics Primitives. Somsak Walairacht, Computer Engineering, KMITL 1

Topics. From vertices to fragments

2D Image Synthesis. 2D image synthesis. Raster graphics systems. Modeling transformation. Vectorization. u x u y 0. o x o y 1

Rasterization Computer Graphics I Lecture 14. Scan Conversion Antialiasing Compositing [Angel, Ch , ]

Direction Fields; Euler s Method

Rasterization. CS4620/5620: Lecture 12. Announcements. Turn in HW 1. PPA 1 out. Friday lecture. History of graphics PPA 1 in 4621.

Computer Graphics, Lecture 2 October 31, Department of Information Technology. - Scientific Computing. Department of Information Technology

CS 450: COMPUTER GRAPHICS REVIEW: DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 14

Computer Graphics. Attributes of Graphics Primitives. Somsak Walairacht, Computer Engineering, KMITL 1

Computer Graphics - Week 6

? Which intermediate. Recall: Line drawing algorithm. Programmer specifies (x,y) of end pixels Need algorithm to determine pixels on line path

Output Primitives Lecture: 3. Lecture 3. Output Primitives. Assuming we have a raster display, a picture is completely specified by:

RASTERIZING POLYGONS IN IMAGE SPACE

Line Drawing Week 6, Lecture 9

Lecture 2 October 31, 2005

EF432. Introduction to spagetti and meatballs

CS Rasterization. Junqiao Zhao 赵君峤

Computer Graphics D Graphics Algorithms

Pipeline implementation II

From Vertices To Fragments-1

Chapter 3. Sukhwinder Singh

Rasterization. COMP 575/770 Spring 2013

Page 1. Area-Subdivision Algorithms z-buffer Algorithm List Priority Algorithms BSP (Binary Space Partitioning Tree) Scan-line Algorithms

Graphics System. Processor. Output Display. Input Devices. Frame Buffer. Memory. Array of pixels. Resolution: # of pixels Depth: # of bits/pixel

Real-Time Graphics Architecture

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

CS 130 Final. Fall 2015

CS 325 Computer Graphics

Scan Converting Circles

Topic 0. Introduction: What Is Computer Graphics? CSC 418/2504: Computer Graphics EF432. Today s Topics. What is Computer Graphics?

Computer Graphics : Bresenham Line Drawing Algorithm, Circle Drawing & Polygon Filling

Computer Graphics. Lecture 2. Doç. Dr. Mehmet Gokturk

Lecture 2 March 24, 2004

Computer Graphics. Rasterization. Teacher: A.prof. Chengying Gao( 高成英 ) School of Data and Computer Science

Last Time: Acceleration Data Structures for Ray Tracing. Schedule. Today. Shadows & Light Sources. Shadows

Glossary of dictionary terms in the AP geometry units

- Rasterization. Geometry. Scan Conversion. Rasterization

Last class. A vertex (w x, w y, w z, w) - clipping is in the - windowing and viewport normalized view volume if: - scan conversion/ rasterization

0. Introduction: What is Computer Graphics? 1. Basics of scan conversion (line drawing) 2. Representing 2D curves

Computer Graphics D Graphics Algorithms

Scan Conversion. CMP 477 Computer Graphics S. A. Arekete

Implementation III. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

Transcription:

Computer Graphics - Rasterization - Philipp Slusallek

Rasterization Definition Given some geometry (point, 2D line, circle, triangle, polygon, ), specify which pixels of a raster display each primitive covers Often also called scan-conversion Anti-aliasing: instead of only fully-covered pixels (single sample), specify what part of a pixel is covered (multi/super-sampling) Perspectives OpenGL lecture: from an application programmer s point of view This lecture: from a graphics package implementer s point of view Usages of rasterization in practice 2D-raster graphics, e.g. Postscript, PDF 3D-raster graphics, e.g. SW rasterizers (Mesa, OpenSWR) 3D volume modeling and rendering Volume operations (CSG operations, collision detection) Space subdivision (spatial index structures): construction and traversal

Rasterization Assumptions Pixels are sample points on a 2D integer grid OpenGL: X11, Foley: cell bottom-left integer-coordinate at the cell center (we will use this) Simple raster operations Just setting pixel values or not (binary decision) More complex operations later: compositing/anti-aliasing Endpoints snapped to (sub-)pixel coordinates Simple and consistent computations with fixed-point arithmetic Limiting to lines with gradient/slope m 1 (mostly horizontal) Separate handling of horizontal and vertical lines For mostly vertical, swap x and y ( 1/m 1), rasterize, swap back Line size is one pixel m 1: 1 pixel per column (X-driving axis) m > 1: 1 pixel per row (Y-driving axis) y x

Lines: As Functions Specification Initial and end points: (x 0, y 0 ), (x e, ye), (dx, dy) = (x e x o, y e y 0 ) Functional form: y = mx + B End points with integer coordinates rational slope m = dy/dx Goal Find those pixel per column whose distance to the line is smallest Brute-force algorithm Assume that +X is the driving axis, so set pixel in every column for x i = x 0 to x e y i = m * x i + B setpixel(x i, Round(y i )) // Round(y i ) = Floor(y i + 0.5) Comments Variables m and y i would need to be calculated in floating-point Not well suited for direct HW implementation

Lines: DDA DDA: Digital Differential Analyzer Origin of incremental solvers for simple differential equations The Euler method Per time-step: x = x + dx/dt, y = y + dy /dt Incremental algorithm Choose dt=dx, then per pixel x i+1 = x i + 1 y i+1 = m * x i+1 + B = m(x i + 1) + B = (m * x i + B) + m = y i + m setpixel(x i+1, Round(y i+1 )) Remark Utilization of line coherence through incremental calculation Avoid the costly multiplication Accumulates error over length of the line Up to 4k additions on UHD! Floating point calculations may be moved to fixed point Must control accuracy of fixed point representation Enough extra bits to hide accumulated error (>12 bits for UHD)

Lines: Bresenham (1963) DDA analysis Critical point: decision whether rounding up or down Idea Integer-based decision through implicit functions Implicit line equation F x, y = ax + by + c = 0 Here with y = mx + B = dy x + B dx a = dy, b = dx, c = Bdx Results in F x, y = dy x dx y + dx B = 0 F(x, y) < 0 0 = dy x dx y + B dx F x, y = 0 F x, y > 0

Lines: Bresenham Decision variable d (the midpoint formulation) Assume we are at x=i,, calculating next step at x=i+1 Measures the vertical distance of midpoint from line: d i+1 = F M i+1 = F x i + 1, y i + 1 2 = a x i + 1 + b y i + 1 2 + c Preparations for the next pixel IF (d i+1 0) // Increment in x only d i+2 = d i+1 + a = d i+1 + dy // Incremental calculation ELSE // Increment in x and y d i+2 = d i+1 + a + b = d i+1 + dy dx y = y + 1 ENDIF x = x + 1 M i+1 i i+1

Lines: Integer Bresenham Initialization d 1 = F x 0 + 1, y 0 + 1 = a x 2 0 + 1 + b y 0 + 1 + c 2 = ax 0 + by 0 + c + a + b = F x 2 0, y 0 + a + b = a + b 2 2 Because F(x 0, y 0 ) is zero by definition (line goes through (x 0, y 0 )) Pixel is always set (but check consistency rules later) Elimination of fractions Any positive scale factor maintains the sign of F(x,y) 2F x 0, y 0 = 2 ax 0 + by 0 + c d start = 2a + b Observation: When the start and end points have integer coordinates then b = -dx and a = dy have also integer values Floating point computation can be eliminated No accumulated error

Lines: Arbitrary Directions 8 different cases Driving (active) axis: ±X or ±Y Increment/decrement of y or x, respectively +Y,x-- +Y,x++ -X,y++ +X,y++ -X,y-- +X,y-- -Y,x-- -Y,x++

Thick Lines Pixel replication Problems with even-numbered widths Varying intensity of a line as a function of slope The moving pen For some pen footprints the thickness of a line might change as a function of its slope Should be as round as possible Real Solution: Draw 2D area Allows for anti-aliasing and fractional width Main approach these days!

Handling Start and End Points End points handling (not available in OpenGL) Joining: handling of joints between lines Bevel: connect outer edges by straight line Miter: join by extending outer edges to intersection Round: join with radius of half the line width Capping: handling of end point Butt: end line orthogonally at end point Square: end line with oriented square Round: end line with radius of half the line width

Bresenham: Circle Eight different cases, here +X, y-- F > 0 Initialization: x = 0, y = R F(x,y) = x 2 +y 2 -R 2 d = F(x+1, y-1/2) IF d < 0 d = F(x+2,y-1/2) ELSE IF d > 0 d = F(x+2,y-3/2) y = y-1 ENDIF x = x+1 (-y,x) (-y,-x) (-x,y) (-x,-y) F < 0 (x,y) (x,-y) Works because slope is smaller than 1 Eight-way symmetry: only one 45 segment is needed to determine all pixels in a full circle F = 0 (y,x) (y,-x)

Reminder: Polygons Types Triangles Trapezoids Rectangles Convex polygons Concave polygons Arbitrary polygons Holes Non-coherent Two approaches Polygon tessellation into triangles Only option for OpenGL Needs edge-flags for not drawing internal edges Or separate drawing of the edge Direct scan-conversion Mostly in early SW algorithms

Inside-Outside Tests What is the interior of a polygon? Jordan curve theorem Any continuous simple closed curve in the plane, separates the plane into two disjoint regions, the inside and the outside, one of which is bounded. What to do with non-simple polygons? Even-odd rule (odd parity rule) Counting the number of edge crossings with a ray starting at the queried point P till infinity Inside, if the number of crossings is odd Non-zero winding number rule Counts # times polygon wraps around P Signed intersections with a ray Inside, if the number is not equal to zero Differences only in the case of non-simple curves (self-intersection) 4 3 O O E:out OO O Even-odd -1 2 1 Even-odd +1 Winding 0-1 1 1 1 2:in 1 1 Winding

Triangle Rasterization Raster3_box(vertex v[3]) { int x, y; bbox b; bound3(v, &b); for (y = b.ymin; y < b.ymax; y++) for (x = b.xmin; x < b.xmax; x++) if (inside(v, x, y)) // upcoming fragment(x,y); } Brute-force algorithm Iterate over all pixels within bounding box Possible approaches for dealing with scissoring Scissoring: Only draw on part of the screen (region of interest) Test triangle for overlap with scissor box, otherwise discard Use intersection of scissor and bounding box, otherwise as above

Rasterization w/ Edge Functions Approach (Pineda, `88) Implicit edge functions for every edge F i x, y = ax + by + c Point is inside triangle, if every F i x, y has the same sign Perfect for parallel evaluation at many points Particularly with wide SIMD machines (GPUs, SIMD CPU instructions) Requires triangle setup : Computation of edge function Evaluation can be done in homogeneous coordinates Hierarchical approach Can be used to efficiently check large rectangular blocks of pixels Divide screen into tiles/bins (possibly at several levels) Evaluate F at tile corners Recurse only where necessary, possibly until subpixel level

Gap and T-Vertices Observations Pixels set can be non-connected May have overlap and gaps at T-edges Non-connected pixels: OK Not OK: Model must be changed

Problem on Edges Consistency: edge singularity (shared by 2 triangles) What if term d = ax+by+c = 0 (pixel centers lies exactly on the line) For d <= 0: pixels would get set twice Problem with some algorithms Transparency, XOR, CSG,... Missing pixels for d < 0 (set by no tri.) Solution: shadow test Pixels are not drawn on the right and bottom edges Pixels are drawn on the left and upper edges Evaluated via derivatives a and b Test for all edges also solves problem at vertices inside(value d, value a, value b) { // ax + by + c = 0 return (d < 0) (d == 0 &&!shadow(a, b)); } shadow(value a, value b) { return (a > 0) (a == 0 && b > 0); }

Ray Tracing vs. Rasterization In-Triangle test (for common origin) Rasterization: Project to 2D, clip Set up 2D edge functions, evaluate for each sample (using 2D point) Ray tracing: Set up 3D edge functions, evaluate for each sample (using direction) The ray tracing test can also be used for rasterization in 3D Avoids projection & clipping Enumerating scene primitives Rasterization (simple): Linearly test them all in random order Rasterization (advanced): Build (coarse) spatial index (typically on application side) Traverse with (large) view frustum Every one separately when using tiled rendering Ray Tracing: Build (detailed) spatial index Traverse with (infinitely thin) ray or with some (small) frustum Both approaches can benefit greatly from spatial index

Ray Tracing vs. Rasterization (II) Binning Test to (hierarchically) find pixels likely to be covered by a primitive Rasterization: Great speedup due to very large view frustum (many pixels) Ray tracing (frustum tracing) Can speed up, depending on frustum size [Benthin'09] Ray Tracing (single/few rays) Not needed Conclusion Both algorithms can use the same in-triangle test In 3D, requires floating point, but boils down to 2D computation Both algorithms can benefit from spatial index Benefit depends on relative cost of in-triangle test (HW vs. SW) Both algorithms can benefit from 2D binning to find relevant samples Benefit depends on ratio of covered/uncovered samples per frustum Both approaches are essentially the same Different organization (size of frustum, binning) There is no reason RT needs to be slower for primary rays (exc. FP)

HW-Supported Ray Tracing (finally)