Intro, Math Review, OpenGL Pipeline Week 1, Tue May 10 - - PowerPoint PPT Presentation

intro math review opengl pipeline week 1 tue may 10
SMART_READER_LITE
LIVE PREVIEW

Intro, Math Review, OpenGL Pipeline Week 1, Tue May 10 - - PowerPoint PPT Presentation

University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner Intro, Math Review, OpenGL Pipeline Week 1, Tue May 10 http://www.ugrad.cs.ubc.ca/~cs314/Vmay2005 Introduction Expectations hard course!


slide-1
SLIDE 1

University of British Columbia CPSC 314 Computer Graphics May-June 2005 Tamara Munzner http://www.ugrad.cs.ubc.ca/~cs314/Vmay2005

Intro, Math Review, OpenGL Pipeline Week 1, Tue May 10

slide-2
SLIDE 2
  • Introduction
slide-3
SLIDE 3
  • Expectations

hard course!

heavy programming and heavy math

fun course!

graphics programming addictive, create great demos

programming prereq

CPSC 216 (Program Design and Data Structures) course language is C++/C

math prereq

MATH 200 (Calculus III) MATH 221/223 (Matrix Algebra/Linear Algebra)

slide-4
SLIDE 4
  • Course Structure

45% programming projects

9% project 1 (building beasties with cubes and math) 9% project 2 (flying ) 9% project 3 (shaded terrain) 18% project 4 (create your own graphics game)

25% final 15% midterm (week 4, Tue 5/31) 15% written assignments

5% each HW 1/2/3

programming projects and homeworks synchronized

slide-5
SLIDE 5
  • Programming Projects

structure

C++, Linux

OK to cross-platform develop on Windows

OpenGL graphics library GLUT for platform-independent windows/UI face to face grading in lab

Hall of Fame

project 1: building beasties

previous years: elephants, birds, poodles

project 4: create your own graphics game

slide-6
SLIDE 6
  • Late Work

3 grace days

for unforeseen circumstances strong recommendation: don’t use early in term handing in late uses up automatically unless you tell us

  • therwise: 25% per 24 hours

no work accepted after solutions handed out

exception: severe illness or crisis, as per UBC rules

let me know ASAP (in person or email) must also turn in form with documentation

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2005/illness.html

slide-7
SLIDE 7
  • Regrading

to request assignment or exam regrade

must submit detailed written explanation of

why you think the grader was incorrect for the particular problem that you are disputing

I may regrade entire assignment

thus even if I agree with your original request,

your score may end up higher or lower

slide-8
SLIDE 8
  • Course Information

course web page is main resource

http://www.ugrad.cs.ubc.ca/~cs314/Vmay2005 updated often, reload frequently

newsgroup is ubc.courses.cpsc.414

note old course number still used readable on or off campus

(no WebCT)

slide-9
SLIDE 9
  • Labs

attend two labs per week, 3 sessions each

Tue/Thu 11-12, 3-4, 4-5

Thursday afternoon better than Thu morning

Tuesdays: example problems in spirit of

written assignments and exams

Thursdays: help with programming projects no deliverables strongly recommend that you attend

slide-10
SLIDE 10
  • Teaching Staff

instructor: Dr. Munzner

tmm@cs.ubc.ca

  • ffice hrs in CICSR 011

Mon 4:30-5:30

TAs: Warren Cheung, Greg Kempe

wcheung@cs.ubc.ca kempe@cs.ubc.ca

use newsgroup not email for all questions

that other students might care about

slide-11
SLIDE 11
  • Required Reading

Fundamentals of Computer Graphics

Peter Shirley, AK Peters

OpenGL Programming Guide, v 1.4

OpenGL Architecture Review Board v 1.1 available for free online

readings posted on schedule page

slide-12
SLIDE 12
  • Learning OpenGL

this is a graphics course using OpenGL

not a course *on* OpenGL

upper-level class: learning APIs mostly on

your own

  • nly minimal lecture coverage

basics, some of the tricky bits

OpenGL Red Book many tutorial sites on the web

