2/28/2016 cs 551 / 645: introductory computer graphics framebuffer mathematical foundations the...

48
07/06/22 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

Upload: kelly-dennis

Post on 19-Jan-2018

218 views

Category:

Documents


0 download

DESCRIPTION

2/28/2016 Basic Definitions Raster: A rectangular array of points or dots. Pixel (Pel): One dot or picture element of the raster Scan line: A row of pixels Video raster devices display an image by sequentially drawing out the pixels of the scan lines that form the raster.

TRANSCRIPT

Page 1: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

CS 551 / 645: Introductory Computer Graphics

FramebufferMathematical Foundations

The Rendering Pipeline

Page 2: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Organization

Class List ITC accounts Class web page is up Assignment 1 goes out on Thursday Read OGLPG Chapter 1 for Thursday

Page 3: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Basic DefinitionsRaster: A rectangular array of points or dots.Pixel (Pel): One dot or picture element of the rasterScan line: A row of pixels

Video raster devices display an image by sequentially drawing out the pixels of the scan lines that form the raster.

Page 4: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Frame Buffers

A frame buffer may be thought of as computer memory organized as a two-dimensional array with each (x,y) addressable location corresponding to one pixel.

Bit Planes or Bit Depth is the number of bits corresponding to each pixel.

A typical frame buffer resolution might be

640 x 480 x 81280 x 1024 x 81280 x 1024 x 24

Page 5: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

1-Bit Memory, Monochrome Display (Bitmap Display)

Electron Gun

1 bit 2 levels

Page 6: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

3-Bit Color Display

3

red

greenblue

COLOR: black red green blue yellow cyan magenta white

R G B

0 0 0

1 0 0

0 1 0

0 0 1

1 1 0

0 1 1

1 0 1

1 1 1

Page 7: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

True Color Display

Green

Red

Blue

8

8

8

24 bitplanes, 8 bits per color gun.224 = 16,777,216

Page 8: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Color Map Look-Up Tables

Extends the number of colors that can be displayed by a given number of bit-planes.

67100110100001

0

67

255

10011010 0001

R G B

REDGREENBLUE

Pixel displayedat x', y'

Pixel inbit mapat x', y'

0 x0

y

xmax

maxy

Frame buffer Look-up table Display

Page 9: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Pseudo color

0123

254255

RED GREEN BLUE

256 colors chosen from a palette of 16,777,216.

Each entry in the color map LUT can be user defined.

28 x 24 Color Map LUT

Page 10: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Display processor

Specialized hardware to assist in scan converting output primitives into the frame buffer.

Fundamental difference among display systems is how much the display processor does versus how much must be done by the graphics subroutine package executing on the general-purpose CPU.

Now often called graphics accelerator

Page 11: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Mathematical Foundations

FvD appendix gives good review I’ll give a brief, informal review of some of the

mathematical tools we’ll employ– Geometry (2D, 3D)– Trigonometry– Vector spaces

Points, vectors, and coordinates

– Dot and cross products– Linear transforms and matrices

Page 12: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

2D Geometry

Know your high school geometry:– Total angle around a circle is 360° or 2π radians– When two lines cross:

Opposite angles are equivalent Angles along line sum to 180°

– Similar triangles: All corresponding angles are equivalent

Page 13: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Trigonometry

Sine: “opposite over hypotenuse” Cosine: “adjacent over hypotenuse” Tangent: “opposite over adjacent” Unit circle definitions:

– sin () = x– cos () = y– tan () = x/y– Etc…

(x, y)

Page 14: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Slope-intercept Line Equation

Slope = m = rise / runSlope = (y - y1) / (x - x1) = (y2 - y1) / (x2 - x1)Solve for y:y = [(y2 - y1)/(x2 - x1)]x + [-(y2-y1)/(x2 - x1)]x1 + y1

or: y = mx + b

x

y

P2 = (x2, y2)

P1 = (x1, y1)

P = (x, y)

Page 15: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Parametric Line Equation

Given points P1 = (x1, y1) and P2 = (x2, y2)x = x1 + t(x2 - x1)y = y1 + t(y2 - y1)

When:– t=0, we get (x1, y1)– t=1, we get (x2, y2)– (0<t<1), we get points

on the segment between(x1, y1) and (x2, y2)

x

y

P2 = (x2, y2)

P1 = (x1, y1)

Page 16: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Other helpful formulas

Length = sqrt (x2 - x1)2 + (y2 - y1)2

Midpoint, p2, between p1 and p3– p2 = ((x1 + x3) / 2, (y1 + y3) / 2))

Two lines are perpendicular if:– M1 = -1/M2– cosine of the angle between them is 0

Page 17: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

3D Geometry

To model, animate, and render 3D scenes, we must specify:– Location– Displacement from arbitrary locations– Orientation

Page 18: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Vector Spaces

Two types of elements:– Scalars (real numbers): … – Vectors (n-tuples): u, v, w, …

Supports two operations:– Addition operation u + v, with:

Identity 0 v + 0 = v Inverse - v + (-v) = 0

– Scalar multiplication: Distributive rule:(u + v) = (u) + (v)

( + )u = u + u

Page 19: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Vector Spaces

A linear combination of vectors results in a new vector:

v = 1v1 + 2v2 + … + nvn

If the only set of scalars such that 1v1 + 2v2 + … + nvn = 0

is 1 = 2 = … = 3 = 0 then we say the vectors are linearly independent The dimension of a space is the greatest number of linearly

independent vectors possible in a vector set For a vector space of dimension n, any set of n linearly

independent vectors form a basis

