Lecture 003

Rasterization Pipeline

Rasterization Pipeline

Rasterization Pipeline

Why use triangle:

Two Questions:

  1. Coverage: what pixel on screen does a triangle cover
  2. Occlusion: if we have multiple triangles cover the same pixel, which one is closest to the camera

Visibility Problem: Virtual Sensor needs to figure out the colors of pixels to draw. Notice the Virtual Sensor is mirrored with x-axis for convenience.

Visibility Problem: Virtual Sensor needs to figure out the colors of pixels to draw. Notice the Virtual Sensor is mirrored with x-axis for convenience.

Different situation a pixel can be covered by triangles. Getting analytical answer is too difficult.

Different situation a pixel can be covered by triangles. Getting analytical answer is too difficult.

Sampling

Sampling the Original Signal

Sampling the Original Signal

Sampling Coverage

Sample Coverage Function: for all triangle, we sample its coverage function

Sample Coverage Function: for all triangle, we sample its coverage function

Coverage Sampling Result

Coverage Sampling Result

Breaking Ties

Ties can appear through sampling

Ties can appear through sampling

Tie Breaking Implementation: OpenGL, Direct3D implementation

Tie Breaking Implementation: OpenGL, Direct3D implementation

Reconstruction

Constant Reconstruction of Original Signal

Constant Reconstruction of Original Signal

Piecewise Linear Reconstruction of Original Signal

Piecewise Linear Reconstruction of Original Signal

Reconstruction in 2D

Reconstruction in 2D

Sampling and Reconstruction

Sampling and Reconstruction

Aliasing: When the frequency is higher than sampling rate, then reconstructed frequency can only be as high as sampling rate. (High frequencies in the original signal masquerade as low frequencies after reconstruction due to undersampling)

Aliasing Visualization

Aliasing Visualization

Image Reconstruction Example

Left: Original Signal; Right: Frequency Spectrum

Left: Original Signal; Right: Frequency Spectrum

Left: Reconstructed Signal; Right: Keep only low frequency

Left: Reconstructed Signal; Right: Keep only low frequency

Left: Reconstructed Signal; Right: Keep only mid frequency

Left: Reconstructed Signal; Right: Keep only mid frequency

Left: Reconstructed Signal; Right: Keep only high frequency

Left: Reconstructed Signal; Right: Keep only high frequency

Graph of klzzwxh:0017. The ring has higher frequency as the radius increase

Graph of z = \sin(x^2 + y^2). The ring has higher frequency as the radius increase

Graph of klzzwxh:0019 when viewed from above, colored z value as brightness. Notice as the frequency increse, sampled frequency does not always increase due to constant sampling rate.

Graph of z = \sin(x^2 + y^2) when viewed from above, colored z value as brightness. Notice as the frequency increse, sampled frequency does not always increase due to constant sampling rate.

Sinc Filter

Nyquist-Shannon Theorem: A band-limited signal (ie. no frequencies above threshold w_0) can be perfectly reconstructed if sampled with period T = \frac{1}{2} w_0 and reconstruct (interpolation) using \text{sinc} = \frac{1}{\pi x}\sin(\pi x) filter.

klzzwxh:0024

\text{sinc} = \frac{1}{\pi x}\sin(\pi x)

There are two problems with \text{sinc} filter

  1. Encode a hard edge (piecewise discontinuity in the triangle edge) needs infinite series of frequencies.
  2. If for each pixel we use a \text{sinc}, then every pixel can affect every other pixel, therefore computational power is to expensive.

Two issues why we can't use klzzwxh:0027

Two issues why we can't use \text{sinc}

Resulting "Jaggies" in static image; "Roping" or "shimmering" in animated images; Moire patterns in high-frequency area of images;

Resulting "Jaggies" in static image; "Roping" or "shimmering" in animated images; Moire patterns in high-frequency area of images;

Supersampling

Supersampling: taking multiple random samples for each pixel

Supersampling: taking multiple random samples for each pixel

Turning supersampling into pixel

Turning supersampling into pixel

But error persists in supersampling

But error persists in supersampling

Analytic solution do exists in rendering checkerboard, but most things are not analytically solvable

Analytic solution do exists in rendering checkerboard, but most things are not analytically solvable

Implementation Details

Coverage: check a point inside triangle by checking its relation to the boundary

Coverage: check a point inside triangle by checking its relation to the boundary

Incremental Traversal

Incremental Traversal

Incremental Traversal: Check pixel near each other

Parallel Traversal:

  1. bound a triangle by a box
  2. check every pixel in the box in parallel

Sticky Situration: parallel traversal will waste a lot of power

Sticky Situration: parallel traversal will waste a lot of power

Coarse to Fine:

  1. divide big box region into smaller boxes
  2. check if the box overlaps with triangle
  3. if overlap some, we subdivide more
  4. if no overlap, all pixels in boxes are turned off
  5. if all overlap, all pixels in boxes are turned on

Recursive Coarse to Fine, but actual trade off depends on hardware (usually 1 coarse to fine level is good)

Recursive Coarse to Fine, but actual trade off depends on hardware (usually 1 coarse to fine level is good)

Note: Coarse to Fine can also be improved with Incremental Traversal since boxes near each other share similar pixel.

Table of Content