Sie sind auf Seite 1von 42

Pre-Filter Antialiasing

Kurt Akeley
CS248 Lecture 4
4 October 2007

http://graphics.stanford.edu/courses/cs248-07/
Review

CS248 Lecture 4 Kurt Akeley, Fall 2007


Aliasing

Aliases are low frequencies in a rendered


image that are due to higher frequencies
in the original image.

CS248 Lecture 4 Kurt Akeley, Fall 2007


Jaggies

Original:

Rendered:

CS248 Lecture 4 Kurt Akeley, Fall 2007


Convolution theorem

Let f and g be the transforms of f and g. Then

f * g = f ×g f * g = f ×g

f ×g = f * g f ×g = f * g

Something difficult to do in one domain


(e.g., convolution) may be easy to do in the
other (e.g., multiplication)

CS248 Lecture 4 Kurt Akeley, Fall 2007


Aliased sampling of a point (or line)

x
*

= =

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Aliased reconstruction of a point (or line)

* x
sinc(x)

= =

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Reconstruction error (actually none!)

Original Signal

Phase matters!

Aliased
Reconstruction
CS248 Lecture 4 Kurt Akeley, Fall 2007
Sampling theory

Fourier theory explains jaggies as aliasing.


For correct reconstruction:
 Signal must be band-limited
 Sampling must be at or above Nyquist rate
 Reconstruction must be done with a sinc function

All of these are difficult or impossible in the general


case. Let’s see why …

CS248 Lecture 4 Kurt Akeley, Fall 2007


Why band-limiting is difficult

Band-limiting primitives prior to rendering compromises image


assembly in the framebuffer
 Band-limiting changes (spreads) geometry
 Finite spectrum  infinite spatial extent
 Interferes with occlusion calculations
 Leaves visible seams between adjacent triangles
Can’t band-limit the final (framebuffer) image
 There is no final image, there are only samples
 If the sampling is aliased, there is no recovery

Nyquist-rate sampling requires band-limiting

CS248 Lecture 4 Kurt Akeley, Fall 2007


Why ideal reconstruction is difficult

In theory:
 Required sinc function has
 Negative lobes (displays can’t produce negative light)
 Infinite extent (cannot be implemented)
In practice:
 Reconstruction is done by a combination of
 Physical display characteristics (CRT, LCD, …)
 The optics of the human eye
 Mathematical reconstruction (as is done, for
example, in high-end audio equipment) is not
practical at video rates.

CS248 Lecture 4 Kurt Akeley, Fall 2007


Two antialiasing approaches are practiced

Pre-filtering (this lecture)


 Band-limit primitives prior to sampling
 OpenGL ‘smooth’ antialiasing

Increased sample rate (future lecture)


 Multisampling, super-sampling
 OpenGL ‘multisample’ antialiasing

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-Filter Antialiasing

CS248 Lecture 4 Kurt Akeley, Fall 2007


Ideal point (or line cross section)

* x
sinc(x)

= =
sinc(x)

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Band-limited unit disk

sinc(x)

* x
sinc(x)

= =
¥ ¥

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Almost-band-limited unit disk

sinc(x)

* x
sinc2(x)

= =
sinc3(x)

Finite extent!

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Equivalences

These are equivalent:


 Low-pass filtering
 Band-limiting
 (Ideal) reconstruction
These are equivalent:
 Point sampling of band-limited geometry
 Weighted area sampling (FvD 3.17.3) of full-spectrum
geometry

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filter pros and cons

Pros
 Almost eliminates aliasing due to undersampling
 Allows pre-computation of expensive filters
 Great image quality (with important caveats!)
Cons
 Can’t handle interactions of primitives with area
 Reconstruction is still a problem

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filtering in the vertex pipeline
Application
struct {
float x,y,z,w; Vertex assembly
float r,g,b,a;
} vertex; Vertex operations
struct {
vertex v0,v1,v2 Primitive assembly
} triangle;
Primitive operations Point sampling of pre-
struct {
filtered primitives sets
short int x,y;
fragment alpha value
float depth; Rasterization
float r,g,b,a;
} fragment;
Fragment operations
struct { Fragments are
int depth; Framebuffer blended into the
byte r,g,b,a; frame buffer
} pixel; Display

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filter point rasterization

point being sampled

at the center of this


pixel

alpha

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filter line rasterization

line being sampled

at the center of this


pixel

alpha

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filtered primitive stored in table

Supports pre-computation
Simplifies distance calculation (square root in table)
Can compensate for reconstruction errors
 Sampling and reconstruction go hand-in-hand

Point size
3
Xscreen frac bits
4 32K x 8 Fragment
Yscreen frac bits 8 Alpha
4
Pixel index
4
CS248 Lecture 4 Kurt Akeley, Fall 2007
Line tables get big!