nehe.gamedev.net

slide-13
SLIDE 13
  • Plagiarism and Cheating

don’t cheat, I will prosecute

insult to your fellow students and to me

programming and assignment writeups must be

individual work

exception: project 3 can be team of two can discuss ideas, browse Web but cannot just copy code or answers

you must be able to explain algorithms during face-to-

face demo

  • r no credit for that part of assignment, possible

prosecution

slide-14
SLIDE 14
  • Citation

cite all sources of information

web sites, study group members, books README for programming projects end of writeup for written assignments

http://www.ugrad.cs.ubc.ca/~cs314/Vmay2005/policies.html#plag

slide-15
SLIDE 15
  • What is Computer Graphics?

create or manipulate images with computer

this course: algorithms for image generation

slide-16
SLIDE 16
  • What is CG used for?

graphical user interfaces

modeling systems applications

simulation & visualization

slide-17
SLIDE 17
  • What is CG used for?

movies

animation special effects

slide-18
SLIDE 18
  • What is CG used for?

computer games

slide-19
SLIDE 19
  • What is CG used for?

images

design advertising art

slide-20
SLIDE 20
  • What is CG used for?

virtual reality / immersive displays

slide-21
SLIDE 21
  • Real or CG?

http://www.alias.com/eng/etc/fakeorfoto/quiz.html

1 1

slide-22
SLIDE 22
  • Real or CG?

2 2

slide-23
SLIDE 23
  • Real or CG?

3 3

slide-24
SLIDE 24
  • Real or CG?

4 4

slide-25
SLIDE 25
  • This Course

we cover

basic algorithms for

rendering – displaying models (modeling – generating models) (animation – generating motion)

programming in OpenGL, C++

we do not cover

art/design issues commercial software packages

slide-26
SLIDE 26
  • Other Graphics Courses

CPSC 424: Geometric Modeling CPSC 426: Computer Animation CPSC 514: Image-based Modeling and

Rendering

CPSC 526: Computer Animation CPSC 533A: Digital Geometry CPSC 533B: Animation Physics CPSC 533C: Information Visualization

slide-27
SLIDE 27
  • Rendering

creating images from models

geometric objects

lines, polygons, curves, curved surfaces

camera

pinhole camera, lens systems, orthogonal

shading

light interacting with material

Pixar Shutterbug series

Williams and Siegel using Renderman, 1990

www.siggraph.org/education/ materials/HyperGraph/shutbug.htm

slide-28
SLIDE 28
  • Modelling Transformation: Object Placement
slide-29
SLIDE 29
  • Viewing Transformation: Camera Placement
slide-30
SLIDE 30
  • Perspective Projection
slide-31
SLIDE 31
  • Depth Cueing
slide-32
SLIDE 32
  • Depth Clipping
slide-33
SLIDE 33
  • Colored Wireframes
slide-34
SLIDE 34
  • Hidden Line Removal
slide-35
SLIDE 35
  • Hidden Surface Removal
slide-36
SLIDE 36
  • Per-Polygon Shading
slide-37
SLIDE 37
  • Gouraud Shading
slide-38
SLIDE 38
  • Specular Reflection
slide-39
SLIDE 39
  • Phong Shading
slide-40
SLIDE 40
  • Curved Surfaces
slide-41
SLIDE 41
  • Complex Lighting and Shading
slide-42
SLIDE 42
  • Texture Mapping
slide-43
SLIDE 43
  • Displacement Mapping
slide-44
SLIDE 44
  • Reflection Mapping
slide-45
SLIDE 45
  • Modelling

generating models

lines, curves, polygons, smooth surfaces digital geometry

slide-46
SLIDE 46
  • Animation

generating motion

interpolating between frames, states

slide-47
SLIDE 47
  • Math Review
slide-48
SLIDE 48
  • Reading

FCG Chapter 2: Miscellaneous Math

except for 2.11 (covered later) skim 2.2 (sets and maps), 2.3 (quadratic eqns) important: 2.3 (trig), 2.4 (vectors), 2.5-6 (lines)

