CS 551 / 645: Introductory Computer Graphics Framebuffer Mathematical Foundations The Rendering Pipeline 7/27/2016 Organization Class List ITC accounts Class web page is up Assignment 1 goes out on Thursday Read OGLPG Chapter 1 for Thursday 7/27/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. 7/27/2016 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 8 1280 x 1024 x 8 1280 x 1024 x 24 7/27/2016 1-Bit Memory, Monochrome Display (Bitmap Display) 1 bit 2 levels Electron Gun 7/27/2016 3-Bit Color Display 3 red green blue 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 7/27/2016 True Color Display 24 bitplanes, 8 bits per color gun. 8 2 24 = 16,777,216 8 8 Red Green Blue 7/27/2016 Color Map Look-Up Tables Extends the number of colors that can be displayed by a given number of bit-planes. y RED max GREEN 255 BLUE y 7 6 1001 1010 0001 67 100110100001 R Pixel in bit map at x', y' 0 0 x Frame buffer G Pixel displayed at x', y' B 0 x max Look-up table Display 7/27/2016 Pseudo color RED 28 x 24 Color Map LUT GREEN BLUE 255 254 256 colors chosen from a palette of 16,777,216. Each entry in the color map LUT can be user defined. 3 2 1 0 7/27/2016 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 7/27/2016 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 7/27/2016 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 7/27/2016 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) 7/27/2016 Slope-intercept Line Equation Slope = m = rise / run Slope = (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 y P = (x, y) P2 = (x2, y2) P1 = (x1, y1) x 7/27/2016 Parametric Line Equation Given points P1 = (x1, y1) and P2 = (x2, y2) x = x1 + t(x2 - x1) y = y1 + t(y2 - y1) When: y – 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) P2 = (x2, y2) P1 = (x1, y1) x 7/27/2016 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 7/27/2016 3D Geometry To model, animate, and render 3D scenes, we must specify: – Location – Displacement from arbitrary locations – Orientation 7/27/2016 Vector Spaces Two types of elements: – Scalars (real numbers): a, b, g, d, … – 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: a(u + v) = a(u) + a(v) (a + b)u = au + bu 7/27/2016 Vector Spaces A linear combination of vectors results in a new vector: v = a1v1 + a2v2 + … + anvn If the only set of scalars such that a1v1 + a2v2 + … + anvn = 0 is a1 = a2 = … = a3 = 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 7/27/2016 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+v y v u x 7/27/2016 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 7/27/2016 Vectors And Points We commonly use vectors to represent: – Points in space (i.e., location) – Displacements from point to point – Direction (i.e., orientation) 7/27/2016 Points Points support these operations – Point-point subtraction: Result is a vector pointing from P to Q – Vector-point addition: Q-P=v P+v=Q Q Result is a new point – Note that the addition of two points is not defined v P 7/27/2016 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 v θ u 7/27/2016 Cross Product The cross product or vector product of two vectors is a vector: y1 z 2 y 2 z1 v1 v 2 ( x1 z 2 x 2 z1) x1 y 2 x 2 y1 The cross product of two vectors is orthogonal to both Right-hand rule dictates direction of cross product 7/27/2016 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 7/27/2016 Matrices By convention, matrix element Mrc is located at row r and column c: M11 M12 M21 M22 M Mm1 Mm2 M1n M2n Mmn By (OpenGL) convention, vectors are columns: v1 v v 2 v 3 7/27/2016 Matrices Matrix-vector multiplication applies a linear transformation to a vector: M11 M12 M13 vx M v M 21 M 22 M 23 vy M31 M32 M33 vz Recall how to do matrix multiplication 7/27/2016 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: M 1 Mv v 7/27/2016 The Rendering Pipeline: A Whirlwind Tour Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 The Display You Know Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 The Framebuffer You Know Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 The Rendering Pipeline Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 2-D Rendering: Rasterization (Coming Soon) Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 The Rendering Pipeline: 3-D Transform Illuminate Transform Clip Project Rasterize Model & Camera Parameters Rendering Pipeline Framebuffer Display 7/27/2016 The Rendering Pipeline: 3-D Scene graph Object geometry Result: Modeling Transforms • All vertices of scene in shared 3-D “world” coordinate system Lighting Calculations • Vertices shaded according to lighting model Viewing Transform • Scene vertices in 3-D “view” or “camera” coordinate system Clipping Projection Transform • Exactly those vertices & portions of polygons in view frustum • 2-D screen coordinates of clipped vertices 7/27/2016 The Rendering Pipeline: 3-D Scene graph Object geometry Result: Modeling Transforms • All vertices of scene in shared 3-D “world” coordinate system Lighting Calculations • Vertices shaded according to lighting model Viewing Transform • Scene vertices in 3-D “view” or “camera” coordinate system Clipping Projection Transform • Exactly those vertices & portions of polygons in view frustum • 2-D screen coordinates of clipped vertices 7/27/2016 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 7/27/2016 Rendering: Transformations Modeling transforms – Size, place, scale, and rotate objects and parts of the model w.r.t. each other – Object coordinates world coordinates Y Y X Z X Z 7/27/2016 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 7/27/2016 Rendering: Transformations Projection transform – Apply perspective foreshortening Distant = small: the pinhole camera model – View coordinates screen coordinates 7/27/2016 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 X cos q q Y sin sin q X q cos Y Multiply matrices = concatenate transforms! 7/27/2016 The Rendering Pipeline: 3-D Scene graph Object geometry Result: Modeling Transforms • All vertices of scene in shared 3-D “world” coordinate system Lighting Calculations • Vertices shaded according to lighting model Viewing Transform • Scene vertices in 3-D “view” or “camera” coordinate system Clipping Projection Transform • Exactly those vertices & portions of polygons in view frustum • 2-D screen coordinates of clipped vertices 7/27/2016 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 7/27/2016 The Rendering Pipeline: 3-D Scene graph Object geometry Result: Modeling Transforms • All vertices of scene in shared 3-D “world” coordinate system Lighting Calculations • Vertices shaded according to lighting model Viewing Transform • Scene vertices in 3-D “view” or “camera” coordinate system Clipping Projection Transform • Exactly those vertices & portions of polygons in view frustum • 2-D screen coordinates of clipped vertices 7/27/2016 Rendering: Clipping Clipping a 3-D primitive returns its intersection with the view frustum: See Foley & van Dam section 19.1 7/27/2016 Rendering: Clipping Clipping is tricky! Clip In: 3 vertices Out: 6 vertices Clip In: 1 polygon Out: 2 polygons 7/27/2016 The End Next: Basic OpenGL 7/27/2016