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

Similar documents
Computer Graphics. - Rasterization - Philipp Slusallek

Chapter - 2: Geometry and Line Generations

Rasterization: Geometric Primitives

Rendering approaches. 1.image-oriented. 2.object-oriented. foreach pixel... 3D rendering pipeline. foreach object...

CS Rasterization. Junqiao Zhao 赵君峤

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

1. (10 pts) Order the following three images by how much memory they occupy:

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

CPSC / Scan Conversion

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

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

Graphics Hardware and Display Devices

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

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

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

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

1 Introduction to Graphics

Rendering. A simple X program to illustrate rendering

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

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

Representing Graphical Data

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

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

CS 130 Final. Fall 2015

From Ver(ces to Fragments: Rasteriza(on

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

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

Line Drawing Week 6, Lecture 9

Lecture 2: Digital Drawing. Computer Graphics and Imaging UC Berkeley CS184/284

CS 543: Computer Graphics. Rasterization

EF432. Introduction to spagetti and meatballs

Graphics (Output) Primitives. Chapters 3 & 4

Representing Graphical Data

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

Institutionen för systemteknik

The graphics pipeline. Pipeline and Rasterization. Primitives. Pipeline

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

Rasterization. CS4620 Lecture 13

How to draw and create shapes

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Computer Graphics

Graphics in IT82. Representing Graphical Data. Graphics in IT82. Lectures Overview. Representing Graphical Data. Logical / Physical Representation

Display Technologies: CRTs Raster Displays

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

The Traditional Graphics Pipeline

Chapter 8: Implementation- Clipping and Rasterization

Overview of Computer Graphics

Scan Converting Lines

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

Computer Graphics. Chapter 1 (Related to Introduction to Computer Graphics Using Java 2D and 3D)

The Traditional Graphics Pipeline

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

Rendering. A simple X program to illustrate rendering

Sir Sadiq s computer notes for class IX. Chapter no 3. Input/Output Devices

SRM ARTS AND SCIENCE COLLEGE SRM NAGAR, KATTANKULATHUR

Line Drawing. Foundations of Computer Graphics Torsten Möller

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

CS 130. Scan Conversion. Raster Graphics

(Refer Slide Time: 00:03:51)

Books: 1) Computer Graphics, Principles & Practice, Second Edition in C JamesD. Foley, Andriesvan Dam, StevenK. Feiner, John F.

Computer graphics 2 Marks 1. Define Computer graphics.

The Traditional Graphics Pipeline

Scalable Vector Graphics (SVG) vector image World Wide Web Consortium (W3C) defined with XML searched indexed scripted compressed Mozilla Firefox

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

COMP30019 Graphics and Interaction Transformation geometry and homogeneous coordinates

Pipeline and Rasterization. COMP770 Fall 2011

Computer Science 426 Midterm 3/11/04, 1:30PM-2:50PM

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

Lets assume each object has a defined colour. Hence our illumination model is looks unrealistic.

CS-184: Computer Graphics. Today

AQA GCSE Further Maths Topic Areas

EF432. Introduction to spagetti and meatballs

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

CHAPTER 1 Graphics Systems and Models 3

CS559 Computer Graphics Fall 2015

(a) rotating 45 0 about the origin and then translating in the direction of vector I by 4 units and (b) translating and then rotation.

2D and 3D Transformations AUI Course Denbigh Starkey

Introduction to Computer Graphics

Rendering. Basic Math Review. Rasterizing Lines and Polygons Hidden Surface Remove Multi-pass Rendering with Accumulation Buffers.

CS130 : Computer Graphics Lecture 2: Graphics Pipeline. Tamar Shinar Computer Science & Engineering UC Riverside

Graphics and Interaction Transformation geometry and homogeneous coordinates

Rasterization and Graphics Hardware. Not just about fancy 3D! Rendering/Rasterization. The simplest case: Points. When do we care?

1 Some easy lines (2, 17) (10, 17) (18, 2) (18, 14) (1, 5) (8, 12) Check with a ruler. Are your lines straight?

COMP30019 Graphics and Interaction Scan Converting Polygons and Lines

Einführung in Visual Computing

Unit 2 Output Primitives and their Attributes

SRM INSTITUTE OF SCIENCE AND TECHNOLOGY

Chapter 1 Introduction

Digital Image Fundamentals. Prof. George Wolberg Dept. of Computer Science City College of New York

Computer Graphics 1 Instructor Information. Books. Graphics? Course Goals and Outcomes. Where are computer graphics? Where are computer graphics?

Buffers, Textures, Compositing, and Blending. Overview. Buffers. David Carr Virtual Environments, Fundamentals Spring 2005 Based on Slides by E.

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

CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions. The Midterm Exam was given in class on Thursday, October 23, 2008.

Introduction to Computer Graphics

Introduction to Computer Graphics (CS602) Lecture No 03 Graphics Systems

Intro to Ray-Tracing & Ray-Surface Acceleration

UNIT 2 2D TRANSFORMATIONS

Scan Conversion. Drawing Lines Drawing Circles

03 Vector Graphics. Multimedia Systems. 2D and 3D Graphics, Transformations

(Refer Slide Time 00:17) Welcome to the course on Digital Image Processing. (Refer Slide Time 00:22)

Transcription:

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

Today s Topics Vectors review Shirley et al. 2.4 Rasters Shirley et al. 3.0-3.2.1 Rasterizing Lines Shirley et al. 8.0-8.1.1 Implicit 2D lines pp. 30-35 Parametric Lines p. 41 Antialiasing Line Attributes 2

Vectors A vector describes a length and a direction. a a zero length vector b a = b 1 a unit vector 3

Vector Operations a b a b c-d -d d Vector Sum Vector Difference a -a 4

Cartesian Coordinates Any two non-zero, non-parallel 2D vectors form a 2D basis. Any 2D vector can be written uniquely as a linear combination of two 2D basis vectors. x and y (or i and j) denote unit vectors parallel to the x-axis and y-axis. x and y form an orthonormal 2D basis. a = x a x + y a y a =( x a, y a ) or or a =(a x,a y ) x, y and z form an orthonormal 3D basis. a xa = ya 5

Vector Length Vector a =( x a, y a ) Length a = Norm a = a = x + ( ) ( ) 2 2 a y a a y a x a 6

Dot Product Dot Product a =( x a, y a ) b =( x b, y b ) a b = x a x b + y a y b a b = a b cos(φ) a x a = a cos(θ+φ) x b = b cos(θ) y a = a sin(θ+φ) y b = b sin(θ) φ θ b 7

Projection a =( x a, y a ) b =( x b, y b ) a b = a b cos(φ) a The length of the projection of a onto b is given by a b = a cos ϕ ( ) = aib b φ a b b 8

Output Devices a raster is a rectangular array of pixels (picture elements) common raster output devices include CRT and LCD monitors, ink jet and laser printers typically considered as top-to-bottom array of left-to-right rows, because that is how CRTs are (were) typically scanned for this reason, device (e.g. on-screen) coordinate frame typically has origin in upper left, axis aims to right, and axis aims down 9/13/12 College of Computer and Information Science, Northeastern University 9

Device Resolution (native) resolution of the device is the dimensions (note this is reverse of typical way we write matrix dimensions) of its raster output hardware typical resolutions for monitors are 640x480 (VGA, the archaic but celebrated Video Graphics Array), 800x600, 1024x768, 1280x1024, 1600x1200, etc higher resolution is generally better because finer detail can be represented more computation required for more pixels though, and more pixels makes the display hardware more expensive however monitors usually can display lower or higher (within some limits) resolution images than their native resolution by scaling (we will study how to scale images later in the course) 9/13/12 College of Computer and Information Science, Northeastern University 10

Sub-pixel Display http://en.wikipedia.org/wiki/pixel 9/13/12 College of Computer and Information Science, Northeastern University 11

How are Rasters Represented? for a monochrome image, each pixel corresponds to one bit (also called a binary image) typically in graphics we use at least greyscale images, where bits are used to represent the intensity at each pixel. The number of gray levels at each pixel is usually a multiple of 8. for a color image, compose multiple greyscale images, where each corresponds to a different color component. Three images corresponding to red, green, and blue color components are one typical arrangement. The images can be stored as independent planes or they may be interleaved. 9/13/12 College of Computer and Information Science, Northeastern University 12

in-memory representation of a raster monochrome image is typically a linear array of r x c x B bytes, where r and c are the number of rows and columns in the raster, and B is the number of bytes per pixel value of pixel at location (i, j) is thus stored in the B bytes at memory location (ic + j)b relative to the beginning of the array the order of bytes within the pixel value is determined by the byte order of the computer, which may be little-endian (least significant byte first) or big-endian (most significant byte first). Nowadays, little-endian is more common (e.g. Intel x86). Bigendian may still be encountered on e.g. PowerPC architectures (which is what Apple used in Mac computers up to around 2006). 9/13/12 College of Computer and Information Science, Northeastern University 13

Color Image Representation for color images, either store as (typically three) separate monochrome rasters (planes), or interleave by packing all color components for a pixel into a contiguous block of memory (interleaved is more common now) the order of the color components, as well as the number of bits per component, is called the pixel format 9/13/12 College of Computer and Information Science, Northeastern University 14

Common Pixel Formats common pixel formats today include 24-bit RGB (b r = b g = b b = 8) ( over 16 million colors! ) 32-bit RGB (like 24 bit but with one byte of padding) 16-bit 5:6:5 RGB (b r = 5, b g =6, b b = 5) (human eye is most sensitive to green; common for lower-quality video because it looks ok for images of real-world scenes and uses 2 bytes per pixel, reducing file size) (ic + j)b works with B = {(b r + b g + b b +padding)}/8 byte ordering (little- vs big-endian) only matters within each color component and if some b r > 8 9/13/12 College of Computer and Information Science, Northeastern University 15

Frame Buffer In-memory raster is called a frame buffer when hardware is set up so that changes to memory contents drive pixel colors on the display itself. Most modern display hardware has a such a frame buffer. in fact, generally more than one, and can switch among them a common way to produce a smooth-looking animation is to use two buffers: the front buffer is rendered to the screen, and the back buffer is not this is called double buffering Each new frame of the animation is drawn onto the back buffer. Because it can take some time (hopefully not too long) to draw, this avoids seeing a partial frame. once the drawing is complete, the buffers are swapped 9/13/12 College of Computer and Information Science, Northeastern University 16

Rasterization how to render images of geometry, say line segments or triangles, onto a raster display? need to figure out what pixels to light up to draw the shape this is the process of rasterization will study line segment rasterization now and triangles later in the course 9/13/12 College of Computer and Information Science, Northeastern University 17

Vector Output historically, vector displays were developed first a CRT is made to scan line segments by steering an electron beam from start to end of each segment (can generalize to curves) potentially more efficient because only need to scan along the actual line segments vs always scanning a raster across the whole screen but hard to draw images of real-world scenes, and how to deal with color? nowadays, vector output is sometimes still encountered on a pen plotter, but even these are mostly antiques 9/13/12 College of Computer and Information Science, Northeastern University 18

Vector Representation some software systems represent graphics in a vector form. PostScript, PDF (portable document format), and SVG (scalable vector graphics) in a vector format, a picture is stored not as an array of pixels, but as a list of instructions about how to draw it vector format is better for some kinds of images, particularly line drawings and images (e.g. cartoons or computer art) since the actual geometry, vs a sampling of it, is stored, vector images can generally be scaled to larger or smaller sizes without any loss of quality vector images may also require less memory to store, and may be more compressible 9/13/12 College of Computer and Information Science, Northeastern University 19

Pixel Coordinates (0,0) x y = -0.5 (3,1) x = -0.5 (0,3) y x = 4.5 y = 3.5 20

Pixel Coordinates y y = 3.5 (0,3) (3,2) x = -0.5 (0,0) 21 x x = 4.5 y = -.5

What Makes a Good Line? Not too jaggy Uniform thickness along a line Uniform thickness of lines at different angles Symmetry, Line(P,Q) = Line(Q,P) A good line algorithm should be fast. 22

Line Drawing 23

Line Drawing 24

Which Pixels Should We Color? Given P 0 = (x 0, y 0 ), P 1 = (x 1, y 1 ) We could use the equation of the line: y = mx + b m = (y 1 y 0 )/(x 1 x 0 ) b = y 1 - mx 1 And a loop for x = x 0 to x 1 y = mx + b draw (x, y) This calls for real multiplication for each pixel This only works if x 0 <= x 1 and m <= 1. 25

Midpoint Algorithm Pitteway 1967 Van Aiken abd Nowak 1985 Draws the same pixels as Bresenham Algorithm 1965. Uses integer arithmetic and incremental computation. Uses a decision function to decide on the next point Draws the thinnest possible line from (x 0, y 0 ) to (x 1, y 1 ) that has no gaps. A diagonal connection between pixels is not a gap. 26

Implicit Equation of a Line f(x,y) = (y 0 y 1 )x +(x 1 - x 0 )y + x 0 y 1 - x 1 y 0 (x 1, y 1 ) f(x,y) > 0 f(x,y) < 0 (x 0, y 0 ) We will assume x 0 <= x 1 and that m = (y 1 y 0 )/(x 1 - x 0 ) is in [0, 1]. 27

Basic Form of the Algotithm y = y 0 for x = x 0 to x 1 do draw (x, y) if (some condition) then y = y + 1 We want to compute this condition efficiently. Since m is in [0, 1], as we move from x to x+1, the y value stays the same or goes up by 1. 28

Above or Below the Midpoint? 29

Finding the Next Pixel Assume we just drew (x, y). For the next pixel, we must decide between (x+1, y) and (x+1, y+1). The midpoint between the choices is (x+1, y+0.5). If the line passes below (x+1, y+0.5), we draw the bottom pixel. Otherwise, we draw the upper pixel. 30

The Decision Function if f(x+1, y+0.5) < 0 // midpoint below line y = y + 1 f(x,y) = (y 0 y 1 )x +(x 1 - x 0 )y + x 0 y 1 - x 1 y 0 How do we compute f(x+1, y+0.5) incrementally? using only integer arithmetic? 31

Incremental Computation f(x,y) = (y 0 y 1 )x +(x 1 - x 0 )y + x 0 y 1 - x 1 y 0 f(x + 1, y) = f(x, y) + (y 0 y 1 ) f(x + 1, y + 1) = f(x, y) + (y 0 y 1 ) + (x 1 - x 0 ) y = y 0 d = f(x 0 + 1, y + 0.5) for x = x 0 to x 1 do draw (x, y) if d < 0 then y = y + 1 d = d + (y 0 y 1 ) + (x 1 - x 0 ) else d = d + (y 0 y 1 ) 32

Integer Decision Function f(x,y) = (y 0 y 1 )x +(x 1 - x 0 )y + x 0 y 1 - x 1 y 0 f(x 0 + 1, y + 0.5) = (y 0 y 1 )(x 0 + 1) +(x 1 - x 0 )(y + 0.5) + x 0 y 1 - x 1 y 0 2f(x 0 + 1, y + 0.5) = 2(y 0 y 1 )(x 0 + 1) +(x 1 - x 0 )(2y + 1) + 2x 0 y 1-2x 1 y 0 2f(x, y) = 0 if (x, y) is on the line. < 0 if (x, y) is below the line. > 0 if (x, y) is above the line. 33

Midpoint Line Algorithm y = y 0 d = 2(y 0 y 1 )(x 0 + 1) +(x 1 - x 0 )(2y 0 + 1) + 2x 0 y 1-2x 1 y 0 for x = x 0 to x 1 do draw (x, y) if d < 0 then y = y + 1 else d = d + 2(y 0 y 1 ) + 2(x 1 - x 0 ) d = d + 2(y 0 y 1 ) These are constants and can be computed before the loop. 34

Line Attributes line width dash patterns end caps: butt, round, square 9/13/12 College of Computer and Information Science, Northeastern University 35

Joins: round, bevel, miter 9/13/12 College of Computer and Information Science, Northeastern University 36

Some Lines 37

Some Lines Magnified 38

Antialiasing by Downsampling 39

Antialiasing by Downsampling 40

Antialiasing by Downsampling 41