2.10 (linear interpolation)

skip 2.5.1, 2.5.3, 2.7.1, 2.7.3, 2.8, 2.9

FCG Chapter 4.1-4.25: Linear Algebra

skim 4.1 (determinants) important: 4.2.1-4.2.2, 4.2.5 (matrices)

skip 4.2.3-4, 4.2.6-7 (matrix numerical analysis)

slide-49
SLIDE 49
  • Textbook Errata

list at http://www.cs.utah.edu/~shirley/fcg/errata

p 29, 32, 39 have potential to confuse

slide-50
SLIDE 50
  • Notation: Scalars, Vectors, Matrices

scalar

(lower case, italic)

vector

(lower case, bold)

matrix

(upper case, bold)

a

[ ]

n

a a a ...

2 1

= a

  • =

33 32 31 23 22 21 13 12 11

a a a a a a a a a A

slide-51
SLIDE 51
  • Vectors

arrow: length and direction

  • riented segment in nD space
  • ffset / displacement

location if given origin

slide-52
SLIDE 52
  • Column vs. Row Vectors

row vectors column vectors switch back and forth with transpose

  • =

n col

a a a ...

2 1

a

row T col

a a =

[ ]

n row

a a a ...

2 1

= a

slide-53
SLIDE 53
  • Vector-Vector Addition

add: vector + vector = vector parallelogram rule

tail to head, complete the triangle

  • +

+ + = +

3 3 2 2 1 1