Line width
3
Line slope
5
1M x 8 Fragment
Xscreen frac bits
4 8 Alpha
Yscreen frac bits
4
Pixel index
4

CS248 Lecture 4 Kurt Akeley, Fall 2007


Triangle pre-filtering is difficult

Three arbitrary vertex locations define a huge


parameter space
 Resulting table is too large to implement
Edges can be treated independently
 But this is a poor approximation near vertexes,
where two or three edges affect the filtering
 And triangles can be arbitrarily small

CS248 Lecture 4 Kurt Akeley, Fall 2007


Pre-filtering in the vertex pipeline
Application
struct {
float x,y,z,w; Vertex assembly
float r,g,b,a;
} vertex; Vertex operations
struct {
vertex v0,v1,v2 Primitive assembly
} triangle;
Primitive operations Point sampling of pre-
struct {
filtered primitives sets
short int x,y;
fragment alpha value
float depth; Rasterization
float r,g,b,a;
} fragment;
Fragment operations
struct { Fragments are
int depth; Framebuffer blended into the
byte r,g,b,a; frame buffer
} pixel; Display

CS248 Lecture 4 Kurt Akeley, Fall 2007


Ideal pre-filtered image assembly

Impulse-defined points and lines have no area


So they don’t occlude each other
So fragments should be summed into pixels

C’pixel = Cpixel + Afrag Cfrag

CS248 Lecture 4 Kurt Akeley, Fall 2007


Practical pre-filtered image assembly

Frame buffers have limited numeric range


So summation causes overflow or clamping
‘Uncorrelated’ clamped blend yields good results
 But clamping R, G, and B independently causes color shift

C’pixel = (1-Afrag)Cpixel + Afrag Cfrag


‘Anti-correlated’ clamped blend is an alternative
 Best for rendering pre-filtered triangles
 sorted front-to-back
 But requires frame buffer to store alpha values

CS248 Lecture 4 Kurt Akeley, Fall 2007


Anti-correlated blend function

i = min(Afrag, (1-Apixel))
A’pixel = Apixel + I
C’pixel = Cpixel + i Cfrag

CS248 Lecture 4 Kurt Akeley, Fall 2007


Demo

CS248 Lecture 4 Kurt Akeley, Fall 2007


OpenGL API
glEnable(GL_POINT_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);

glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE); // sum
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // blend
glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE); // saturate

CS248 Lecture 4 Kurt Akeley, Fall 2007


Filtering and Human Perception

CS248 Lecture 4 Kurt Akeley, Fall 2007


Resolution of the human eye
Eye’s resolution is not evenly distributed
 Foveal resolution is ~20x peripheral
 Systems can track direction of view, draw high-
resolution inset
 Flicker sensitivity is higher in periphery
One eye can compensate for the other
 Research at NASA suggests high-resolution
dominant display
Human visual system is well engineered …

CS248 Lecture 4 Kurt Akeley, Fall 2007


Imperfect optics - linespread

Ideal Actual

CS248 Lecture 4 Kurt Akeley, Fall 2007


Linespread function

CS248 Lecture 4 Kurt Akeley, Fall 2007


Filtering

* x

= =

f(x) F(s)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Frequencies are selectively attenuated

* *

= =

f(x) f(x)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Selective attenuation (cont.)

* *

= =

f(x) f(x)
CS248 Lecture 4 Kurt Akeley, Fall 2007
Modulation transfer function (MTF)

CS248 Lecture 4 Kurt Akeley, Fall 2007


Optical “imperfections” improve acuity

Image is pre-filtered
 Cutoff is approximately 60 cpd
 Cutoff is gradual – no ringing
Aliasing is avoided
 Foveal cone density is 120 / degree
 Cutoff matches retinal Nyquist limit
Vernier acuity is improved
 Foveal resolution is 30 arcsec
 Vernier acuity is 5-10 arcsec
 Linespread blur includes more sensors
CS248 Lecture 4 Kurt Akeley, Fall 2007
Summary

Two approaches to antialiasing are practiced


 Pre-filtering (this lecture)
 Increased sample rate
Pre-filter antialiasing
 Works well for non-area primitives (points, lines)
 Works poorly for area primitives (triangles,
especially in 3-D)
The human eye is well adapted
 Sampling theory helps us here too

CS248 Lecture 4 Kurt Akeley, Fall 2007


Assignments

Before Thursday’s class, read


 FvD 3.1 through 3.14, Rasterization
Project 1:
 Continue work
 Demos Wednesday 10 October

CS248 Lecture 4 Kurt Akeley, Fall 2007


End

CS248 Lecture 4 Kurt Akeley, Fall 2007

Das könnte Ihnen auch gefallen