220 likes | 425 Views
Week 7 - Wednesday. CS361. Last time. What did we talk about last time? Transparency Gamma correction Texturing. Questions?. Project 2. Student Lecture: Mipmapping and Anisotropic filtering of Textures. Image Texturing. Image texturing. Usually, texturing is image texturing:
E N D
Week 7 - Wednesday CS361
Last time • What did we talk about last time? • Transparency • Gamma correction • Texturing
Student Lecture: Mipmapping and Anisotropic filtering of Textures
Image texturing • Usually, texturing is image texturing: • Gluing a 2D image onto a polygon • Recall that textures have certain limitations • Usually 2m x 2ntexels • Some old cards require square textures • Most new cards don't have to do powers of 2 • Maximum sizes vary: • 2048 x 2048 might be all your laptop can do • 8192 x 8192 is required by DirectX 10
Resizing • Sometimes a small texture will cover a much larger area on screen • This effect is called magnification • Sometimes a large texture will cover very little area on the screen • This effect is called minification • Different techniques exist to overcome these problems
Magnification • Magnification is often done by filtering the source texture in one of several ways: • Nearest neighbor (the worst) takes the closest texel to the one needed • Bilinear interpolation linearly interpolates between the four neighbors • Bicubic interpolation probably gives the best visual quality at greater computational expense (and is generally not directly supported)
Bilinear interpolation (with apologies) • Perhaps unsurprisingly, the book gives a pretty good explanation of bilinear interpolation on p. 159 • I guess I should direct people there in the future
Blurring issues • Bilinear interpolation tends to blur sharp edges, but you can interpolate non-linearly, remapping bright colors to a bright value and dark to a dark value • Another alternative is detail textures • Overlay higher resolution textures (representing details like scratches) onto a magnified texture
Minification • Minification is just as big of a problem (if not bigger) • Bilinear interpolation can work • But an onscreen pixel might be influenced by many more than just its four neighbors • We want to, if possible, have only a single texel per pixel • Main techniques: • Mipmapping • Summed-area tables • Anisotropic filtering
Mipmapping • Mipmapping is the most popular texture antialiasing solution • Mip = "multum in parvo," meaning "many things in a small place" • The trouble with minification is that a single pixel needs to be colored by lots of texels • The solution: when loading the texture, create many smaller filtered versions of the texture, then use the appropriate one for rendering
Mipmapping in action • Typically a chain of mipmaps is created, each half the size of the previous • That's why cards like square power of 2 textures • Often the filtered version is made with a box filter, but better filters exist • The trick is figuring out which mipmap level to use • The level d can be computed based on the change in u relative to a change in x
Trilinear filtering • One way to improve quality is to interpolate between u and vtexels from the nearest two d levels • Picking d can be affected by a level of detail bias term which may vary for the kind of texture being used
Summed-area table • Sometimes we are magnifying in one axis of the texture and minifying in the other • Summed area tables are another method to reduce the resulting overblurring • It sums up the relevant pixels values in the texture • It works by precomputing all possible rectangles
Anisotropic filtering • Summed area tables work poorly for non-rectangular projections into texture space • Modern hardware uses unconstrained anisotropic filtering • The shorter side of the projected area determines d, the mipmap index • The longer side of the projected area is a line of anisotropy • Multiple samples are taken along this line • Memory requirements are no greater than regular mipmapping
Next time… • XNA examples • Project 2 work day?
Reminders • Keep working on Project 2 • Due Friday by midnight • Keep reading Chapter 6