360 likes | 555 Views
CS 551/651: Advanced Computer Graphics. Antialiasing Continued: Prefiltering and Supersampling. Recap: Antialiasing Strategies. Prefiltering: low-pass filter the signal before sampling Pros: Guaranteed to eliminate aliasing Preserves all desired frequencies Cons: Expensive
E N D
CS 551/651: Advanced Computer Graphics Antialiasing Continued: Prefiltering and Supersampling David Luebke 16/6/2014
Recap: Antialiasing Strategies • Prefiltering: low-pass filter the signal before sampling • Pros: • Guaranteed to eliminate aliasing • Preserves all desired frequencies • Cons: • Expensive • Can introduce “ringing” • Doesn’t fit most rendering algorithms David Luebke 26/6/2014
Recap:Antialiasing Strategies • Supersampling: sample at higher resolution, then filter down • Pros: • Conceptually simple • Easy to retrofit existing renderers • Works well most of the time • Cons: • High storage costs • Doesn’t eliminate aliasing, just shifts Nyquist limit upwards David Luebke 36/6/2014
Recap:Antialiasing Strategies • A-Buffer: approximate prefiltering of continuous signal by sampling • Pros: • Integrating with scan-line renderer keeps storage costs low • Can be efficiently implemented with clever bitwise operations • Cons: • Still basically a supersampling approach • Doesn’t integrate with ray-tracing David Luebke 46/6/2014
Stochastic Sampling • Sampling theory tells us that with a regular sampling grid, frequencies higher than the Nyquist limit will alias • Q: What about irregular sampling? • A: High frequencies appear as noise, not aliases • This turns out to bother our visual system less! David Luebke 56/6/2014
Stochastic Sampling • An intuitive argument: • In stochastic sampling, every region of the image has a finite probability of being sampled • Thus small features that fall between uniform sample points tend to be detected by non-uniform samples David Luebke 66/6/2014
Stochastic Sampling • Integrating with different renderers: • Ray tracing: • It is just as easy to fire a ray one direction as another • Z-buffer: hard, but possible • Notable example: REYES system (?) • Using image jittering is easier (more later) • A-buffer: nope • Totally built around square pixel filter and primitive-to-sample coherence David Luebke 76/6/2014
Stochastic Sampling • Idea: randomizing distribution of samples scatters aliases into noise • Problem: what type of random distribution to adopt? • Reason: type of randomness used affects spectral characteristics of noise into which high frequencies are converted David Luebke 86/6/2014
Stochastic Sampling • Problem: given a pixel, how to distribute points (samples) within it? David Luebke 96/6/2014
Stochastic Sampling • Poisson distribution: • Completely random • Add points at random until area is full. • Uniform distribution: some neighboring samples close together, some distant David Luebke 106/6/2014
Stochastic Sampling • Poisson disc distribution: • Poisson distribution, with minimum-distance constraint between samples • Add points at random, removing again if they are too close to any previous points • Very even-looking distribution David Luebke 116/6/2014
Stochastic Sampling • Jittered distribution • Start with regular grid of samples • Perturb each sample slightly in a random direction • More “clumpy” or granular in appearance David Luebke 126/6/2014
Stochastic Sampling • Spectral characteristics of these distributions: • Poisson: completely uniform (white noise). High and low frequencies equally present • Poisson disc: Pulse at origin (DC component of image), surrounded by empty ring (no low frequencies), surrounded by white noise • Jitter: Approximates Poisson disc spectrum, but with a smaller empty disc. David Luebke 136/6/2014
Stochastic Sampling • Watt & Watt, p. 134 • See Foley & van Dam, p 644-645 David Luebke 146/6/2014
Nonuniform Supersampling • We’ve discussed two nonuniform sampling approaches • Adaptive supersampling: • Sample (say) once per pixel, then supersample if intensity changes a lot • Stochastic supersampling: • Use multiple samples per pixel, but not on a uniform grid • Can we filter nonuniform supersampled images? David Luebke 156/6/2014
Nonuniform Supersampling • Recall: convolution I’ of filter h with image function I is given by: I’(x,y)= I(i, j) h(x-i, y-j) • Can we use this equation for nonuniform sampling? • Implicit in this equation is a normalizing factor: we assume the filter weights sum to unity David Luebke 166/6/2014
Nonuniform Supersampling Pixel David Luebke 176/6/2014
Nonuniform Supersampling Sampling Grid David Luebke 186/6/2014
Nonuniform Supersampling Polygon David Luebke 196/6/2014
Nonuniform Supersampling Adaptive Sampling David Luebke 206/6/2014
Problem: Many more purple samples than white samples But final pixel actually more white than purple! Simple filtering will not handle this correctly Nonuniform Supersampling Final Samples David Luebke 216/6/2014
Nonuniform Supersampling • Approximate answer: weighted average filter • Divide total value of samples X filter by total value of filter at sample points: I(i, j) h(x-i, y-j) I’(x,y)= h(x-i, y-j) David Luebke 226/6/2014
Nonuniform Supersampling • Correct answer: multistage filtering • Use weighted-average filters in cascade, sequentially applying filters with lower and lower cutoff frequencies David Luebke 236/6/2014
Nonuniform Supersampling • Real-world answer: ignore the problem • Keep random components small compared to filter width • Use standard supersampling filter • Cook ‘87 (REYES) uses 4x4 jittered supersampling David Luebke 246/6/2014
Antialiasing and Texture Mapping • We may want to apply antialiasing techniques to the texture mapping process separately from the rest of the rendering process • Why? David Luebke 256/6/2014
Antialiasing and Texture Mapping • Texture mapping is uniquely harder • Coherent textures present pathological artifacts • Correct filter shape changes • Texture mapping is uniquely easier • Textures are known ahead of time • They can thus be prefiltered David Luebke 266/6/2014
Antialiasing and Texture Mapping • More on texture problems • Coherent texture frequencies become infinitely high with increasing distance • Ex: checkerboard receding to horizon • Unfiltered textures lead to compression • Ex: pixel covers entire checkerboard • Unfiltered mapping: pixel is black or white • Moving checkerboard flashing pixels David Luebke 276/6/2014
Antialiasing and Texture Mapping • Problem: a square pixel on screen becomes a curvilinear quadrilateral in texture map (see W&W, p 140) • The coverage and area of this shape change as a function of the mapping • Most texture antialiasing algorithms approximate this shape somehow David Luebke 286/6/2014
Recap: Antialiasing and Texture Mapping • Mip-mapping • MIP = Multim in Parvo (many things in a small place) • Ignores shape change of inverse pixel • But allows size to vary • Idea: store texture as a pyramid of progressively lower-resolution images, filtered down from original David Luebke 296/6/2014
Antialiasing: Mip-Mapping Depth of Mip-Map David Luebke 306/6/2014
Antialiasing: Mip Mapping R G R G B R G B R G B B David Luebke 316/6/2014
Antialiasing: Mip Mapping • Distant textures use higher levels of the mipmap • Thus, the texture map is prefiltered • Thus, reduced aliasing! David Luebke 326/6/2014
Antialiasing: Mip Mapping • Which level of mip-map to use? • Think of mip-map as 3-D pyramid • Index into mip-map with 3 coordinates: u, v, d (depth) • Q: What does d correspond to in the mip-map? • A: size of the filter David Luebke 336/6/2014
Antialiasing: Mip Mapping • The size of the filter (i.e., d in the mip-map) depends on the pixel coverage area in the texture map • In general, treat d as a continuous value • Blend between nearest mip-map level using linear interpolation • Q: What is tri-linear interpolation? David Luebke 346/6/2014
Antialiasing: Mip Mapping • Q: What’s wrong with the mip-map approach to prefiltering texture? • A: Assumes pixel maps to square in texture space • More sophisticated inverse pixel filters (see F&vD p 828): • Summed area tables • Elliptical weighted average filtering David Luebke 356/6/2014
The End David Luebke 366/6/2014