v u v u v u v u ) , 6 , 5 ( ) 1 , 1 , 3 ( ) 1 , 5 , 2 ( ) 6 , 9 ( ) 4 , 6 ( ) 2 , 3 ( = − + = + v u + u v

geometric algebraic examples:

slide-54
SLIDE 54
  • Vector-Vector Subtraction

subtract: vector - vector = vector

− − = −

3 3 2 2 1 1

v u v u v u v u (3,2) − (6,4) = (−3,−2) (2,5,1) − (3,1,−1) = (−1,4,0) = − v u u v v − ) ( v u − +

slide-55
SLIDE 55
  • Vector-Vector Subtraction

subtract: vector - vector = vector

− − = −

3 3 2 2 1 1

v u v u v u v u (3,2) − (6,4) = (−3,−2) (2,5,1) − (3,1,−1) = (−1,4,0) = − v u u v v − ) ( v u − + v u + v u u v − v u

argument reversal

slide-56
SLIDE 56
  • Scalar-Vector Multiplication

multiply: scalar * vector = vector

vector is scaled

) * , * , * ( *

3 2 1

u a u a u a a = u ) 5 ,. 5 . 2 , 1 ( ) 1 , 5 , 2 ( * 5 . ) 4 , 6 ( ) 2 , 3 ( * 2 = = u * a u

slide-57
SLIDE 57
  • Vector-Vector Multiplication

multiply: vector * vector = scalar dot product, aka inner product

v u •

( ) ( ) ( )

3 3 2 1 1 1 3 2 1 3 2 1

v u v u v u v v v u u u ∗ + ∗ + ∗ =

slide-58
SLIDE 58
  • Vector-Vector Multiplication

multiply: vector * vector = scalar dot product, aka inner product

( ) ( ) ( )

3 3 2 1 1 1 3 2 1 3 2 1

v u v u v u v v v u u u ∗ + ∗ + ∗ =

  • v

u •

θ cos v u v u =

  • u

v

θ

geometric interpretation

lengths, angles can find angle between two

vectors

slide-59
SLIDE 59
  • Dot Product Geometry

can find length of projection of u onto v as lines become perpendicular,

θ cos v u v u =

  • u

v

θ

θ cos u

  • v

u v v u u

  • =

θ cos

slide-60
SLIDE 60
  • Dot Product Example

19 6 7 6 ) 3 * 2 ( ) 7 * 1 ( ) 1 * 6 ( 3 7 1 2 1 6 = + + = + + =

  • (

) ( ) ( )

3 3 2 1 1 1 3 2 1 3 2 1

v u v u v u v v v u u u ∗ + ∗ + ∗ =

slide-61
SLIDE 61
  • Vector-Vector Multiplication, The Sequel

multiply: vector * vector = vector cross product

algebraic geometric

  • parallelogram

area

  • perpendicular

to parallelogram

− − =

  • ×
  • 1

2 2 1 3 1 1 3 2 3 3 2 3 2 1 3 2 1

v u v u v u v u v u v u v v v u u u

a b φ a × b

b a× b a×

θ sin v u b a = ×

slide-62
SLIDE 62
  • RHS vs LHS Coordinate Systems

right-handed coordinate system left-handed coordinate system

x y z x y z

right hand rule: index finger x, second finger y; right thumb points up left hand rule: index finger x, second finger y; left thumb points down

y x z × = y x z × =

convention

slide-63
SLIDE 63
  • Basis Vectors

take any two vectors that are linearly

independent (nonzero and nonparallel)

can use linear combination of these to define

any other vector:

b a c

2 1

w w + =

2a 0.5b c = 2a + 0.5b a c b

slide-64
SLIDE 64
  • Orthonormal Basis Vectors

if basis vectors are orthonormal (orthogonal

(mutually perpendicular) and unit length)

we have Cartesian coordinate system familiar Pythagorean definition of distance

2x 0.5y c = 2 x + . 5 y x y

, 1 =

  • =

= y x y x

  • rthonormal algebraic properties
slide-65
SLIDE 65
  • Basis Vectors and Origins

j i

  • p

y x + + =

  • p

i j

coordinate system: just basis vectors

can only specify offset: vectors

coordinate frame: basis vectors and origin

can specify location as well as offset: points

slide-66
SLIDE 66
  • Working with Frames

p

F F1

1

F F1

1

i j

  • j

i

  • p

y x + + =

slide-67
SLIDE 67
  • Working with Frames

p

F F1

1

F F1

1

p = (3, p = (3,-

  • 1)

1)

i j

  • j

i

  • p

y x + + =

slide-68
SLIDE 68
  • Working with Frames

p

F F1

1

F F1

1

p = (3, p = (3,-

  • 1)

1) F F2

2

i j

  • j

i

  • p

y x + + =

F F2

2

i j

slide-69
SLIDE 69
  • Working with Frames

p

F F1

1

F F1

1

p = (3, p = (3,-

  • 1)

1) F F2

2

p = ( p = (-

  • 1.5,2)

1.5,2)

i j

  • j

i

  • p

y x + + =

F F2

2

i j

slide-70
SLIDE 70
  • Working with Frames

p

F F1

1

F F1

1

p = (3, p = (3,-

  • 1)

1) F F2

2

p = ( p = (-

  • 1.5,2)

1.5,2) F F3

3

i j

F F2

2

i j

  • F

F3

3

i j

  • j

i

  • p

y x + + =

slide-71
SLIDE 71
  • Working with Frames

p

F F1

1

F F1

1

p = (3, p = (3,-

  • 1)

1) F F2

2

p = ( p = (-

  • 1.5,2)

1.5,2) F F3

3

p = (1,2) p = (1,2)

i j

F F2

2

i j

  • F

F3

3

i j

  • j

i

  • p

y x + + =

slide-72
SLIDE 72
  • Named Coordinate Frames
  • rigin and basis vectors

pick canonical frame of reference

then don’t have to store origin, basis vectors just convention: Cartesian orthonormal one on

previous slide

handy to specify others as needed

airplane nose, looking over your shoulder, ... really common ones given names in CG

  • bject, world, camera, screen, ...

) , , ( c b a = p z y x

  • p

c b a + + + =

slide-73
SLIDE 73
  • Lines

slope-intercept form

y = mx + b

implicit form

y – mx – b = 0 Ax + By + C = 0 f(x,y) = 0

x y f ( x , y ) = f(x,y) = y - mx - b m = -b/a y=b x=a

slide-74
SLIDE 74
  • Implicit Functions

find where function is 0

plug in (x,y), check if

0: on line < 0: inside > 0: outside

analogy: terrain

sea level: f=0 altitude: function value topo map: equal-value

contours (level sets)

y x f f(x,y)=0 x y f(x,y)=0

slide-75
SLIDE 75
  • Implicit Circles
  • circle is points (x,y) where f(x,y) = 0
  • points p on circle have property that vector

from c to p dotted with itself has value r2

  • points points p on the circle have property

that squared distance from c to p is r2

  • points p on circle are those a distance r from

center point c

2 2 2

) ( ) ( ) , ( r y y x x y x f

c c

− − + − =

) ( ) ( : ) , ( ), , (

2 =

− −

= = r y x c y x p

c c

c p c p

2 2

= − − r c p = − − r c p

slide-76
SLIDE 76
  • Parametric Curves

parameter: index that changes continuously

(x,y): point on curve t: parameter

vector form

  • =
  • )

