26
CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Acknowledgements: Daniele Panozzo Rasterization

Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State UniversityAcknowledgements: Daniele Panozzo

Rasterization

Page 2: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Recap: Viewing Transformationobject space

model camera projection viewport

canonicalview volumeworld space

camera space screen space

Page 3: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

• Construct Viewport Matrix

• Construct Projection Matrix

• Construct Camera Matrix

• For each model

• Construct Model Matrix

• For every point p in each primitive of the model

• Rasterize the model

Recap: Viewing Transformation

Page 4: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Page 5: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

2D Canvas

(0, 0)

(width-1, height-1)

pixel gridcanvas(-1.0, -1.0)

(1.0, 1.0)

Page 6: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

2D Canvas

(0, 0)

(width-1, height-1)

pixel gridcanvas(-1.0, -1.0)

(1.0, 1.0)

Page 7: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Implicit Geometry Representation• Define a curve as zero set of 2D implicit function

• F(x,y) = 0 → on curve

• F(x,y) < 0 → inside curve

• F(x,y) > 0 → outside curve

• Example: Circle with center (cx, cy) and radius r

Page 8: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Implicit Geometry Representation• Define a curve as zero set of 2D implicit function

• F(x,y) = 0 → on curve

• F(x,y) < 0 → inside curve

• F(x,y) > 0 → outside curve

By Ag2gaeh - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=45004240

Page 9: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Implicit Rasterization

for all pixels (i,j)

(x,y) = map_to_canvas (i,j)

if F(x,y) < 0

set_pixel (i,j, color)

Page 10: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Implicit Geometry Representation

• Example: Triangle

Image Copyright: Andrea Tagliasacchi

Page 11: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1

ab

c

p

Page 12: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1

• Unique for non-collinear a,b,ca

b

c

p

Page 13: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1

• Unique for non-collinear a,b,c

• Ratio of triangle areas

ab

c

p

Page 14: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1• Unique for non-collinear a,b,c• Ratio of triangle areas

• α(p), β(p), γ(p) are linear functions

a

b

c a

b

c a

b

c

1

1

1

Page 15: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

γ <0

β<0 α<0

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1• Unique for non-collinear a,b,c• Ratio of triangle areas

• α(p), β(p), γ(p) are linear functions• Gives inside/outside information

ab

c

α,β,γ > 0

Page 16: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Barycentric Interpolation• Barycentric coordinates:

• p = αa + βb + γc with α + β + γ = 1• Unique for non-collinear a,b,c• Ratio of triangle areas

• α(p), β(p), γ(p) are linear functions• Gives inside/outside information• Use barycentric coordinates to interpolate vertex normals (or other data, e.g. colors)

AB

C

P

Page 17: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Color Interpolation

http://www.cgchannel.com/2010/11/cg-science-for-artists-part-2-the-real-time-rendering-pipeline/

AB

C

P

Per-vertex Per-pixel

Evaluate color on vertices,then interpolates it

Interpolates positions and normals, then evaluate color on each pixel

Page 18: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Triangle Rasterization• Each triangle is represented as three 2D points (x0, y0), (x1, y1), (x2, y2)

• Rasterization using barycentric coordinates

x = α · x0 + β · x1 + γ · x2

y = α · y0 + β · y1 + γ · y2

α + β + γ = 1

γ < 0 β < 0

α < 0(x2, y2)

(x1, y1)

(x0, y0)

(x, y)

Page 19: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

• Each triangle is represented as three 2D points (x0, y0), (x1, y1), (x2, y2)

• Rasterization using barycentric coordinates

Triangle Rasterization

for all y dofor all x do

compute (α,β,γ) for (x,y)

if (α ∈ [0,1] and β∈ [0,1] and γ ∈ [0,1]

set_pixel (x,y)

Page 20: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Clipping

• Ok if you do it brute force

• Care is required if you are explicitly tracing the boundaries

Page 21: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Objects Depth Sorting• To handle occlusion, you

can sort all the objects in a scene by depth

• This is not always possible!

Page 22: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

z-buffering

Image Depth (z)

• You render the image both in the Image and in the depth buffer, where you store only the depth

• When a new fragment comes in, you draw it in the image only if it is closer

• This always work and it is cheap to evaluate! It is the default in all graphics hardware

• You still have to sort for transparency…

Page 23: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

z-buffer quantization and “z-fighting”• The z-buffer is quantized (the

number of bits is heavily dependent on the hardware platform)

• Two close object might be quantized differently, leading to strange artifacts, usually called “z-fighting”

Page 24: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

• Render nxn pixels instead of one

• Assign the average to the pixel

Super Sampling Anti-Aliasing

Image Copyright: Fritz Kessler

Page 25: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

Many different names and variants

• SSAA (FSAA)

• MSAA

• CSAA

• EQAA

• FXAA

• TX AACopyright: tested.com (http://www.tested.com/tech/pcs/1194-how-to-choose-the-right-anti-aliasing-mode-for-your-gpu/#)

MSAA

Page 26: Rasterization - GitHub Pages · 2020. 7. 3. · Rasterization. CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University Recap: Viewing Transformation object

CAP 5726 - Computer Graphics - Fall 18 – Xifeng Gao Florida State University

References

Fundamentals of Computer Graphics, Fourth Edition 4th Edition by Steve Marschner, Peter Shirley

Chapter 8