Page 20: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Vector Spaces: A Familiar Example Our common notion of vectors in a 2D plane

is (you guessed it) a vector space:– Vectors are “arrows” rooted at the origin– Scalar multiplication “streches” the arrow, changing

its length (magnitude) but not its direction– Addition uses the “trapezoid rule”:

u+vy

xu

v

Page 21: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Vector Spaces: Basis Vectors

Given a basis for a vector space:– Each vector in the space is a unique linear

combination of the basis vectors– The coordinates of a vector are the scalars from

this linear combination– Best-known example: Cartesian coordinates– Note that a given vector v will have different

coordinates for different bases

Page 22: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Vectors And Points

We commonly use vectors to represent:– Points in space (i.e., location)– Displacements from point to point– Direction (i.e., orientation)

Page 23: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Points

Points support these operations– Point-point subtraction: Q - P = v

Result is a vector pointing from P to Q– Vector-point addition: P + v = Q

Result is a new point

– Note that the addition of two points is not defined

P

Q

v

Page 24: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Dot Product

The dot product or, more generally, inner product of two vectors is a scalar:

v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D) Useful for many purposes

– Computing the length of a vector: length(v) = sqrt(v • v)

– Normalizing a vector, making it unit-length– Computing the angle between two vectors:

u • v = |u| |v| cos(θ)

– Checking two vectors for orthogonality– Projecting one vector onto another

θu

v

Page 25: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Cross Product

The cross product or vector product of two vectors is a vector:

The cross product of two vectors is orthogonal to both

Right-hand rule dictates direction of cross product

1221

1221

1221

21 )(y x y xz x z x

z y z yvv

Page 26: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Linear Transformations

A linear transformation: – Maps one vector to another– Preserves linear combinations

Thus behavior of linear transformation is completely determined by what it does to a basis

Turns out any linear transform can be represented by a matrix

Page 27: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Matrices

By convention, matrix element Mrc is located at row r and column c:

By (OpenGL) convention, vectors are columns:

mnm2m1

2n2221

1n1211

MMM

MMMMMM

M

3

2

vvv

v1

Page 28: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Matrices

Matrix-vector multiplication applies a linear transformation to a vector:

Recall how to do matrix multiplication

z

y

x

vvv

MMMMMMMMM

vM333231

232221

131211

Page 29: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Matrix Transformations

A sequence or composition of linear transformations corresponds to the product of the corresponding matrices– Note: the matrices to the right affect vector first– Note: order of matrices matters!

The identity matrix I has no effect in multiplication

Some (not all) matrices have an inverse: vvMM 1

Page 30: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: A Whirlwind Tour

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 31: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Display You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 32: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Framebuffer You Know

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 33: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 34: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

2-D Rendering: Rasterization(Coming Soon)

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 35: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: 3-D

Transform

Illuminate

Transform

Clip

Project

Rasterize

Model & CameraModel & CameraParametersParameters Rendering PipelineRendering Pipeline FramebufferFramebuffer DisplayDisplay

Page 36: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 37: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: 3-D

Scene graphObject geometry

LightingCalculations

Clipping

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

ModelingTransforms

ViewingTransform

ProjectionTransform

Page 38: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Transformations

So far, discussion has been in screen space But model is stored in model space

(a.k.a. object space or world space) Three sets of geometric transformations:

– Modeling transforms– Viewing transforms– Projection transforms

Page 39: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Transformations

Modeling transforms– Size, place, scale, and rotate objects and parts of

the model w.r.t. each other– Object coordinates world coordinates

Z

X

Y

X

Z

Y

Page 40: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Transformations

Viewing transform– Rotate & translate the world to lie directly in front of

the camera Typically place camera at origin Typically looking down -Z axis

– World coordinates view coordinates

Page 41: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Transformations

Projection transform– Apply perspective foreshortening

Distant = small: the pinhole camera model

– View coordinates screen coordinates

Page 42: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Transformations

All these transformations involve shifting coordinate systems (i.e., basis sets)

That’s what matrices do… Represent coordinates as vectors, transforms

as matrices

Multiply matrices = concatenate transforms!

YX

YX

cossinsincos

Page 43: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 44: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Lighting

Illuminating a scene: coloring pixels according to some approximation of lighting– Global illumination: solves for lighting of the whole

scene at once– Local illumination: local approximation, typically

lighting each polygon separately Interactive graphics (e.g., hardware) does

only local illumination at run time

Page 45: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The Rendering Pipeline: 3-D

ModelingTransforms

Scene graphObject geometry

LightingCalculations

ViewingTransform

Clipping

ProjectionTransform

Result:Result:• All vertices of scene in shared 3-D “world” coordinate All vertices of scene in shared 3-D “world” coordinate systemsystem

• Vertices shaded according to lighting modelVertices shaded according to lighting model

• Scene vertices in 3-D “view” or “camera” coordinate Scene vertices in 3-D “view” or “camera” coordinate systemsystem

• Exactly those vertices & portions of polygons in view Exactly those vertices & portions of polygons in view frustumfrustum

• 2-D screen coordinates of clipped vertices2-D screen coordinates of clipped vertices

Page 46: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Clipping

Clipping a 3-D primitive returns its intersection with the view frustum:

See Foley & van Dam section 19.1

Page 47: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

Rendering: Clipping

Clipping is tricky!

In: 3 verticesIn: 3 verticesOut: 6 verticesOut: 6 verticesClip

Clip In: 1 polygonIn: 1 polygonOut: 2 polygonsOut: 2 polygons

Page 48: 2/28/2016 CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline

05/08/23

The End

Next: Basic OpenGL