( ) ( t h t g y x ) (t f = p

slide-77
SLIDE 77
  • 2D Parametric Lines
  • start at point p0,

go towards p1, according to parameter t

p(0) = p0, p(1) = p1

x y

  • = x0 + t(x1 − x0)

y0 + t(y1 − y0)

  • )

( ) (

1

p p p p − + = t t

p(0.0) p0 p1 p1-p0 p(1.0) p(0.25) p(0.5) p(1.5) p(-0.5) p(-1.0)

) ( ) ( d

  • p

t t + =

slide-78
SLIDE 78
  • Linear Interpolation

parametric line is example of general concept

  • interpolation

p goes through a at t = 0 p goes through b at t = 1

linear

weights t, (1-t) are linear polynomials in t

) ( ) (

1

p p p p − + = t t

slide-79
SLIDE 79
  • Matrix-Matrix Addition

add: matrix + matrix = matrix example

  • +

+ + + =

  • +
  • 22

22 21 21 12 12 11 11 22 21 12 11 22 21 12 11

m n m n m n m n n n n n m m m m

=

  • +

+ + − + =

+

  • 5

9 8 1 1 4 7 2 5 3 ) 2 ( 1 1 7 5 2 4 2 3 1

slide-80
SLIDE 80
  • Scalar-Matrix Multiplication

multiply: scalar * matrix = matrix example

  • =
  • 22

21 12 11 22 21 12 11

* * * * m a m a m a m a m m m m a

  • =
  • =
  • 15

3 12 6 5 * 3 1 * 3 4 * 3 2 * 3 5 1 4 2 3

slide-81
SLIDE 81
  • Matrix-Matrix Multiplication

row by column

  • =
  • 22

21 12 11 22 21 12 11 22 21 12 11

p p p p n n n n m m m m

21 12 11 11 11

n m n m p + =

slide-82
SLIDE 82
  • Matrix-Matrix Multiplication

row by column

  • =
  • 22

21 12 11 22 21 12 11 22 21 12 11

p p p p n n n n m m m m

21 12 11 11 11

n m n m p + =

21 22 11 21 21

n m n m p + =

slide-83
SLIDE 83
  • Matrix-Matrix Multiplication

row by column

  • =
  • 22

21 12 11 22 21 12 11 22 21 12 11

p p p p n n n n m m m m

21 12 11 11 11

n m n m p + =

22 12 12 11 12

n m n m p + =

21 22 11 21 21

n m n m p + =

slide-84
SLIDE 84
  • Matrix-Matrix Multiplication

row by column

  • =
  • 22

21 12 11 22 21 12 11 22 21 12 11

p p p p n n n n m m m m

21 12 11 11 11

n m n m p + =

22 12 12 11 12

n m n m p + =

21 22 11 21 21

n m n m p + =

22 22 12 21 22

n m n m p + =

slide-85
SLIDE 85
  • Matrix-Matrix Multiplication

row by column noncommutative: AB != BA

  • =
  • 22

21 12 11 22 21 12 11 22 21 12 11

p p p p n n n n m m m m

21 12 11 11 11

n m n m p + =

22 12 12 11 12

n m n m p + =

21 22 11 21 21

n m n m p + =

22 22 12 21 22

n m n m p + =

slide-86
SLIDE 86
  • Matrix Multiplication

can only multiply if

number of left rows = number of right cols

legal undefined

  • m

l k j i h g f e c b a

  • k

j i h q g p f

  • e

c b a

slide-87
SLIDE 87
  • Matrix-Vector Multiplication

points as column vectors: postmultiply points as row vectors: premultiply

  • =
  • h

z y x m m m m m m m m m m m m m m m m h z y x

44 43 42 41 34 33 32 31 24 23 22 21 14 13 12 11

' ' ' '

Mp p'=

[ ] [ ]

T

m m m m m m m m m m m m m m m m h z y x h z y x

  • =

44 43 42 41 34 33 32 31 24 23 22 21 14 13 12 11

' ' ' '

T T T

M p p' =

slide-88
SLIDE 88
  • Matrices

transpose identity inverse

not all matrices are invertible

  • =
  • 44

34 24 14 43 33 23 13 42 32 22 12 41 31 21 11 44 43 42 41 34 33 32 31 24 23 22 21 14 13 12 11

m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m

T

  • 1

1 1 1

I AA =

−1

slide-89
SLIDE 89
  • Matrices and Linear Systems

linear system of n equations, n unknowns matrix form Ax=b

1 2 5 1 3 4 2 4 2 7 3 = + + − = − − = + + z y x z y x z y x

− =

− 1 1 4 1 2 5 3 4 2 2 7 3 z y x

slide-90
SLIDE 90
  • Rendering Pipeline
slide-91
SLIDE 91
  • Reading

RB Chap. Introduction to OpenGL RB Chap. State Management and Drawing

Geometric Objects

RB Appendix Basics of GLUT

(Basics of Aux in v 1.1)

slide-92
SLIDE 92
  • Rendering

goal

transform computer models into images may or may not be photo-realistic

interactive rendering

fast, but limited quality roughly follows a fixed patterns of operations

rendering pipeline

  • ffline rendering

ray-tracing global illumination

slide-93
SLIDE 93
  • Rendering

tasks that need to be performed

(in no particular order):

project all 3D geometry onto the image plane

geometric transformations

determine which primitives or parts of primitives are

visible

hidden surface removal

determine which pixels a geometric primitive covers

scan conversion

compute the color of every visible surface point

lighting, shading, texture mapping

slide-94
SLIDE 94
  • Rendering Pipeline

what is the pipeline?

abstract model for sequence of operations to

transform geometric model into digital image

abstraction of the way graphics hardware works underlying model for application programming

interfaces (APIs) that allow programming of graphics hardware

OpenGL Direct 3D

actual implementation details of rendering pipeline

will vary

slide-95
SLIDE 95
  • Rendering Pipeline

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting Perspective Transform. Perspective Perspective Transform. Transform. Clipping Clipping Clipping Scan Conversion Scan Scan Conversion Conversion Depth Test Depth Depth Test Test Texturing Texturing Texturing Blending Blending Blending Frame- buffer Frame Frame-

  • buffer

buffer

slide-96
SLIDE 96
  • Geometry Database

geometry database

application-specific data structure for

holding geometric information

depends on specific needs of application

triangle soup, points, mesh with connectivity

information, curved surface

Geometry Database Geometry Geometry Database Database

slide-97
SLIDE 97
  • Model/View Transformation

modeling transformation

map all geometric objects from local coordinate

system into world coordinates

viewing transformation

map all geometry from world coordinates into

camera coordinates

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform.

slide-98
SLIDE 98
  • Lighting

lighting

compute brightness based on property of

material and light position(s)

computation is performed per-vertex

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting

slide-99
SLIDE 99
  • Perspective Transformation

perspective transformation

projecting the geometry onto the image plane projective transformations and model/view

transformations can all be expressed with 4x4 matrix operations

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting Perspective Transform. Perspective Perspective Transform. Transform.

slide-100
SLIDE 100
  • Clipping

clipping

removal of parts of the geometry that fall

  • utside the visible screen or window region

may require re-tessellation of geometry

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting Perspective Transform. Perspective Perspective Transform. Transform. Clipping Clipping Clipping

slide-101
SLIDE 101
  • Texture Mapping

texture mapping

“gluing images onto geometry” color of every fragment is altered by

looking up a new color value from an image

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting Perspective Transform. Perspective Perspective Transform. Transform. Clipping Clipping Clipping Scan Conversion Scan Scan Conversion Conversion Texturing Texturing Texturing

slide-102
SLIDE 102
  • Depth Test

Geometry Database Geometry Geometry Database Database Model/View Transform. Model/View Model/View Transform. Transform. Lighting Lighting Lighting Perspective Transform. Perspective Perspective Transform. Transform. Clipping Clipping Clipping Scan Conversion Scan Scan Conversion Conversion Depth Test Depth Depth Test Test Texturing Texturing Texturing

depth test

remove parts of geometry hidden behind

  • ther geometric objects

perform on every individual fragment

  • ther approaches (later)
slide-103
SLIDE 103
  • Pipeline Advantages

modularity: logical separation of different components easy to parallelize

earlier stages can already work on new data while later

stages still work with previous data

similar to pipelining in modern CPUs but much more aggressive parallelization possible

(special purpose hardware!)

important for hardware implementations

  • nly local knowledge of the scene is necessary
slide-104
SLIDE 104
  • Pipeline Disadvantages

limited flexibility some algorithms would require different

  • rdering of pipeline stages

hard to achieve while still preserving

compatibility

  • nly local knowledge of scene is available

shadows global illumination

slide-105
SLIDE 105
  • OpenGL (briefly)
slide-106
SLIDE 106
  • OpenGL

started in 1989 by Kurt Akeley

based on IRIS_GL by SGI

API to graphics hardware designed to exploit hardware optimized for

display and manipulation of 3D graphics

implemented on many different platforms low level, powerful flexible pipeline processing

set state as needed

slide-107
SLIDE 107
  • Graphics State

set the state once, remains until overwritten

glColor3f(1.0, 1.0, 0.0) set color to yellow glSetClearColor(0.0, 0.0, 0.2) dark blue bg glEnable(LIGHT0) turn on light glEnable(GL_DEPTH_TEST) hidden surf.

slide-108
SLIDE 108
  • Geometry Pipeline
  • tell it how to interpret geometry
  • glBegin(<mode of geometric primitives>)
  • mode = GL_TRIANGLE, GL_POLYGON, etc.
  • feed it vertices
  • glVertex3f(-1.0, 0.0, -1.0)
  • glVertex3f(1.0, 0.0, -1.0)
  • glVertex3f(0.0, 1.0, -1.0)
  • tell it you’re done
  • glEnd()
slide-109
SLIDE 109
  • Open GL: Geometric Primitives

glPointSize glPointSize( float size); ( float size); glLineWidth glLineWidth( float width); ( float width); glColor3f( float r, float g, float b); glColor3f( float r, float g, float b); .... ....

slide-110
SLIDE 110
  • Code Sample

void display() { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 1.0, 0.0); glBegin(GL_POLYGON); glVertex3f(0.25, 0.25, -0.5); glVertex3f(0.75, 0.25, -0.5); glVertex3f(0.75, 0.75, -0.5); glVertex3f(0.25, 0.75, -0.5); glEnd(); glFlush(); }

