1 / 27

CS 551 / 645: Introductory Computer Graphics

CS 551 / 645: Introductory Computer Graphics. David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551. Administrivia. Next semester: Intro Graphics again Look for Brogan’s animation seminar. Recap: Texture Mapping.

wolfe
Download Presentation

CS 551 / 645: Introductory Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 551 / 645: Introductory Computer Graphics David Luebke cs551@cs.virginia.edu http://www.cs.virginia.edu/~cs551 David Luebke 8/20/2014

  2. Administrivia • Next semester: Intro Graphics again • Look for Brogan’s animation seminar David Luebke 8/20/2014

  3. Recap: Texture Mapping • Problem: it is impractical to explicitly model fine surface detail with geometry • Solution: use images to capture the “texture” of surfaces David Luebke 8/20/2014

  4. Recap: Texturing Fundamentals

  5. Recap: Texture Coordinates • Give each vertex of the triangle a texture coordinate(u, v) • For other points on the triangle, interpolate texture coordinate from the vertices • Problem: interpolating u & v in screen-space (a la Gouraud shading) is incorrect • Instead, interpolate uw, vw, and w, and calculate uw/w and vw/w for each pixel • Known as perspective-correcttexture mapping David Luebke 8/20/2014

  6. Recap: Texture Map Aliasing • Naïve texturing looks blocky and pixelated • Problem: using only one texel to color each pixel • Actually, each pixel maps to a region in texture • Pixel is smaller than a texel, we should interpolate between texel values somehow • Pixel is larger than a texel, we should average the contribution from multiple texels somehow • Even if pixel size  texel size, a pixel will in general fall between four texels • An example of a general problem called aliasing David Luebke 8/20/2014

  7. Texture Map Antialiasing • Use bilinear interpolation to average nearby texel values into a single pixel value • Find 4 nearest texels • Round u & v up and down • Interpolate texel values in u •  = u - u • A = (1-)T4 + T1, B = (1-)T3 + T2 • Interpolate resulting values in v •  = v - v • P = (1- )A + B • Also addresses the problem of many pixels projecting to a single texel (oversampling) T1 T2 A P B T4 T3 David Luebke 8/20/2014

  8. Texture Map Antialiasing • What about undersampling, when a single pixel covers many texels? • Problem: sampling those texels at a single point • Produces Moire patterns in coherent texture (checkers) • Leads to flicker or texture crawling as the texture moves • Approach: blur the image under the pixel, averaging the contributions of the covered texels • But calculating which texels each pixel covers is expensive, especially as the texture is very compressed • Solution: pre-calculate lower-resolution versions of the texture that incorporate this averaging David Luebke 8/20/2014

  9. Original Texture Lower Resolution Versions MIP-maps • For a texture of 2n x 2n pixels, compute n-1 textures, each at ½ the resolution of previous: • This multiresolution texture is called a MIP-map David Luebke 8/20/2014

  10. Generating MIP-maps • Generating a MIP-map from a texture is easy • For each texel in level i, average the values of the four corresponding texels in level i-1 • If a texture requires n bytes of storage, how much storage will a MIP-map require? • Answer: 4n/3 David Luebke 8/20/2014

  11. R G R G B R G B R G B B Representing MIP-maps Trivia: MIP = Multim In Parvo(many things in a small place) David Luebke 8/20/2014

  12. Using MIP-maps • Each level of the MIP-map represents a pre-blurred version of multiple texels • A texel at level n represents 2n original texels • When rendering: • Figure out the texture coverage of the pixel (i.e., the size of the pixel in texels of the original map) • Find the level of the MIP map in which texels average approximately that many original texels • Interpolate the value of the four nearest texels David Luebke 8/20/2014

  13. Using MIP-maps • Even better: • Likely, the coverage of the pixel will fall somewhere between the coverage of texels in two adjacent levels of the MIP map • Find the pixel’s value in each of the two textures using two bilinear interpolations • Using a third interpolation, find a value in between these two values, based on the coverage of the pixel versus each of the MIP-map levels • This is (misleadingly?) called trilinear interpolation David Luebke 8/20/2014

  14. Using MIP-maps • How many interpolations does a texture lookup using trilinear interpolation in a MIP-mapped texture involve? • How many texel values from the MIP-map must be fetched for such a lookup? David Luebke 8/20/2014

  15. MIP-map Example • No filtering: • MIP-map texturing: David Luebke 8/20/2014

  16. Can We Do Better? • What assumption does MIP-mapping implicitly make? • A: The pixel covers a square region of the texture • More exactly, the compression or oversampling rate is the same in uandv • Is this a valid assumption? Why or why not? David Luebke 8/20/2014

  17. MIP-maps and Signal Processing • An aside: aliasing and antialiasing are properly topics in sampling theory • Nyquist theorem, convolution and reconstruction, filters and filter widths • Textures are particularly difficult because a tiled texture can easily generate infinite frequencies • E.g., a checkered plane receding to an infinite horizon • Using a MIP-map amounts to prefiltering the texture image to reduce artifacts caused by sampling at too low a rate David Luebke 8/20/2014

  18. Summed-Area Tables • A technique called summed-area tableslets us integrate texels covered by the pixel more exactly (but still quickly) • Details in the book • Example: MIP-map texturing Summed-area table texturing David Luebke 8/20/2014

  19. Texture Mapping Variations • A texture can modulate any parameter in the rendering process: Texture asdiffuse lightingcoefficients: Texture asR,G,B: David Luebke 8/20/2014

  20. Bump Mapping • The texture map can even modulate the surface normal used for shading Sphere w/ diffuse textureand swirly bump map Sphere w/ diffuse texture Swirly bump map David Luebke 8/20/2014

  21. More Bump Mapping • How can you tell a bumped-mapped object from an object in which the geometry is explicitly modeled? + =

  22. Last Bump Mapping Example David Luebke 8/20/2014

  23. Displacement Map • A displacement map actually displaces the geometry • Treats the texture as a height field to be applied to the surface • Hard to do in interactive graphics pipeline • But doable in ray tracing David Luebke 8/20/2014

  24. Displacement Map Example • What is the fundamental difference between displacement mapping and bump mapping? David Luebke 8/20/2014

  25. Illumination Maps • Quake uses illumination mapsor light maps to capture lighting effects: Texture map: Light map Texture map+ light map: David Luebke 8/20/2014

  26. Illumination Maps • Illumination maps differ from texture maps in that they: • Usually apply to only a single surface • Are usually fairly low resolution • Usually capture just intensity (1 value) rather than color (3 values) • Illumination maps can be: • Painted by hand: Disney’s Aladdin ride • Calculated by a global illumination process: Nintendo64 demo • Origin of the idea David Luebke 8/20/2014

  27. Other Texture Applications • Lots of other interesting applications of the texture-map concept: • Shadow maps • 3-D textures (marble, wood, clouds) • Chrome maps • Procedural textures • For a neat explanation of the first two (with cool applets, as usual) check out: http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture22/Slide21.html David Luebke 8/20/2014

More Related