310 likes | 603 Views
Lecture 6 Rasterisation, Antialiasing, Texture Mapping, . Computer Graphics. Some Tutorial about the Project. I have already covered all the topics needed to finish the 1 st practical Today, I will briefly explain how to start working on it.
E N D
Lecture 6 Rasterisation, Antialiasing, Texture Mapping, Computer Graphics
Some Tutorial about the Project • I have already covered all the topics needed to finish the 1st practical • Today, I will briefly explain how to start working on it. • I have already provided you a program to import an obj file.
Steps • Apply transformations to all vertices • Prepare the frame buffer and Z-buffer • For each triangle • Project it to the screen space • Find the 2D bounding box • For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel • If (depth < zbuf[pixel]) { • framebuffer[pixel] = colour • zbuf[pixel] = depth • } • Export the frame buffer data into a PPM file • Apply transformations to all vertices • Prepare the frame buffer and Z-buffer • For each triangle • Project it to the screen space • Find the 2D bounding box • For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel • If (depth < zbuf[pixel]) { • framebuffer[pixel] = colour • zbuf[pixel] = depth • }
For each pixel in the bounding box • Check if it is inside the triangle by computing its barycentric coordinates • If yes, use barycentric coordinates to compute the depth and colour at the pixel z = αz1 + β z2 + γ z3 c = αc1 + β c2 + γ c3 • If (z < zbuf[pixel]) { framebuffer[pixel] = colour zbuf[pixel] = c }
Computing the baricentric coordinates of the interior pixels (α,β,γ) : barycentric coordinates Only if 0<α,β,γ<1, (x,y) is inside the triangle Depth can be computed by αZ0 + βZ1 +γZ2 Can do the same thing for color, normals, textures • The triangle is composed of 3 points p0 (x0,y0), p1 (x1, y1), p2(x2,y2)
Today • Anti-aliasing • Texture mapping • Common texture coordinates mapping • Texture coordinates
Rasterisation • Converts the vertex information output by the geometry pipeline into pixel information needed by the video display • Anti-aliasing • Z-buffer • Texture mapping • Bump mapping • Transparent objects • Drawing lines
Anti-aliasing • Aliasing: distortion artifacts produced when representing a high-resolution signal at a lower resolution. • Anti-aliasing : techniques to remove aliasing Aliased polygons (jagged edges) Anti-aliased polygons
Nyquist Limit • The signal frequency (fsignal) should be no greater than half the sample frequency (fsample) • fsignal <= 0.5 fsample • In the top, fsignal = 0.8 fsample -> cannot reconstruct the original signal • In the bottom fsignal =0.5 fsample -> the original signal can be reconstructed by slightly increasing the sampling rate
Screen-based Anti-aliasing • Each pixel is subdivided (sub-sampled) into n regions, and each sub-pixel has a color; • Compute the average color value
Accumulation Buffer (A-Buffer) • Use a buffer that has the same resolution as the original image • To obtain a 2x2 sampling of a scene, 4 images are made by shifting the buffer horizontally/vertically for half a pixel • The results are accumulated and the final results are obtained by averaging • Various sampling schemes are available Pixel center Subsampled point
Accumulation Buffer (A-Buffer) • The lighting computation is usually done only once per vertex • Not doing the lighting computation at each sample point • The A-buffer’s focus is on the edge anti-aliasing • Also useful for rendering transparent objects, motion blur (will be covered later in the course) Edges
Stochastic Sampling • A scene can be produced of objects that are arbitrarily small • A regular pattern of sampling will always exhibit some sort of aliasing • One approach to solve this is to randomly sample over the pixel • Jittering : subdivide into n regions of equal size and randomly sample inside each region
The oversampling rate is 1 and 2 from left to right
Today • Anti-aliasing • Texture mapping • Common texture coordinates mapping • Texture coordinates
Texture Mapping : Why needed? • We don't want to represent all this detail with geometry
Texture mapping. • Method of improving surface appearance by adding details on surface.
y v v u u x Texture mapping. • Image is ‘pasted’ onto a polygon. • Image is called a Texture map, it’s pixels are often referred as a Texels and have coordinates (u,v) • Texture coordinates aredefined for each vertex of the polygon and interpolated across the polygon.
(0,1) (0,0) (1,0) Texture Interpolation • Specify a texture coordinate (u,v) at each vertex • Can we just linearly interpolate the values in screen space?
Interpolating the uv coordinates Again, we use baricentric coordinates u= α u1 + β u2 + γ u3 v = α v1 + β v2 + γ v3 u1 v1 u3 v3 u2 v2
Interpolation - What Goes Wrong? • Linear interpolation in screen space: texture source what we get| what we want
Why does it happen? • Uniform steps on the image plane does not correspond to uniform steps along the edge
How do we deal with it? • Use hyperbolic interpolation • (u,v) cannot be linearly interpolated, but 1/w and (u/w, v/w) can • w is the last component after the canonical view transformation
Texture Mapping Examples • Linear interpolation vs. Hyperbolic interpolation • Two triangles per square
Computing the uv coordinates at the internal points • For three points of the triangle, get • Compute at the internal points of the triangle by interpolation • Compute wiby inverting 1/wi, and multiply them to (ui /wi, ,vi /wi) to compute (ui,vi)
Common Texture Coordinate Mappings • Orthogonal • Cylindrical • Spherical
Diffuse Texture Color Texture Mapping & Illumination • Texture mapping can be used to alter some or all of the constants in the illumination equation: • pixel color, diffuse color …. Phong’s Illumination Model Constant Diffuse Color Texture used as Label Texture used as Diffuse Color
Readings • Chapter 5.1-2 of Real-Time Rendering Second edition • http://books.google.co.uk/books?id=mOKEfBTw4x0C&printsec=frontcover&source=gbs_v2_summary_r&cad=0#v=onepage&q=&f=false • “Hyperbolic Interpolation” IEEE Computer Graphics and Applications, vol12, no.4, 89-94, 1992 • Demoed Software http://www-ui.is.s.u-tokyo.ac.jp/~takeo/java/smoothteddy/index.html