more OpenGL as course continues

slide-111
SLIDE 111
  • GLUT
slide-112
SLIDE 112
  • GLUT: OpenGL Utility Toolkit

developed by Mark Kilgard (also from SGI) simple, portable window manager

  • pening windows

handling graphics contexts

handling input with callbacks

keyboard, mouse, window reshape events

timing

idle processing, idle events

designed for small-medium size applications distributed as binaries

free, but not open source

slide-113
SLIDE 113
  • GLUT Draw World

int int main(int main(int argc argc, char ** , char **argv argv) ) { { glutInit glutInit( & ( &argc argc, , argv argv ); ); glutInitDisplayMode glutInitDisplayMode( GLUT_RGB | ( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize glutInitWindowSize( 640, 480 ); ( 640, 480 ); glutCreateWindow glutCreateWindow( " ( "openGLDemo

  • penGLDemo" );

" ); glutDisplayFunc glutDisplayFunc( ( DrawWorld DrawWorld ); ); glutIdleFunc(Idle glutIdleFunc(Idle); ); glClearColor glClearColor( 1,1,1 ); ( 1,1,1 ); glutMainLoop glutMainLoop(); (); return 0; // never reached return 0; // never reached } }

slide-114
SLIDE 114
  • Event-Driven Programming

main loop not under your control

  • vs. procedural

control flow through event callbacks

redraw the window now key was pressed mouse moved

callback functions called from main loop

when events occur

mouse/keyboard state setting vs. redrawing

slide-115
SLIDE 115
  • GLUT Callback Functions

// you supply these kind of functions // you supply these kind of functions void void reshape(int reshape(int w, w, int int h); h); void keyboard(unsigned char key, void keyboard(unsigned char key, int int x, x, int int y); y); void void mouse(int mouse(int but, but, int int state, state, int int x, x, int int y); y); void idle(); void idle(); void display(); void display(); // register them with glut // register them with glut glutReshapeFunc(reshape glutReshapeFunc(reshape); ); glutKeyboardFunc(keyboard glutKeyboardFunc(keyboard); ); glutMouseFunc(mouse glutMouseFunc(mouse); ); glutIdleFunc(idle glutIdleFunc(idle); ); glutDisplayFunc(display glutDisplayFunc(display); );

void void glutDisplayFunc glutDisplayFunc (void (void (* (*func)(void func)(void)); )); void void glutKeyboardFunc glutKeyboardFunc (void (void (* (*func)(unsigned func)(unsigned char char key, key, int int x, x, int int y)); y)); void void glutIdleFunc glutIdleFunc (void (void (* (*func func)()); )()); void void glutReshapeFunc glutReshapeFunc (void (void (* (*func)(int func)(int width, width, int int height)); height));

slide-116
SLIDE 116
  • Display Function

void DrawWorld() { glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glClear( GL_COLOR_BUFFER_BIT ); angle += 0.05; //animation glRotatef(angle,0,0,1); //animation ... // redraw triangle in new position glutSwapBuffers(); }

directly update value of angle variable

so, why doesn't it spin?

  • nly called in response to window/input event!
slide-117
SLIDE 117
  • Idle Function

void Idle() { angle += 0.05; glutPostRedisplay(); }

called from main loop when no user input should return control to main loop quickly

update value of angle variable here then request redraw event from GLUT

draw function will be called next time through

continues to rotate even when no user action

slide-118
SLIDE 118
  • Keyboard/Mouse Callbacks

do minimal work request redraw for display example: keypress triggering animation

do not create loop in input callback!

what if user hits another key during animation?

shared/global variables to keep track of state display function acts on current variable value

slide-119
SLIDE 119
  • Labs
slide-120
SLIDE 120
  • Thursday Lab

labs start Thursday

11-12: morning not ideal, it’s before lecture 3-4,4-5: better, try to attend afternoon if possible

project 0

make sure you can compile OpenGL/GLUT

useful to test home computing environment

template: spin around obj files todo: change rotation axis do not hand in, not graded

  • http://www.ugrad.cs.ubc.ca/~cs314/Vmay2005/a0

project 1

transformations more on Thursday after transformations lecture

slide-121
SLIDE 121
  • Remote Graphics

OpenGL does not work well remotely

very slow

  • nly one user can use graphics at a time

current X server doesn’t give priority to console, just

does first come first served

problem: FCFS policy = confusion/chaos

solution: console user gets priority

  • nly use graphics remotely if nobody else logged on

with ‘who’ command, “:0” is console person

stop using graphics if asked by console user via email

  • r console user can reboot machine out from under you