David Luebke 1 03/27/22 CS 551/651: Advanced Computer Graphics Antialiasing Continued: Prefiltering and Supersampling
Dec 26, 2015
David Luebke 1 04/19/23
CS 551/651: Advanced Computer Graphics
Antialiasing Continued:
Prefiltering and Supersampling
David Luebke 2 04/19/23
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 3 04/19/23
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 4 04/19/23
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 5 04/19/23
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 6 04/19/23
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 7 04/19/23
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 8 04/19/23
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 9 04/19/23
Stochastic Sampling
Problem: given a pixel, how to distribute points (samples) within it?
David Luebke 10 04/19/23
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 11 04/19/23
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 12 04/19/23
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 13 04/19/23
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 15 04/19/23
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 16 04/19/23
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 21 04/19/23
Nonuniform Supersampling
Final Samples
Problem: Many more purple samples
than white samples But final pixel actually more
white than purple! Simple filtering will not handle
this correctly
David Luebke 22 04/19/23
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) h(x-i, y-j)I’(x,y) =
David Luebke 23 04/19/23
Nonuniform Supersampling
Correct answer: multistage filtering Use weighted-average filters in cascade,
sequentially applying filters with lower and lower cutoff frequencies
David Luebke 24 04/19/23
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 25 04/19/23
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 26 04/19/23
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 27 04/19/23
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 28 04/19/23
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 29 04/19/23
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 32 04/19/23
Antialiasing: Mip Mapping
Distant textures use higher levels of the mipmap
Thus, the texture map is prefiltered Thus, reduced aliasing!
David Luebke 33 04/19/23
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 34 04/19/23
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 35 04/19/23
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